{
 "features_resolved": {
  "snapshot_any": true,
  "snapshot_mem": false,
  "fork": true,
  "pause_resume": false,
  "persistent_disk": true,
  "whole_disk": false,
  "persist_scope": true,
  "volumes": true,
  "auto_stop_idle": false,
  "long_sessions": true,
  "custom_image": true,
  "image_snapshot": true,
  "image_oci": true,
  "vm_isolation": false,
  "docker_inside": false,
  "nested_virt": false,
  "root": null,
  "systemd": null,
  "browser": false,
  "desktop": false,
  "computer_use": false,
  "code_interpreter": null,
  "browser_control": null,
  "desktop_control": null,
  "browser_and_desktop": false,
  "anti_bot": false,
  "captcha_solving": false,
  "residential_ip": false,
  "agent_harnesses": false,
  "ssh": false,
  "public_ipv4": false,
  "inbound_https": true,
  "custom_domain": true,
  "raw_tcp_inbound": null,
  "egress_allowlist": true,
  "open_internet": null,
  "static_egress_ip": true,
  "private_network": null,
  "self_host": true,
  "byoc": true,
  "open_source": false,
  "soc2": true,
  "hipaa": true,
  "sso": true,
  "gpu": true,
  "arm64": false,
  "windows": false,
  "macos": false,
  "lang_python": true,
  "lang_node": true,
  "lang_go": null,
  "lang_rust": null,
  "lang_java": null,
  "gpu_desktop": null,
  "credential_injection": null,
  "egress_http_rules": false,
  "wake_on_request": false,
  "live_resize": false,
  "fork_running": true,
  "memory_snapshot_fork": false,
  "webhooks": null,
  "scheduled_wakeups": true,
  "audit_logs": null,
  "eu_data_residency": true,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": null,
  "mcp_server": true,
  "usage_api": false,
  "snapshot_auto": false,
  "snapshot_on_demand": true,
  "harness_api": false,
  "own_agent_api": false,
  "fast_boot": null,
  "strong_isolation": true,
  "ingress_rules": true,
  "guest_firewall": false,
  "secret_proxy": false,
  "secret_proxy_any": false,
  "volume_attach": true,
  "volume_shared": true,
  "sidecar": null,
  "fuse": false,
  "kernel_features": false,
  "burst": null
 },
 "company": {
  "id": "porter",
  "checked": "2026-09-30",
  "company": "Porter Technologies, Inc.",
  "ownership": {
   "value": "independent",
   "parent": null,
   "source": "https://www.ycombinator.com/companies/porter",
   "quote": "Easiest way to deploy on AWS/GCP/Azure. Founded in 2020 by Justin Rhee"
  },
  "stage": {
   "value": "series-a",
   "source": "https://www.porter.run/blog/effortless-app-infrastructure-in-any-cloud-porters-20m-series-a",
   "quote": "We’re excited to announce that Porter has raised a $20M Series A to provide effortless app infrastructure in any cloud provider. Our round was led by FirstMark Capital with participation from Y Combinator and strategic angels including Dalton Caldwell and Ali Rowghani.",
   "confidence": "high",
   "note": "Confirmed via company blog post dated January 27, 2026 (matches the porter.run domain and the YC S20 'Porter' listing verified above)."
  },
  "accelerators": [
   {
    "name": "Y Combinator",
    "batch": "Summer 2020",
    "source": "https://www.ycombinator.com/companies/porter",
    "quote": "Summer 2020",
    "confidence": "high",
    "via": "research"
   }
  ],
  "total_funding_usd": {
   "value": 21500000,
   "status": "confirmed",
   "basis": "sum of confirmed rounds: $1.5M seed (2021, per TechCrunch) + $20M Series A (2026, per company blog)",
   "source": "https://techcrunch.com/2021/07/30/platform-as-a-service-startup-porter-aims-to-become-go-to-platform-for-deploying-managing-cloud-based-apps/",
   "quote": "Today, Porter announced $1.5 million in seed funding from Venrock, Translink Capital, Soma Capital and several angel investors."
  },
  "last_round": {
   "type": "series-a",
   "amount_usd": 20000000,
   "date": "2026-01",
   "leads": [
    "FirstMark Capital"
   ],
   "status": "confirmed",
   "source": "https://www.porter.run/blog/effortless-app-infrastructure-in-any-cloud-porters-20m-series-a",
   "quote": "We’re excited to announce that Porter has raised a $20M Series A to provide effortless app infrastructure in any cloud provider. Our round was led by FirstMark Capital with participation from Y Combinator and strategic angels including Dalton Caldwell and Ali Rowghani."
  },
  "investors": [
   "FirstMark Capital",
   "Y Combinator",
   "Venrock",
   "Translink Capital",
   "Soma Capital",
   "Dalton Caldwell",
   "Ali Rowghani"
  ],
  "portfolio_listings": [],
  "revenue": {
   "value": null,
   "status": "unknown"
  },
  "employees": {
   "value": null,
   "source": ""
  },
  "note": "YC hint confirmed: the YC S20 company 'Porter' (founders Justin Rhee, Trevor Shim) lists website porter.run, matching this provider's card domain. Porter raised a $1.5M seed round (2021, Venrock/Translink Capital/Soma Capital/angels) and a $20M Series A announced January 27, 2026 led by FirstMark Capital with Y Combinator and angels Dalton Caldwell and Ali Rowghani participating. No revenue/ARR figure is publicly disclosed."
 },
 "id": "porter",
 "name": "Porter",
 "url": "https://porter.run",
 "category": "paas",
 "isolation": "container",
 "modes": [
  {
   "key": "native",
   "label": "Native service",
   "flags": [
    "alt"
   ],
   "os": [
    "linux"
   ],
   "regions": null,
   "gpu_only": false,
   "features": {},
   "pricing": "resource",
   "vcpu_h": null,
   "ram_gib_h": null,
   "cpu_basis": "alloc",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    null,
    null
   ],
   "ram_fixed_per_vcpu": null,
   "vcpu_options": null,
   "min_vcpu": null,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": null,
   "granularity_s": null,
   "start_fee": null,
   "boot_overhead_s": null,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "note": "Hardware and complete resource tariff unverified."
  },
  {
   "key": "sandboxes",
   "label": "Porter Sandboxes (AWS, in your own account)",
   "flags": [
    "alt"
   ],
   "os": [
    "linux"
   ],
   "regions": null,
   "pricing": "resource",
   "vcpu_h": null,
   "ram_gib_h": null,
   "max_vcpu": 256,
   "max_ram_gib": 1024,
   "features": {
    "snapshot": "fs",
    "volumes": true,
    "egress_allowlist": true,
    "custom_domain": true,
    "inbound_https": true
   },
   "note": "Container sandboxes on a Karpenter node group of local-NVMe EC2 instances in the customer's AWS account. The Porter platform fee ($0.019/vCPU-h + $0.009/GB-h on requested resources) presumably applies, but no sandbox-specific pricing is published. EC2 cost is extra. Warm pods 'reserve their CPU and memory on the sandbox node group even while idle', so idle warm-pool capacity costs EC2 money. Default Max CPU is 20 cores per sandbox node group (queued beyond that; raise it self-serve). Max single sandbox 256 cores / 1 TB. Warm-pool pod size 0.1–16 CPU, 64 MiB–32 GiB. TTL is optional. Azure/GCP are beta on request."
  }
 ],
 "storage": {
  "included_disk_gib": null,
  "disk_gib_month": null,
  "disk_billed_when_stopped": null,
  "snapshot_gib_month": null,
  "paused_ram_billed": null
 },
 "network": {
  "egress_free_gib": null,
  "egress_gib": null,
  "ipv4_month": null,
  "ipv4_available": null
 },
 "plans": [
  {
   "name": "Custom / unverified",
   "fee": null,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": null,
   "per_seat": null,
   "concurrency": null,
   "max_session_h": null,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes_allowed": null,
   "note": ""
  },
  {
   "name": "Standard",
   "fee": 0,
   "flags": [],
   "note": "Metered: $13/vCPU-month ($0.019/h) + $6/GB-RAM-month ($0.009/h) on requested app resources, prorated to the minute. Underlying cloud not included."
  },
  {
   "name": "Enterprise",
   "fee": null,
   "flags": [
    "sales"
   ],
   "note": "Volume discount above 40 vCPU / 80 GB RAM. Adds premium support, advanced RBAC, SAML SSO, custom alerts and on-prem installation."
  }
 ],
 "free": {
  "monthly_credit": null,
  "one_time_credit": null
 },
 "features": {
  "linux": true,
  "windows": false,
  "macos": false,
  "arm64": false,
  "gpu": true,
  "snapshot": "fs",
  "pause_resume": false,
  "fork": true,
  "persistent_disk": false,
  "volumes": true,
  "auto_stop_idle": false,
  "max_session_h": null,
  "custom_image": true,
  "docker_inside": false,
  "nested_virt": false,
  "root": null,
  "systemd": null,
  "browser": false,
  "desktop": false,
  "computer_use": false,
  "code_interpreter": null,
  "agent_harnesses": false,
  "ssh": false,
  "public_ipv4": false,
  "inbound_https": true,
  "custom_domain": true,
  "raw_tcp_inbound": null,
  "egress_allowlist": true,
  "static_egress_ip": true,
  "private_network": null,
  "self_host": true,
  "byoc": true,
  "open_source": false,
  "soc2": true,
  "hipaa": true,
  "sso": true,
  "gpu_types": [],
  "regions": null,
  "lang_python": true,
  "lang_node": true,
  "lang_go": null,
  "lang_rust": null,
  "lang_java": null,
  "gpu_desktop": null,
  "credential_injection": null,
  "egress_http_rules": false,
  "wake_on_request": false,
  "live_resize": false,
  "fork_running": true,
  "memory_snapshot_fork": false,
  "webhooks": null,
  "scheduled_wakeups": true,
  "audit_logs": null,
  "eu_data_residency": true,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": null,
  "mcp_server": true,
  "snapshot_auto": false,
  "snapshot_on_demand": true,
  "harness_api": false,
  "egress_allowlist_level": "both",
  "ingress_rules": true,
  "secret_proxy": false,
  "volume_attach": true,
  "volume_shared": true,
  "isolation": "gvisor",
  "image_oci": true,
  "anti_bot": false,
  "captcha_solving": false,
  "egress_ip_type": "datacenter",
  "own_agent_api": false,
  "guest_firewall": false,
  "max_session_unlimited": true,
  "usage_api": false,
  "persist_scope": "folder",
  "persist_path": "mounted volumes"
 },
 "perf": {
  "cpu_runs_s": null,
  "cold_start_ms": null,
  "burst_tti_ms": null,
  "dax_s": null
 },
 "caveats": [
  "Platform fee only: requested vCPU $0.019/h, memory $0.009/GB-h, minute prorated. Website monthly $13/$6 are rounded illustrative numbers. Underlying AWS/Azure/GCP NOT included; over 40vCPU/80GB negotiated discounts. Nonprofit 50% off conditional. Do not rank software surcharge as all-in compute.",
  "Null values mean unknown, not free/unlimited. No model-token cost, tax or unverified ancillary charge included.",
  "Native browser/device/task/credit prices with unknown CPU/RAM are deliberately non-priceable. Check regime before interpreting any partial resource estimate.",
  "Startup deal through investors (e.g. Y Combinator, a16z speedrun) or by application. Terms are not public. Cloud credits can pay the underlying AWS/Azure/GCP bill."
 ],
 "sources": [
  "https://www.ycombinator.com/companies/porter",
  "https://www.porter.run/",
  "https://www.porter.run/pricing",
  "https://docs.porter.run",
  "https://agents.porter.run/agents.md"
 ],
 "audit_2026_09_29": {
  "applied": 13,
  "source": "checked against the provider's live pricing and docs pages",
  "reviewed": 3
 },
 "feature_evidence": {
  "snapshot_auto": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/volumes.md",
   "quote": "Unlike a sandbox's own filesystem, which is discarded when the sandbox exits, a volume lives independently and keeps its contents across sandboxes.",
   "note": "Porter Sandboxes (AWS/EKS, in your own account) have no pause/sleep; the sandbox filesystem is discarded on exit/TTL. Only explicit snapshots or volumes persist state.",
   "checked": "2026-09-29"
  },
  "snapshot_on_demand": {
   "value": true,
   "source": "https://docs.porter.run/sandboxes/overview.md",
   "quote": "A snapshot captures a running sandbox's filesystem so you can start new sandboxes from it later, with the same files in place.",
   "note": "Filesystem only: 'A snapshot holds files only, not running processes or mounted volumes'. Sandbox must be running; capture pauses it for a few ms. New sandboxes boot from it (porter.snapshots.create / porter sandbox create --from-snapshot) -> fork/template, no memory.",
   "checked": "2026-09-29"
  },
  "harness_api": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/getting-started.md",
   "quote": "Bake your harness into a custom image, inject the model API key at create time, and run it as the sandbox's main process.",
   "note": "Only generic create/exec/logs APIs; running an agent is DIY via custom image. (Porter's MCP server and dashboard DevOps Agent operate Porter itself, not a harness in a sandbox.)",
   "checked": "2026-09-29"
  },
  "egress_allowlist": {
   "value": true,
   "source": "https://docs.porter.run/sandboxes/networking.md",
   "quote": "Pass `egress` when creating a sandbox and it can only reach the destinations it lists; all other outbound traffic is blocked. Enforcement happens transparently at the network layer, so any protocol and client works without proxy configuration.",
   "note": "Entries: exact hostname, *.wildcard, IP, CIDR, or k8s Service. 'An empty list denies all egress.' Requires cluster setting 'Enforce egress allowlists' (network policy on sandbox nodes). Default isolation also blocks private ranges, metadata endpoint, other pods.",
   "checked": "2026-09-29",
   "level": "both"
  },
  "ingress_rules": {
   "value": true,
   "source": "https://docs.porter.run/sandboxes/networking.md",
   "quote": "`public` or `private`: whether the sandbox is served publicly or inside your VPC when the cluster has both configured.",
   "note": "A sandbox exposes nothing unless `networking` lists a port; public (internet LB) vs private (internal LB, VPC only) vs `internal: true` (cluster-internal address only). No per-URL auth tokens documented. Porter apps additionally support AWS ALB/WAF IP allowlisting.",
   "checked": "2026-09-29"
  },
  "secret_proxy": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/getting-started.md",
   "quote": "Instead of passing variables one at a time, you can inject an entire [environment group](/applications/configure/environment-groups) from the cluster at create time.",
   "note": "Secrets are env vars / env groups (incl. Doppler/Infisical-synced) placed inside the sandbox; docs recommend injecting the model API key as an env var. No credential-injecting proxy.",
   "checked": "2026-09-29"
  },
  "volume_attach": {
   "value": true,
   "source": "https://docs.porter.run/sandboxes/volumes.md",
   "quote": "Volumes are persistent storage you can mount into Porter Sandboxes.",
   "note": "Disk volumes (cluster disks) and object volumes (S3 bucket via Mountpoint for S3, AWS only), mounted at launch via volume_mounts; files readable/writable from outside via SDK/CLI/dashboard.",
   "checked": "2026-09-29"
  },
  "volume_shared": {
   "value": true,
   "source": "https://docs.porter.run/sandboxes/volumes.md",
   "quote": "Any number of sandboxes can mount the same object volume at once, on any sandbox cluster.",
   "note": "Object (S3) volumes: read-write / read-only / write-only-new-files, no in-place edits or appends. Disk volumes: concurrent multi-sandbox mounts only if 'the cluster to back sandbox volumes with shared storage; without it, a volume attaches to one sandbox at a time.' Porter apps (non-sandbox) get EFS shared RW disks.",
   "checked": "2026-09-29"
  },
  "isolation": {
   "value": "gvisor",
   "source": "https://github.com/porter-dev/gvisor",
   "quote": "Porter's fork of google/gvisor. master mirrors upstream; the porter branch carries our patches rebased onto each release tag.",
   "note": "Porter docs call sandboxes 'isolated container workloads' on Kubernetes/EKS pods, but Porter maintains an active fork of gVisor (branches 'porter' and 'ym/porter_shim') under its GitHub org, strongly indicating gVisor (runsc) is the sandbox container runtime for extra kernel isolation. Docs themselves never name the runtime explicitly.",
   "checked": "2026-09-30"
  },
  "image_oci": {
   "value": true,
   "source": "https://docs.porter.run/sandboxes/sdk/python/reference.md",
   "quote": "`image` | `str` | Container image to run, referenced by tag or digest.",
   "note": "Sandboxes are created directly from any container image reference (e.g. ghcr.io/example/agent:latest).",
   "checked": "2026-09-30"
  },
  "docker_inside": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/overview.md",
   "quote": "Porter Sandboxes are isolated container workloads that allow you to run untrusted code or workflows for agents.",
   "note": "No mention of privileged mode, Docker-in-Docker, or a container runtime socket exposed inside the sandbox; untrusted-code isolation design implies it is not offered.",
   "checked": "2026-09-30"
  },
  "nested_virt": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/overview.md",
   "quote": "Porter Sandboxes are isolated container workloads that allow you to run untrusted code or workflows for agents.",
   "note": "not offered: outside the product's scope — a shared-kernel/gVisor sandbox for untrusted code does not expose /dev/kvm; no docs mention nested virtualization.",
   "checked": "2026-09-30"
  },
  "desktop": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/overview.md",
   "quote": "Use them when you need a secure, fresh runtime environment for code interpretation, agent tools, batch fan-out, or other dynamic work.",
   "note": "not offered: outside the product's scope",
   "checked": "2026-09-30"
  },
  "browser": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/overview.md",
   "quote": "Use them when you need a secure, fresh runtime environment for code interpretation, agent tools, batch fan-out, or other dynamic work.",
   "note": "not offered: outside the product's scope — no managed/first-party browser product documented.",
   "checked": "2026-09-30"
  },
  "computer_use": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/overview.md",
   "quote": "Use them when you need a secure, fresh runtime environment for code interpretation, agent tools, batch fan-out, or other dynamic work.",
   "note": "not offered: outside the product's scope",
   "checked": "2026-09-30"
  },
  "anti_bot": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/overview.md",
   "quote": "Run isolated container workloads on Porter",
   "note": "not offered: outside the product's scope — Porter Sandboxes are a generic code-execution runtime, not a browsing/scraping product.",
   "checked": "2026-09-30"
  },
  "captcha_solving": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/overview.md",
   "quote": "Run isolated container workloads on Porter",
   "note": "not offered: outside the product's scope",
   "checked": "2026-09-30"
  },
  "egress_ip_type": {
   "value": "datacenter",
   "source": "https://docs.porter.run/sandboxes/networking.md",
   "quote": "A sandbox can resolve DNS and reach the public internet, and nothing else",
   "note": "Sandboxes run as pods on an EKS cluster inside the customer's own AWS account; outbound traffic egresses through the cluster's standard AWS networking (NAT gateway/EC2), i.e. datacenter IP space.",
   "checked": "2026-09-30"
  },
  "ssh": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/cli.md",
   "quote": "porter sandbox exec [-it] -- [args...] [flags] ... interactive exec opens a shell session.",
   "note": "Access is via `porter sandbox exec` (docker-exec style, optionally interactive TTY), not SSH; no SSH server or key-based SSH access is documented.",
   "checked": "2026-09-30"
  },
  "fork": {
   "value": true,
   "source": "https://docs.porter.run/sandboxes/sdk/python/reference.md",
   "quote": "`snapshot_id` | `str | None` | Start the sandbox from a snapshot instead of an image.",
   "note": "A filesystem snapshot of one sandbox can be used to create any number of new sandboxes (clone), though only files are copied, not memory/processes.",
   "checked": "2026-09-30"
  },
  "fork_running": {
   "value": true,
   "source": "https://docs.porter.run/sandboxes/overview.md",
   "quote": "A snapshot captures a running sandbox's filesystem so you can start new sandboxes from it later, with the same files in place.",
   "note": "Snapshotting a running sandbox only pauses it for a few milliseconds during capture (per docs.porter.run/sandboxes/volumes.md) rather than stopping/terminating it, so the source sandbox keeps running afterward while clones are created from the snapshot.",
   "checked": "2026-09-30"
  },
  "memory_snapshot_fork": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/sdk/python/reference.md",
   "quote": "The snapshot holds files only.",
   "note": "Snapshots/clones carry only filesystem contents; running processes and memory are not restored.",
   "checked": "2026-09-30"
  },
  "pause_resume": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/overview.md",
   "quote": "A sandbox lives as long as its main process ... Once the sandbox reaches either phase, exec calls fail.",
   "note": "Lifecycle is queued/creating/running/succeeded/failed/terminated; there is no pause/suspend phase or API, only termination.",
   "checked": "2026-09-30"
  },
  "wake_on_request": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/overview.md",
   "quote": "A sandbox lives as long as its main process: the image's default entrypoint, or the command you pass at create time.",
   "note": "not offered: outside the product's scope — sandboxes are explicitly created per task via API; there is no stopped/sleeping sandbox that auto-wakes on an inbound request.",
   "checked": "2026-09-30"
  },
  "persistent_disk": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/volumes.md",
   "quote": "Unlike a sandbox's own filesystem, which is discarded when the sandbox exits, a volume lives independently and keeps its contents across sandboxes.",
   "note": "The sandbox's own root filesystem does not survive stop/start; only explicitly-mounted volumes or filesystem snapshots persist data.",
   "checked": "2026-09-30"
  },
  "auto_stop_idle": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/overview.md",
   "quote": "You can also bound a sandbox's lifetime up front with a TTL, so it cleans itself up even if its main process never exits.",
   "note": "Only a fixed TTL (time since creation) or explicit terminate is documented; no idle-activity detection that stops/sleeps a sandbox automatically.",
   "checked": "2026-09-30"
  },
  "live_resize": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/capacity.md",
   "quote": "A larger sandbox needs a nod...",
   "note": "CPU/RAM ('resources') are set only at sandbox create time (per the SDK reference); no documented API to resize a running sandbox's CPU/RAM in place.",
   "checked": "2026-09-30"
  },
  "agent_harnesses": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/getting-started.md",
   "quote": "Bake your harness into a custom image, inject the model API key at create time, and run it as the sandbox's main process.",
   "note": "No preinstalled coding-agent harnesses or templates are offered; users must bring their own image with the harness baked in.",
   "checked": "2026-09-30"
  },
  "own_agent_api": {
   "value": false,
   "source": "https://docs.porter.run/applications/observability/devops-agent.md",
   "quote": "Use the AI-powered DevOps Agent in the Porter dashboard to debug application issues with read-only access to your cluster in real time",
   "note": "not offered: outside the product's scope — Porter's own 'DevOps Agent' operates Porter's dashboard/infrastructure itself; it is not a browser/computer-use/research task agent with a first-party driving API.",
   "checked": "2026-09-30"
  },
  "lang_python": {
   "value": true,
   "source": "https://docs.porter.run/sandboxes/sdk/python/quickstart.md",
   "quote": "pip install porter-sandbox ... sandbox = porter.sandboxes.create(image=\"python:3.12-slim\", ...)",
   "note": "First-party Python Sandbox SDK, plus arbitrary Python images/runtimes can be used as the sandbox image.",
   "checked": "2026-09-30"
  },
  "lang_node": {
   "value": true,
   "source": "https://docs.porter.run/sandboxes/getting-started.md",
   "quote": "npm install porter-sandbox ... import { Porter } from \"porter-sandbox\";",
   "note": "First-party TypeScript/Node.js Sandbox SDK, plus arbitrary Node images can be used as the sandbox image.",
   "checked": "2026-09-30"
  },
  "public_ipv4": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/networking.md",
   "quote": "A sandbox that opens a port can be served over HTTPS on a hostname under your own domain.",
   "note": "Sandbox ports are exposed via a shared load balancer + wildcard HTTPS hostname per sandbox, not a dedicated public IPv4 address per machine.",
   "checked": "2026-09-30"
  },
  "egress_http_rules": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/networking.md",
   "quote": "Enforcement happens transparently at the network layer, so any protocol and client works without proxy configuration.",
   "note": "Egress allowlists are hostname/wildcard/IP/CIDR/k8s-Service based network-layer rules, not HTTP method/path-level rules.",
   "checked": "2026-09-30"
  },
  "guest_firewall": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/overview.md",
   "quote": "Porter Sandboxes are isolated container workloads that allow you to run untrusted code or workflows for agents.",
   "note": "Sandboxes are containers/gVisor pods (not a full VM/microVM the customer roots), and network policy is enforced by the platform outside the guest, not via customer-editable nftables/iptables inside the sandbox; root-in-guest firewall control is not documented.",
   "checked": "2026-09-30"
  },
  "windows": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/overview.md",
   "quote": "Sandboxes are currently only available on AWS.",
   "note": "not offered: outside the product's scope — sandboxes run Linux container images (e.g. python:3.12-slim, ubuntu:24.04) on Kubernetes; no Windows container/VM option is documented.",
   "checked": "2026-09-30"
  },
  "macos": {
   "value": false,
   "source": "https://docs.porter.run/sandboxes/overview.md",
   "quote": "Porter Sandboxes are isolated container workloads that allow you to run untrusted code or workflows for agents.",
   "note": "not offered: outside the product's scope — Linux container sandboxes on Kubernetes/EKS; no macOS offering.",
   "checked": "2026-09-30"
  },
  "open_source": {
   "value": false,
   "source": "https://github.com/orgs/porter-dev/repositories",
   "quote": "porter-python-sdk Apache-2.0; porter-typescript-sdk Apache-2.0; porter-charts (Helm charts)",
   "note": "Porter's client SDKs and Helm charts are open source, but the core Porter platform/control-plane (dashboard, API, sandbox orchestration) has no public source repo and is not released under an OSI license.",
   "checked": "2026-09-30"
  },
  "eu_data_residency": {
   "value": true,
   "source": "https://docs.porter.run/cloud-accounts/creating-a-cluster.md",
   "quote": "Provision a managed Kubernetes cluster in your AWS, GCP, or Azure cloud account by selecting a region, machine type, and initial instance count",
   "note": "Clusters (and sandboxes, currently AWS-only) run entirely inside the customer's own cloud account and a region the customer selects, so an EU AWS region (e.g. eu-west-1) can be chosen for data residency.",
   "checked": "2026-09-30"
  },
  "max_session_h": {
   "value": "none",
   "source": "https://docs.porter.run/sandboxes/sdk/python/reference.md",
   "quote": "`ttl_seconds` | `int | None` | Maximum lifetime in seconds, counted from creation. The sandbox is terminated once it elapses. Omit for no limit.",
   "note": "TTL is optional and entirely user-set; a sandbox with no TTL runs as long as its main process keeps running, with no platform-imposed maximum session length documented.",
   "checked": "2026-09-30"
  },
  "static_egress_ip": {
   "value": true,
   "source": "https://docs.porter.run/security-and-compliance/static-egress-ip",
   "quote": "3. Copy the contents of `Primary public IP` - this serves as the egress IP which you can use to whitelist your workloads with third party platforms. In case your cluster has multiple gateways, there will be multiple egress IPs.",
   "note": "Porter clusters (including sandboxes, which run on a node group of the same cluster) egress through per-region NAT gateways/Cloud NAT/Azure LB outbound IPs that Porter provisions in the customer's own cloud account; these are fixed IPs (Elastic IP / static NAT IP) documented specifically so third parties can allowlist them, though a cluster with multiple AZs/gateways can have multiple such static IPs.",
   "checked": "2026-09-30"
  },
  "arm64": {
   "value": false,
   "source": "https://docs.porter.run/standard/cli/command-reference/porter-registry",
   "quote": "With `--build`, the image is built from the given context directory on your machine before it is pushed, using the same build path Porter apps use. Set `DOCKER_BUILDKIT=1` to build with buildx, and use `PORTER_BUILDKIT_ARGS` to pass extra flags such as `--platform`. Builds target `linux/amd64` by default.",
   "note": "not offered: Porter's own image builds default to linux/amd64 and no docs mention an ARM/Graviton node-group or sandbox instance-type option; a customer could in principle point a fixed/custom node group at an ARM (e.g. AWS Graviton) EC2 instance type since instance type is a free-text cloud choice, but this is never documented as a supported/validated configuration, and multi-arch (arm64) is only mentioned as an opt-in buildx flag for image builds, not as a compute option.",
   "checked": "2026-09-30"
  },
  "usage_api": {
   "value": false,
   "source": "https://docs.porter.run/applications/observability/monitoring.md",
   "quote": "View CPU, RAM, network usage, and throughput metrics for your applications with 14-day retention using Prometheus inside your own cluster. All metrics are retained up to 14 days by default and are collected via Prometheus that runs inside your own cluster.",
   "note": "granularity: account-only; cost: no; Porter charges metered billing ($0.019/vCPU-h + $0.009/GB-h), but only publishes live monitoring metrics (CPU, RAM, network via Prometheus), not billable usage or cost breakdowns. No usage endpoint, SDK call, or CLI command returns per-sandbox or per-tag billable consumption. Billing is only visible via the dashboard or account invoice.",
   "confidence": "medium",
   "checked": "2026-10-01"
  },
  "persist_scope": {
   "value": "folder",
   "source": "https://docs.porter.run/sandboxes/volumes.md",
   "quote": "Unlike a sandbox's own filesystem, which is discarded when the sandbox exits, a volume lives independently and keeps its contents across sandboxes.",
   "note": "Only mounted volumes survives a stop; the rest of the filesystem (packages installed elsewhere) resets.",
   "checked": "2026-10-01"
  }
 },
 "locations": [],
 "locations_source": "https://docs.porter.run/cloud-accounts/creating-a-cluster.md",
 "locations_quote": "Provision a managed Kubernetes cluster in your AWS, GCP, or Azure cloud account by selecting a region, machine type, and initial instance count",
 "locations_checked": "2026-10-01"
}