{
 "features_resolved": {
  "snapshot_any": true,
  "snapshot_mem": true,
  "fork": true,
  "pause_resume": true,
  "persistent_disk": true,
  "whole_disk": true,
  "persist_scope": true,
  "volumes": true,
  "auto_stop_idle": true,
  "long_sessions": true,
  "custom_image": true,
  "image_snapshot": true,
  "image_oci": true,
  "vm_isolation": true,
  "docker_inside": true,
  "nested_virt": false,
  "root": true,
  "systemd": null,
  "browser": true,
  "desktop": false,
  "computer_use": false,
  "code_interpreter": true,
  "browser_control": null,
  "desktop_control": null,
  "browser_and_desktop": false,
  "anti_bot": false,
  "captcha_solving": false,
  "residential_ip": false,
  "agent_harnesses": true,
  "ssh": false,
  "public_ipv4": false,
  "inbound_https": true,
  "custom_domain": null,
  "raw_tcp_inbound": null,
  "egress_allowlist": false,
  "open_internet": true,
  "static_egress_ip": false,
  "private_network": null,
  "self_host": true,
  "byoc": true,
  "open_source": true,
  "soc2": false,
  "hipaa": false,
  "sso": true,
  "gpu": false,
  "arm64": false,
  "windows": false,
  "macos": false,
  "lang_python": true,
  "lang_node": true,
  "lang_go": true,
  "lang_rust": null,
  "lang_java": null,
  "gpu_desktop": null,
  "credential_injection": null,
  "egress_http_rules": false,
  "wake_on_request": true,
  "live_resize": false,
  "fork_running": true,
  "memory_snapshot_fork": true,
  "webhooks": true,
  "scheduled_wakeups": null,
  "audit_logs": null,
  "eu_data_residency": false,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": true,
  "mcp_server": true,
  "usage_api": false,
  "snapshot_auto": true,
  "snapshot_on_demand": true,
  "harness_api": false,
  "own_agent_api": false,
  "fast_boot": null,
  "strong_isolation": true,
  "ingress_rules": false,
  "guest_firewall": true,
  "secret_proxy": false,
  "secret_proxy_any": false,
  "volume_attach": true,
  "volume_shared": true,
  "sidecar": null,
  "fuse": true,
  "kernel_features": true,
  "burst": null
 },
 "company": {
  "id": "pandastack",
  "checked": "2026-09-30",
  "company": "pandastackio Inc.",
  "ownership": {
   "value": "independent",
   "parent": null,
   "source": "https://www.pandastack.ai/about",
   "quote": "PandaStack is operated by pandastackio Inc. We build the PandaStack platform and publish the open-source project under Apache-2.0."
  },
  "stage": {
   "value": "unknown",
   "source": "",
   "quote": "",
   "confidence": "low",
   "note": "No press release, Crunchbase/Tracxn profile, YC page, or investor mention found for pandastackio Inc. The company's own About page discloses only founding date and founder, with no mention of funding; could not confirm bootstrapped vs. a small unannounced round."
  },
  "accelerators": [],
  "total_funding_usd": {
   "value": null,
   "status": "unknown"
  },
  "last_round": {
   "type": null,
   "amount_usd": null,
   "date": null,
   "leads": [],
   "status": "unknown",
   "source": "",
   "quote": ""
  },
  "investors": [],
  "portfolio_listings": [],
  "revenue": {
   "value": null,
   "status": "unknown"
  },
  "employees": {
   "value": null,
   "source": "https://api.github.com/orgs/pandastack-io"
  },
  "note": "pandastackio Inc. was founded 2025-05-13 (per its own About page) by founder/CEO Ajay Kumar. PandaStack publishes its core platform as open source under Apache-2.0 while also operating a hosted/managed product (free + $20 Pro + $99 Team + custom Enterprise plans), i.e. an open-core / open-source-project-plus-hosted-SaaS model rather than a pure nonprofit open-source foundation. No accelerator, investor, funding round, or revenue figure could be found in public sources (no YC page, no Crunchbase/Tracxn data, no TechCrunch/press coverage, no HN Show/Launch post, no LinkedIn funding badge). Given the company's small size and lack of any funding announcement, bootstrapped is plausible but not confirmed, so stage and funding fields are left unknown rather than guessed."
 },
 "id": "pandastack",
 "name": "PandaStack",
 "url": "https://www.pandastack.ai/pricing/",
 "category": "agent-sandbox",
 "isolation": "firecracker",
 "modes": [
  {
   "key": "active-only",
   "label": "Hosted8-vCPU burstable template; active CPU and resident RAM",
   "flags": [],
   "os": [
    "linux"
   ],
   "regions": null,
   "gpu_only": false,
   "features": {
    "isolation": "firecracker"
   },
   "pricing": "resource",
   "vcpu_h": 0.054,
   "ram_gib_h": 0.0162,
   "cpu_basis": "active",
   "ram_basis": "active",
   "active_floor": 0,
   "ram_per_vcpu": [
    null,
    null
   ],
   "ram_fixed_per_vcpu": null,
   "vcpu_options": [
    8
   ],
   "min_vcpu": 8,
   "max_vcpu": 8,
   "max_ram_gib": 64,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": null,
   "granularity_s": 1,
   "start_fee": null,
   "boot_overhead_s": null,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "note": "Engine selects mandatory8 vCPU. CPUutil is fraction of8, not requested4; equal-work scenario needs halving30% to15%. Free CPU sustained quota2, FreeRAM4 cannot satisfy4/8. No self-host or stopped mode auto-ranked."
  }
 ],
 "storage": {
  "included_disk_gib": 2,
  "disk_gib_month": 0.15,
  "disk_billed_when_stopped": true,
  "snapshot_gib_month": 0,
  "paused_ram_billed": true
 },
 "network": {
  "egress_free_gib": null,
  "egress_gib": 0,
  "ipv4_month": null,
  "ipv4_available": null,
  "internet": {
   "default": "full"
  }
 },
 "plans": [
  {
   "name": "Free",
   "fee": 0,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 5.4,
   "per_seat": null,
   "concurrency": 5,
   "max_session_h": 1,
   "max_vcpu": 8,
   "max_ram_gib": 4,
   "sizes_allowed": null,
   "note": "Plan RAM cap 4 GiB; account CPU/RAM pools 40/10 (0 is unlimited/custom API sentinel); paid TTL is idle timeout, not running lifetime. Volume quota 1 GiB; max 1 volumes. Also: 1 org seat, 60 creates/hour, sustained CPU capped at 2 cores (API max_cpu_quota_cores 2), sandbox deleted 1 h after creation (apps/DBs exempt); credit exhaustion pauses the workspace (402 on create), never bills."
  },
  {
   "name": "Pro",
   "fee": 20,
   "flags": [],
   "fee_is_credit": true,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": 50,
   "max_session_h": null,
   "max_vcpu": 8,
   "max_ram_gib": 16,
   "sizes_allowed": null,
   "note": "Plan RAM cap 16 GiB; account CPU/RAM pools 400/800 (0 is unlimited/custom API sentinel); paid TTL is idle timeout, not running lifetime. Volume quota 100 GiB; max 10 volumes."
  },
  {
   "name": "Team",
   "fee": 99,
   "flags": [],
   "fee_is_credit": true,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": 500,
   "max_session_h": null,
   "max_vcpu": 8,
   "max_ram_gib": 64,
   "sizes_allowed": null,
   "note": "Plan RAM cap 64 GiB; account CPU/RAM pools 8000/32000 (0 is unlimited/custom API sentinel); paid TTL is idle timeout, not running lifetime. Volume quota 2500 GiB; max 50 volumes."
  },
  {
   "name": "Enterprise",
   "fee": null,
   "flags": [
    "sales"
   ],
   "fee_is_credit": null,
   "included_usd": null,
   "per_seat": null,
   "concurrency": null,
   "max_session_h": null,
   "max_vcpu": 8,
   "max_ram_gib": 256,
   "sizes_allowed": null,
   "note": "Plan RAM cap 256 GiB; account CPU/RAM pools 0/0 (0 is unlimited/custom API sentinel); paid TTL is idle timeout, not running lifetime. Volume quota 0 GiB; max 0 volumes."
  }
 ],
 "free": {
  "monthly_credit": 0,
  "one_time_credit": null
 },
 "features": {
  "linux": true,
  "windows": false,
  "macos": false,
  "arm64": false,
  "gpu": false,
  "snapshot": "mem",
  "pause_resume": true,
  "fork": true,
  "persistent_disk": true,
  "volumes": true,
  "auto_stop_idle": true,
  "max_session_h": null,
  "custom_image": true,
  "docker_inside": true,
  "nested_virt": false,
  "root": true,
  "systemd": null,
  "browser": true,
  "desktop": false,
  "computer_use": false,
  "code_interpreter": true,
  "agent_harnesses": true,
  "ssh": false,
  "public_ipv4": false,
  "inbound_https": true,
  "custom_domain": null,
  "raw_tcp_inbound": null,
  "egress_allowlist": false,
  "static_egress_ip": false,
  "private_network": null,
  "self_host": true,
  "byoc": true,
  "open_source": true,
  "soc2": false,
  "hipaa": false,
  "sso": true,
  "gpu_types": [],
  "regions": null,
  "lang_python": true,
  "lang_node": true,
  "lang_go": true,
  "lang_rust": null,
  "lang_java": null,
  "gpu_desktop": null,
  "credential_injection": null,
  "egress_http_rules": false,
  "wake_on_request": true,
  "live_resize": false,
  "fork_running": true,
  "memory_snapshot_fork": true,
  "webhooks": true,
  "scheduled_wakeups": null,
  "audit_logs": null,
  "eu_data_residency": false,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": true,
  "mcp_server": true,
  "isolation": "firecracker",
  "image_oci": true,
  "snapshot_auto": true,
  "snapshot_on_demand": true,
  "harness_api": false,
  "ingress_rules": false,
  "guest_firewall": true,
  "secret_proxy": false,
  "volume_attach": true,
  "volume_shared": true,
  "anti_bot": false,
  "captcha_solving": false,
  "egress_ip_type": "datacenter",
  "own_agent_api": false,
  "max_session_unlimited": true,
  "open_internet": true,
  "usage_api": false,
  "persist_scope": "whole"
 },
 "perf": {
  "cpu_runs_s": null,
  "cold_start_ms": null,
  "burst_tti_ms": null,
  "dax_s": null
 },
 "knobs": [],
 "caveats": [
  "Every first-party template is pinned to 8 vCPUs, not selectable 4; RAM is baked per template. Live API lists Team CPU quota 16 and Enterprise 64, but quota does not prove launchable >8 template cores.",
  "Engine bumps 4-vCPU request to mandatory 8 and keeps CPU utilization fraction. Equal absolute CPU work requires adjusting utilization from 30% of 4 to 15% of 8.",
  "Live API Team SAML differs from pricing page Enterprise-only SSO presentation; confirm plan entitlement.",
  "Pricing FAQ says hibernated state storage currently included/free; lifecycle page says hibernated storage costs. Card follows explicit pricing FAQ but treats this as a documented conflict.",
  "Plain pause freezes CPU but retains RAM on the host; RAM billing while merely paused is not clearly specified. Do not equate pause and full hibernation.",
  "Volume pricing says overage beyond quota, but quota docs also describe hard HTTP 429 caps. Confirm how to buy over-quota storage.",
  "Persistent volumes are host-local; readonly multi-attach supported, writable attach exclusive. Cross-host staging is not yet shipped; not an S3-backed globally durable volume.",
  "Annual 17% discount advertised but credit treatment not verified; only monthly plans auto-ranked.",
  "Performance claims are vendor claims, not independent measurements.",
  "Disk (verified 2026-09-28): each template ships a fixed rootfs (base 2 GB, agent 6 GB, claude-agent 8 GB, browser 4 GB; docs/templates/overview) with no separate rootfs charge; included_disk_gib = 2 (base). Extra space comes from persistent volumes: plan quota included (Free 1 GiB, Pro 10 x 10 GiB = 100 GiB, Team 50 x 50 GiB = 2.5 TiB), then $0.15/GiB-month (pricing page, api.pandastack.ai/v1/pricing volume_usd_per_gib_month). The engine charges $0.15 on all disk beyond 2 GiB, so it overstates cost for disk that fits inside the plan's volume quota.",
  "SSH (verified 2026-09-28): 'pandastack sandbox ssh <id>' opens an interactive PTY over WebSocket (docs/sandboxes/terminal); no SSH protocol or SSH keys are documented, so standard ssh/scp/VS Code Remote-SSH clients don't work. ssh = false.",
  "Desktop (verified 2026-09-28): the 8 official templates (base, code-interpreter, agent, claude-agent, browser, 3 postgres) include no desktop/VNC/GUI template; the browser template is headless Chromium. desktop = false (a custom image could add one; unverified).",
  "Hourly create caps per workspace: Free 60, Pro 600, Team 6,000 (Enterprise custom). Each returns HTTP 429 'hourly create limit exceeded'. Forks, restored snapshots and template launches each count as a sandbox. Bursty fan-out beyond 600 creates/h forces Team.",
  "Non-persistent sandboxes are killed at TTL (default 1 h, refreshed by API activity; paid TTL cap Pro 7 d / Team 30 d idle timeout). Only persistent:true sandboxes are hibernated by the 5-min idle sweeper."
 ],
 "sources": [
  "https://www.pandastack.ai/pricing/",
  "https://api.pandastack.ai/v1/pricing",
  "https://docs.pandastack.ai/docs/getting-started/billing/",
  "https://docs.pandastack.ai/docs/templates/overview/",
  "https://docs.pandastack.ai/docs/sandboxes/lifecycle/",
  "https://docs.pandastack.ai/docs/sandboxes/snapshots-and-forks/",
  "https://docs.pandastack.ai/docs/volumes/overview/",
  "https://docs.pandastack.ai/docs/security/isolation-model/",
  "https://docs.pandastack.ai/docs/security/compliance/",
  "https://docs.pandastack.ai/docs/security/egress-controls/",
  "https://docs.pandastack.ai/docs/sandboxes/preview-urls/",
  "https://docs.pandastack.ai/docs/self-host/overview/",
  "https://docs.pandastack.ai/docs/sandboxes/repl/",
  "https://docs.pandastack.ai/docs/sandboxes/terminal/",
  "https://docs.pandastack.ai/docs/faq/limits-and-concurrency/"
 ],
 "fleet": {
  "default_max_instances": 5,
  "default_max_vcpu": 40,
  "default_max_gpus": null,
  "raise": "self-serve",
  "raise_time_days": null,
  "verification": null,
  "tiers": "Free 5, Pro 50, Team 500, Enterprise unlimited/custom. Aggregate CPU/RAM pools additionally apply: Free 40 vCPU/10 GiB, Pro 400/800, Team 8,000/32,000.",
  "notes": "Free quota can be memory-bound well below 5 for larger machines. 10/50 fit Pro, 300 Team, 1,000 Enterprise subject to resources. Hibernation, retained objects and create-rate limits must also be considered.",
  "sources": [
   "https://www.pandastack.ai/pricing/",
   "https://api.pandastack.ai/v1/pricing",
   "https://docs.pandastack.ai/docs/getting-started/billing/"
  ],
  "researched": "2026-09-28"
 },
 "audit_2026_09_29": {
  "applied": 5,
  "source": "checked against the provider's live pricing and docs pages",
  "reviewed": 3
 },
 "feature_evidence": {
  "snapshot_auto": {
   "value": true,
   "source": "https://docs.pandastack.ai/docs/sandboxes/lifecycle/",
   "quote": "Hibernation is automatic for persistent sandboxes. The server-side idle sweeper hibernates any persistent: true sandbox that's been idle for 5 minutes. Wake is implicit on the next API request.",
   "note": "Trigger: 5 min idle, only for sandboxes with persistent:true. Hibernate 'dumps the sandbox's memory + disk to a snapshot' (memory included, running processes survive). Non-persistent sandboxes are killed at TTL (default 1 h), not snapshotted. Apps/DBs also scale to zero on idle.",
   "checked": "2026-09-29"
  },
  "snapshot_on_demand": {
   "value": true,
   "source": "https://docs.pandastack.ai/docs/sandboxes/snapshots-and-forks/",
   "quote": "A snapshot captures a running sandbox's memory and device state, plus its disk, so you can create a new sandbox from it later with from_snapshot.",
   "note": "Memory included; new sandboxes boot from it (from_snapshot), list/get/delete via API/CLI/SDK. Also fork (disk only, cold boot), fork-tree (memory+disk, 1-16 children, parent keeps running) and warm fork (REST only).",
   "checked": "2026-09-29"
  },
  "harness_api": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/sdk/cli/",
   "quote": "run a self-hosted Claude Managed Agents worker",
   "note": "No PandaStack API to prompt/stream/resume an in-sandbox agent. The 'agent' template preinstalls claude, codex, opencode, amp, grok, gemini, copilot CLIs (agent_harnesses) driven via generic exec. 'pandastack cma' is a first-party worker that launches Anthropic's ant runner in claude-agent sandboxes for Claude Managed Agents, but prompts/events go through Anthropic's sessions API, not PandaStack's. Borderline; judged not a PandaStack harness API.",
   "checked": "2026-09-29"
  },
  "egress_allowlist": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/security/egress-controls/",
   "quote": "Beyond these, egress is open: there is no outbound allowlist, and guests can reach arbitrary hosts and ports.",
   "note": "Only fixed platform blocks: VM-to-VM, link-local/metadata, Stratum mining ports (operator-configurable on self-host). The CMA page says 'you decide what the agent can reach' but no hosted control is documented.",
   "checked": "2026-09-29"
  },
  "egress_http_rules": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/security/egress-controls/",
   "quote": "Beyond these, egress is open: there is no outbound allowlist, and guests can reach arbitrary hosts and ports.",
   "note": "No egress policy layer of any kind on hosted; HTTP-level rules therefore absent.",
   "checked": "2026-09-29"
  },
  "ingress_rules": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/faq/networking-and-egress/",
   "quote": "The URL itself is the credential: anyone who has it can reach that port, and there is no separate token to revoke.",
   "note": "Every listening port (up to 32) is automatically public at https://{port}-{sandbox-id}.pandastack.ai; the unguessable UUID is the only protection; no auth/IP allowlist/port selection. Apps get custom domains; DBs need TLS+password.",
   "checked": "2026-09-29"
  },
  "guest_firewall": {
   "value": true,
   "source": null,
   "quote": null,
   "note": "Firecracker microVM with its own kernel and root (sshd + sudo in templates); nftables/iptables inside the guest should work. Not documented.",
   "checked": "2026-09-29",
   "derived": true
  },
  "secret_proxy": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/apps/env-and-secrets/",
   "quote": "Secrets are decrypted only in the deploy worker and written to a 0600 file inside the sandbox that build/runtime source",
   "note": "Secrets (apps) are env vars injected into the VM; 'Secrets are still visible to your own app's process at runtime'. Sandboxes get env vars via exec. No credential-injecting proxy documented.",
   "checked": "2026-09-29"
  },
  "volume_attach": {
   "value": true,
   "source": "https://docs.pandastack.ai/docs/volumes/overview/",
   "quote": "A volume is a named ext4 image that lives on the host independently of any sandbox. Attach it to one or many sandboxes at create-time and mount it inside the guest like any other block device.",
   "note": "ext4 virtio-blk, max 64 GiB each, up to 14 per sandbox, attach at create only; host-local (no cross-host staging yet). Quota Free 1 GiB / Pro 100 GiB / Team 2.5 TiB, then $0.15/GiB-month.",
   "checked": "2026-09-29"
  },
  "volume_shared": {
   "value": true,
   "source": "https://docs.pandastack.ai/docs/volumes/overview/",
   "quote": "Read-only attach is safe across many sandboxes.",
   "note": "Read-only multi-attach only. 'Writable attach is exclusive' (not enforced; multi rw corrupts ext4). Same host only.",
   "checked": "2026-09-29"
  },
  "nested_virt": {
   "value": false,
   "source": "https://raw.githubusercontent.com/pandastack-io/pandastack-ai/main/README.md",
   "quote": "Hosts must run on bare-metal KVM. Firecracker needs /dev/kvm, so agents run on Linux KVM hosts or *.metal cloud instances.",
   "note": "The host, not the guest, needs /dev/kvm to run Firecracker. No PandaStack doc mentions passing /dev/kvm through to the guest sandbox, and Firecracker's minimal virtio device model (isolation-model page: 'no PCI passthrough, no BIOS, no legacy device emulation') is inconsistent with exposing nested KVM to tenants. Derived, not explicitly stated.",
   "checked": "2026-09-30"
  },
  "computer_use": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/templates/overview/",
   "quote": "browser Ubuntu 24.04 + Chromium 8 4 GB 4 GB Headless Chromium + Playwright + crawl4ai. Scraping, RPA, screenshots, LLM-friendly web extraction.",
   "note": "not offered: outside the product's scope. The only browser offering is a headless Chromium automated via Playwright/CDP (browser_control), not a screenshot+click computer-use API; there is no desktop/VNC template.",
   "checked": "2026-09-30"
  },
  "anti_bot": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/templates/overview/",
   "quote": "browser Ubuntu 24.04 + Chromium ... Headless Chromium + Playwright + crawl4ai. Scraping, RPA, screenshots, LLM-friendly web extraction.",
   "note": "not offered: outside the product's scope. PandaStack is a general Firecracker sandbox/app/DB platform; its browser template is plain headless Chromium with no stated stealth/anti-fingerprinting features.",
   "checked": "2026-09-30"
  },
  "captcha_solving": {
   "value": false,
   "source": "https://www.pandastack.ai/pricing/",
   "quote": "Open-source Firecracker microVM platform for AI agents and code execution — sub-second sandboxes, git-driven app hosting, managed Postgres and serverless functions.",
   "note": "not offered: outside the product's scope. No CAPTCHA-solving feature is mentioned anywhere in docs, pricing, or templates.",
   "checked": "2026-09-30"
  },
  "egress_ip_type": {
   "value": "datacenter",
   "source": "https://docs.pandastack.ai/docs/faq/networking-and-egress/",
   "quote": "Each VM's traffic leaves through its own network namespace and is NATed, which makes egress attributable to a specific VM and workspace.",
   "note": "Outbound traffic is NAT'd from the provider's own KVM/bare-metal fleet (standard cloud/datacenter IP space); no residential or mobile IP option is offered.",
   "checked": "2026-09-30"
  },
  "fork_running": {
   "value": true,
   "source": "https://docs.pandastack.ai/docs/sandboxes/snapshots-and-forks/",
   "quote": "POST /v1/sandboxes/{id}/fork-tree snapshots the parent once (pause, capture memory + device state, resume — the parent survives untouched), then creates count children in parallel from that snapshot.",
   "note": "fork-tree (and the default plain fork) only pause the parent momentarily for the snapshot/rootfs copy, then resume it automatically — the parent is never stopped by the user and keeps running/serving throughout, satisfying 'clone a running machine without stopping it.'",
   "checked": "2026-09-30"
  },
  "live_resize": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/troubleshooting/",
   "quote": "Apps run at a fixed 4 GiB / 8 vCPU. Firecracker cannot resize a VM at snapshot restore, so an app's size comes from its template's baked size — setting memory_mb on the app does not change what it actually gets.",
   "note": "RAM is baked into the template snapshot at build time and vCPU count is pinned at 8; there is no API to change CPU/RAM of a running machine without recreating/rebaking it.",
   "checked": "2026-09-30"
  },
  "agent_harnesses": {
   "value": true,
   "source": "https://docs.pandastack.ai/docs/templates/overview/",
   "quote": "agent Ubuntu 24.04 + Node 24 8 2 GB 6 GB Every terminal coding agent with a public CLI, in one image: claude, codex, opencode, amp, grok, gemini, copilot. Pick one via its API key.",
   "note": "A first-party 'agent' template preinstalls multiple coding-agent CLIs (Claude Code, Codex, OpenCode, etc.); there's also a dedicated 'claude-agent' template.",
   "checked": "2026-09-30"
  },
  "own_agent_api": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/agents/claude-managed-agents/",
   "quote": "run a self-hosted Claude Managed Agents worker",
   "note": "not offered: outside the product's scope. PandaStack has no first-party browser/computer-use/research agent product of its own — 'pandastack cma' launches Anthropic's Claude Managed Agents worker inside a sandbox, but prompts/events flow through Anthropic's own API, not a PandaStack agent API.",
   "checked": "2026-09-30"
  },
  "public_ipv4": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/faq/networking-and-egress/",
   "quote": "Why does every sandbox report the same internal IP? By design. Snapshots bake the guest's network identity (IP, MAC, gateway)... Each VM's traffic leaves through its own network namespace and is NATed.",
   "note": "Sandboxes have only an internal/baked network identity behind NAT; external reachability is via HTTPS preview URLs (https://<port>-<id>.pandastack.ai), not a per-machine public IPv4 address.",
   "checked": "2026-09-30"
  },
  "static_egress_ip": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/faq/networking-and-egress/",
   "quote": "Each VM's traffic leaves through its own network namespace and is NATed, which makes egress attributable to a specific VM and workspace.",
   "note": "Egress is NAT'd per-VM for attribution/abuse-control purposes; no product page offers a fixed/dedicated outbound IP add-on.",
   "checked": "2026-09-30"
  },
  "gpu": {
   "value": false,
   "source": "https://www.pandastack.ai/pricing/",
   "quote": "Every sandbox and app gets 8 vCPUs — bursting to all of them on Pro and Team, up to 2 sustained cores on Free. CPU bills by the active seconds you actually burn, memory by resident working set.",
   "note": "not offered: outside the product's scope. Pricing, templates, and rate card only describe vCPU/RAM meters; no GPU instance type, GPU template, or GPU rate exists anywhere in the docs.",
   "checked": "2026-09-30"
  },
  "windows": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/templates/overview/",
   "quote": "PandaStack ships 8 production templates... base Ubuntu 24.04 + mise",
   "note": "not offered: outside the product's scope. All templates are Linux (Ubuntu 24.04); there is no Windows guest option.",
   "checked": "2026-09-30"
  },
  "macos": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/templates/overview/",
   "quote": "PandaStack ships 8 production templates... base Ubuntu 24.04 + mise",
   "note": "not offered: outside the product's scope. Apple Silicon is only mentioned as a local self-hosting dev host (Lima VM); no macOS guest/sandbox product is offered.",
   "checked": "2026-09-30"
  },
  "arm64": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/templates/overview/",
   "quote": "PandaStack ships 8 production templates. All names are stable and accepted by template: in the SDKs and --template in the CLI.",
   "note": "No template or pricing page mentions an ARM/arm64 guest architecture option; Apple Silicon appears only as a host for local self-hosted dev (Lima), not as a guest sandbox architecture offered to hosted customers.",
   "checked": "2026-09-30"
  },
  "eu_data_residency": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/security/compliance/",
   "quote": "Self-hosting. For data-residency or regulatory requirements that a managed service cannot meet, you can run PandaStack on your own infrastructure, in your own cloud account or on-prem, where data never leaves your environment.",
   "note": "The compliance page explicitly frames self-hosting as the answer for data-residency requirements 'that a managed service cannot meet,' implying the hosted managed service itself has no EU-region selection; no regions/EU page exists in the docs sitemap.",
   "checked": "2026-09-30"
  },
  "max_session_h": {
   "value": "none",
   "source": "https://docs.pandastack.ai/docs/faq/limits-and-concurrency/",
   "quote": "Setting persistent: true opts the sandbox out of the TTL entirely... A persistent sandbox is never reaped, but the server-side idle sweeper hibernates it after about 5 minutes of inactivity... and the sandbox wakes implicitly on the next API request.",
   "note": "Non-persistent sandboxes default to a 1h TTL but ttl_seconds is user-adjustable to any value; a persistent:true sandbox is never killed for running long — it is only hibernated when idle (not while actively running) and auto-wakes on request, so there is no hard ceiling on continuous runtime.",
   "checked": "2026-09-30"
  },
  "persistent_disk": {
   "value": true,
   "corrected_from": false,
   "source": "https://docs.pandastack.ai/docs/sandboxes/lifecycle/",
   "quote": "hibernate is the heavier sibling: it dumps the sandbox's memory + disk to a snapshot, then stops the Firecracker process entirely. Host RAM and vCPUs are freed. ... Hibernation is automatic for persistent sandboxes. The server-side idle sweeper hibernates any persistent: true sandbox that's been idle for 5 minutes. Wake is implicit on the next API request.",
   "note": "Contradiction confirmed and resolved in favor of true: a persistent:true sandbox's disk (and memory) is snapshotted on hibernate/pause and fully restored on wake, so files survive the stop. Also independent of sandbox lifecycle, named volumes (docs/volumes/overview/) are durable ext4 block devices attachable across sandboxes. Default behaviour: non-persistent sandboxes are killed (disk discarded) at TTL (default 1h); only persistent:true sandboxes are hibernated (disk+memory preserved) by the 5-min idle sweeper - persistence must be opted into via set_persistent(true).",
   "checked": "2026-09-30"
  },
  "ssh": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/sandboxes/terminal/",
   "quote": "Interactive PTY into a sandbox over WebSocket. ... The terminal endpoint hands you a real Linux PTY inside the sandbox over a WebSocket.",
   "note": "The only interactive shell access ('pandastack sandbox ssh <id>') is a WebSocket PTY, not the SSH protocol. Templates docs (docs/templates/overview/) confirm sshd is bundled purely as 'the host↔guest exec bridge' used internally by the orchestrator/API, not exposed for user SSH clients/keys - no documented way to `ssh`/`scp`/VS Code Remote-SSH into a sandbox with your own key.",
   "checked": "2026-09-30"
  },
  "desktop": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/templates/overview/",
   "quote": "browser Ubuntu 24.04 + Chromium 8 4 GB 4 GB Headless Chromium + Playwright + crawl4ai. Scraping, RPA, screenshots, LLM-friendly web extraction.",
   "note": "Full template catalog (base, code-interpreter/agent, claude-agent, browser, postgres-16 x3) has no desktop/VNC/GUI template; the only browser-related template is explicitly headless Chromium. No streamed desktop/computer-use GUI is documented anywhere on the site.",
   "checked": "2026-09-30"
  },
  "soc2": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/security/compliance/",
   "quote": "We do not currently hold a SOC 2 report, ISO 27001 certification, or HIPAA compliance attestation, and we will not claim them until an independent audit says so.",
   "note": "Official compliance page explicitly disclaims SOC 2.",
   "checked": "2026-09-30"
  },
  "hipaa": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/security/compliance/",
   "quote": "We do not currently hold a SOC 2 report, ISO 27001 certification, or HIPAA compliance attestation, and we will not claim them until an independent audit says so.",
   "note": "Same compliance page explicitly disclaims a HIPAA attestation.",
   "checked": "2026-09-30"
  },
  "docker_inside": {
   "value": true,
   "source": "https://docs.pandastack.ai/docs/migration/from-modal/",
   "quote": "Firecracker microVMs with their own kernel, so anything that runs on Ubuntu runs inside — including Docker-hostile things like mount or database servers.",
   "note": "Each sandbox is a full Firecracker microVM with its own Linux kernel (5.10) and root access (confirmed elsewhere: docs/security/isolation-model/). The migration-from-Modal doc explicitly states 'anything that runs on Ubuntu runs inside' the guest, citing mount and database servers as examples of things that normally can't run in a shared-kernel container — implying a normal Docker daemon (which itself just needs a real kernel + cgroups/overlayfs, not nested KVM) also runs inside. No first-party template preinstalls a Docker daemon (base/agent/code-interpreter Dockerfiles on GitHub only install language runtimes, not docker.io/containerd), but the platform doesn't restrict what a custom-template Dockerfile can install, and running dockerd itself does not require nested virtualization (unlike VMs-inside-VMs, which is separately covered by nested_virt=false).",
   "checked": "2026-09-30"
  },
  "usage_api": {
   "value": false,
   "source": "https://docs.pandastack.ai/docs/getting-started/billing/",
   "quote": "The dashboard's Billing page shows the credit meter and month-to-date usage. Programmatically, GET /v1/pricing returns the current rates and tier catalog.",
   "note": "granularity: account-only; cost: yes; PandaStack bills per second of actual runtime but only exposes usage through the dashboard's Billing page. The programmatic /v1/pricing API returns rate card information only, not usage data. No per-sandbox usage API endpoint is documented.",
   "confidence": "high",
   "checked": "2026-10-01"
  },
  "persist_scope": {
   "value": "whole",
   "source": "https://docs.pandastack.ai/docs/sandboxes/lifecycle/",
   "quote": "hibernate is the heavier sibling: it dumps the sandbox's memory + disk to a snapshot, then stops the Firecracker process entirely. Host RAM and vCPUs are freed. ... Hibernation is automatic for persistent sandboxes. The server-side idle sweeper hibernates any persistent: true sandbox that's been idle for 5 minutes. Wake is implicit on the next API request.",
   "note": "The whole disk survives a stop, installed packages included.",
   "checked": "2026-10-01"
  }
 },
 "locations": [],
 "locations_source": "https://docs.pandastack.ai/docs/security/compliance/ and https://www.pandastack.ai/pricing/",
 "locations_quote": "For data-residency or regulatory requirements that a managed service cannot meet, you can run PandaStack on your own infrastructure, in your own cloud account or on-prem, where data never leaves your environment.",
 "locations_checked": "2026-10-01"
}