{
 "features_resolved": {
  "snapshot_any": true,
  "snapshot_mem": true,
  "fork": true,
  "pause_resume": true,
  "persistent_disk": true,
  "whole_disk": true,
  "persist_scope": null,
  "volumes": true,
  "auto_stop_idle": true,
  "long_sessions": true,
  "custom_image": true,
  "image_snapshot": true,
  "image_oci": true,
  "vm_isolation": true,
  "docker_inside": false,
  "nested_virt": false,
  "root": true,
  "systemd": true,
  "browser": true,
  "desktop": true,
  "computer_use": true,
  "code_interpreter": true,
  "browser_control": null,
  "desktop_control": null,
  "browser_and_desktop": true,
  "anti_bot": false,
  "captcha_solving": false,
  "residential_ip": false,
  "agent_harnesses": true,
  "ssh": true,
  "public_ipv4": false,
  "inbound_https": true,
  "custom_domain": null,
  "raw_tcp_inbound": false,
  "egress_allowlist": true,
  "open_internet": true,
  "static_egress_ip": false,
  "private_network": false,
  "self_host": false,
  "byoc": false,
  "open_source": false,
  "soc2": true,
  "hipaa": false,
  "sso": null,
  "gpu": false,
  "arm64": false,
  "windows": false,
  "macos": false,
  "lang_python": true,
  "lang_node": true,
  "lang_go": null,
  "lang_rust": null,
  "lang_java": null,
  "gpu_desktop": false,
  "credential_injection": true,
  "egress_http_rules": false,
  "wake_on_request": true,
  "live_resize": true,
  "fork_running": false,
  "memory_snapshot_fork": true,
  "webhooks": null,
  "scheduled_wakeups": null,
  "audit_logs": true,
  "eu_data_residency": false,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": false,
  "mcp_server": false,
  "usage_api": false,
  "snapshot_auto": true,
  "snapshot_on_demand": true,
  "harness_api": false,
  "own_agent_api": true,
  "fast_boot": null,
  "strong_isolation": true,
  "ingress_rules": true,
  "guest_firewall": true,
  "secret_proxy": true,
  "secret_proxy_any": true,
  "volume_attach": true,
  "volume_shared": true,
  "sidecar": null,
  "fuse": true,
  "kernel_features": true,
  "burst": null
 },
 "company": {
  "id": "novita",
  "checked": "2026-09-30",
  "company": "Novita Inc (Novita AI)",
  "ownership": {
   "value": "independent",
   "parent": null,
   "source": "https://www.google.com/search?q=%22Novita+Inc%22+crunchbase+funding",
   "quote": "Novita Inc (known as Novita AI) is bootstrapped and has not raised any external venture capital funding according to Crunchbase and market profile data."
  },
  "stage": {
   "value": "bootstrapped",
   "source": "https://www.google.com/search?q=%22Novita+Inc%22+crunchbase+funding",
   "quote": "Funding Total: $0 (No formal venture funding rounds recorded)",
   "confidence": "medium",
   "note": "No primary-source (TechCrunch/press release/SEC) confirmation found either way; Crunchbase-derived aggregator data (via a Google AI Overview summary, not the raw Crunchbase page, which was blocked by Cloudflare) shows $0 disclosed funding, consistent with a self-funded/bootstrapped operation. A separate, unverifiable claim of a '$14M Series A led by Bessemer Venture Partners (Sept 2024)' surfaced in low-quality search snippets (a LinkedIn post) but a direct check found no company/investor announcement, filing, or reputable press backing it, and Bessemer's own disclosed AI portfolio does not list Novita — treated as unconfirmed noise, not fact."
  },
  "accelerators": [],
  "total_funding_usd": {
   "value": 0,
   "status": "estimated",
   "basis": "Crunchbase company profile (relayed via search snippet; raw page blocked by Cloudflare) lists Novita Inc / Novita AI with no recorded funding rounds.",
   "source": "https://www.google.com/search?q=%22Novita+Inc%22+crunchbase+funding",
   "quote": "Funding Total: $0 (No formal venture funding rounds recorded)"
  },
  "last_round": {
   "type": null,
   "amount_usd": null,
   "date": null,
   "leads": [],
   "status": "unknown",
   "source": "",
   "quote": ""
  },
  "investors": [],
  "portfolio_listings": [],
  "revenue": {
   "value_usd": 1100000,
   "kind": "ARR",
   "as_of": "2025",
   "status": "estimated",
   "basis": "GetLatka estimate ('Novita AI Revenue 2025: $1.1M Est. ARR'), a third-party estimator; not confirmed by the company.",
   "source": "https://www.google.com/search?q=%22Novita+AI%22+revenue+ARR",
   "quote": "Novita AI generates an estimated annual recurring revenue (ARR) of $1.1 million."
  },
  "employees": {
   "value": 10,
   "source": "https://www.google.com/search?q=%22Novita+AI%22+employees+headcount (GetLatka/Crunchbase-derived estimate, 1-10 to ~23 range depending on estimator)"
  },
  "note": "Novita AI (novita.ai, X account @novita_labs joined September 2023) is a San Francisco-based AI cloud / agent sandbox / GPU inference platform; CEO named as Frank Lewis in a GetLatka snippet. No accelerator affiliation, priced funding round, or notable investor could be confirmed from press, company channels, or accessible aggregator pages within the research window (Crunchbase, Tracxn and LinkedIn pages returned Cloudflare/login walls rather than raw data; conclusions rely on Google AI Overview summaries of those sources, which is a weaker evidence chain than reading the primary pages directly). Buyers should treat funding/revenue/headcount figures here as low-confidence estimates pending direct verification."
 },
 "id": "novita",
 "name": "Novita AI Agent Sandbox",
 "url": "https://docs.novita.ai/guides/sandbox-pricing",
 "category": "agent-sandbox",
 "isolation": "firecracker",
 "modes": [
  {
   "key": "on-demand",
   "label": "Pay-as-you-go (prepaid balance)",
   "pricing": "resource",
   "vcpu_h": 0.03528,
   "ram_gib_h": 0.01152,
   "cpu_basis": "alloc",
   "ram_basis": "alloc",
   "active_floor": 0,
   "ram_per_vcpu": [
    0.5,
    4
   ],
   "ram_fixed_per_vcpu": null,
   "vcpu_options": [
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8
   ],
   "min_vcpu": 1,
   "max_vcpu": 8,
   "max_ram_gib": 8,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 0,
   "granularity_s": 1,
   "start_fee": 0,
   "boot_overhead_s": null,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": {},
   "note": "$0.0000098/vCPU-s + $0.0000032/GiB-s on allocation, per second. RAM in 512 MiB steps (0.5-8 GiB). Paused = $0 compute. Same rates in both regions (us-phx-1 v2, us-virginia-1 v1). Sessions > 1 h need long_running metadata (default timeout 5 min, cap 1 h without it; docs/guides/sandbox-long-running). Verified 2026-09-28: CPU 'Billed based on the number of vCPU cores used and usage duration', RAM on 'allocated memory capacity and usage duration'; paused: 'CPU and RAM stop being billed' (docs.novita.ai/guides/sandbox-pricing). Running-but-idle bills in full. 'Timeout is the maximum lifetime ... regardless of activity' (default onTimeout kill); an opt-in 'Idle timeout only fires when no client is connected for the configured duration' (docs.novita.ai/guides/sandbox-auto-resume.md).",
   "flags": [],
   "features": {
    "isolation": null
   }
  },
  {
   "key": "gpu-instance",
   "label": "GPU Instance on-demand (H100 SXM 80GB, L40S, RTX 4090, RTX 5090, RTX 6000 Ada)",
   "flags": [
    "stock"
   ],
   "os": [
    "linux"
   ],
   "regions": [
    "us",
    "eu",
    "asia",
    "other"
   ],
   "gpu_only": true,
   "plan_limits_exempt": true,
   "features": {
    "gpu": true,
    "gpu_types": [
     "H100",
     "L40S",
     "RTX-4090",
     "RTX-5090",
     "RTX-6000-Ada"
    ],
    "snapshot": null,
    "pause_resume": null,
    "fork": null,
    "isolation": "container",
    "image_oci": true
   },
   "plans": null,
   "pricing": "resource",
   "vcpu_h": 0,
   "ram_gib_h": 0,
   "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": 16,
   "max_ram_gib": 58,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 0,
   "granularity_s": 1,
   "start_fee": 0,
   "boot_overhead_s": null,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": {
    "H100": 3.39,
    "L40S": 0.55,
    "RTX-4090": 0.33,
    "RTX-5090": 0.56,
    "RTX-6000-Ada": 0.77
   },
   "note": "Novita GPU Instances, not the Agent Sandbox. Per-GPU hourly incl. a fixed host share (H100 SXM 22 vCPU/150 GiB; L40S and RTX 6000 Ada 22c/125 GiB; RTX 4090 16c/62 GiB; RTX 5090 16c/58 GiB), max 8 GPUs, 60 GB free root storage. Rendered novita.ai/gpus 2026-09-28: H100 SXM 3.39, L40S 0.55, RTX 4090 0.33, RTX 6000 Ada 0.77 /hr/GPU; RTX 5090 0.56 (now also on the rendered novita.ai/pricing?gpu=1 GPU tab, 2026-09-29). Live stock was 0 for 4090/5090/6000 Ada at capture; not guaranteed. Region not returned by the catalogue. max_vcpu/max_ram_gib set to the smallest (5090) host envelope. Serverless GPU worker prices unpublished; Dedicated Endpoints (H100 1.99, H200 2.99, 4090 0.61) are a different inference product, not modelled.",
   "stock_note": "2026-09-29 console: only H100 SXM in stock ('Low', 4 GPUs available via API); RTX 4090, RTX 6000 Ada, RTX 5090 and L40S shown 'Unavailable' (inventoryState none)."
  },
  {
   "key": "gpu-instance-spot",
   "label": "GPU Instance spot (H100 SXM 80GB, RTX 4090, RTX 6000 Ada)",
   "flags": [
    "spot",
    "stock"
   ],
   "os": [
    "linux"
   ],
   "regions": [
    "us",
    "eu",
    "asia",
    "other"
   ],
   "gpu_only": true,
   "plan_limits_exempt": true,
   "features": {
    "gpu": true,
    "gpu_types": [
     "H100",
     "L40S",
     "RTX-4090",
     "RTX-5090",
     "RTX-6000-Ada"
    ],
    "snapshot": null,
    "pause_resume": null,
    "fork": null,
    "isolation": "container",
    "image_oci": true
   },
   "plans": null,
   "pricing": "resource",
   "vcpu_h": 0,
   "ram_gib_h": 0,
   "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": 16,
   "max_ram_gib": 58,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 0,
   "granularity_s": 1,
   "start_fee": 0,
   "boot_overhead_s": null,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": {
    "H100": 1.7,
    "RTX-4090": 0.17,
    "RTX-6000-Ada": 0.39
   },
   "note": "Spot GPU Instances: 1 h initial protection, then 1 h reclaim notice. Rendered novita.ai/gpus 2026-09-28: H100 1.70, RTX 4090 0.17, RTX 6000 Ada 0.39 (API 0.385) /hr/GPU; L40S no spot.",
   "stock_note": "2026-09-29: spot listing API shows inventoryState none for all spot SKUs (incl. H100); console shows RTX 4090 and RTX 6000 Ada Unavailable."
  }
 ],
 "storage": {
  "included_disk_gib": 20,
  "disk_gib_month": null,
  "disk_billed_when_stopped": true,
  "snapshot_gib_month": 0.0657,
  "snapshot_free_gib_account": 60,
  "paused_ram_billed": false
 },
 "network": {
  "egress_free_gib": null,
  "egress_gib": null,
  "ipv4_month": null,
  "ipv4_available": false,
  "internet": {
   "default": "configurable",
   "evidence": [
    {
     "quote": "denyOut: ['0.0.0.0/0'], allowOut: ['1.1.1.1', '8.8.8.0/24']",
     "url": "https://docs.novita.ai/guides/sandbox-internet-access.md"
    },
    {
     "quote": "novita sandbox create base --no-internet -d",
     "url": "https://docs.novita.ai/guides/sandbox-internet-access.md"
    }
   ]
  }
 },
 "plans": [
  {
   "name": "Free (no top-up)",
   "fee": 0,
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": 5,
   "max_session_h": 1,
   "max_vcpu": 2,
   "max_ram_gib": 4,
   "sizes_allowed": null,
   "note": "Default until account balance is topped up / credit line enabled; the $100 promo credit is spent under these limits. No priority scheduling.",
   "flags": []
  },
  {
   "name": "Paid (pay-as-you-go)",
   "fee": 0,
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": 100,
   "max_session_h": 24,
   "max_vcpu": 8,
   "max_ram_gib": 8,
   "sizes_allowed": null,
   "note": "Unlocks when balance > $0. Session cap conflicting: 24 h (landing), 3 h (docs quota table), long_running lifts the cap (examples up to 168 h / 7 days); card uses 24 h. Manual top-ups must be greater than $10 (docs payment-methods), so unlocking Paid needs a >$10 prepayment (one-time, not a monthly fee).",
   "flags": []
  },
  {
   "name": "Enterprise",
   "fee": null,
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": 500,
   "max_session_h": 4,
   "max_vcpu": 8,
   "max_ram_gib": 8,
   "sizes_allowed": null,
   "note": "Custom contract; all limits adjustable (landing says unlimited concurrency); region selection, dedicated infra, 99.95% SLA. Pricing not published.",
   "flags": [
    "sales"
   ]
  }
 ],
 "free": {
  "monthly_credit": 0,
  "one_time_credit": 100
 },
 "features": {
  "linux": true,
  "windows": false,
  "macos": false,
  "arm64": false,
  "gpu": false,
  "gpu_types": [],
  "snapshot": "mem",
  "pause_resume": true,
  "fork": true,
  "persistent_disk": true,
  "volumes": true,
  "auto_stop_idle": true,
  "max_session_h": 24,
  "custom_image": true,
  "docker_inside": false,
  "nested_virt": false,
  "root": true,
  "systemd": true,
  "browser": true,
  "desktop": true,
  "computer_use": true,
  "code_interpreter": true,
  "agent_harnesses": true,
  "ssh": true,
  "public_ipv4": false,
  "inbound_https": true,
  "custom_domain": null,
  "raw_tcp_inbound": false,
  "egress_allowlist": true,
  "static_egress_ip": false,
  "private_network": false,
  "self_host": false,
  "byoc": false,
  "open_source": false,
  "regions": [
   "us"
  ],
  "soc2": true,
  "hipaa": false,
  "sso": null,
  "lang_python": true,
  "lang_node": true,
  "lang_go": null,
  "lang_rust": null,
  "lang_java": null,
  "gpu_desktop": false,
  "credential_injection": true,
  "egress_http_rules": false,
  "wake_on_request": true,
  "live_resize": true,
  "fork_running": false,
  "memory_snapshot_fork": true,
  "webhooks": null,
  "scheduled_wakeups": null,
  "audit_logs": true,
  "eu_data_residency": false,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": false,
  "mcp_server": false,
  "isolation": "firecracker",
  "image_oci": true,
  "snapshot_auto": true,
  "snapshot_on_demand": true,
  "own_agent_api": true,
  "harness_api": false,
  "egress_allowlist_level": "both",
  "ingress_rules": true,
  "guest_firewall": true,
  "secret_proxy": "any-http",
  "volume_attach": true,
  "volume_shared": true,
  "anti_bot": false,
  "captcha_solving": false,
  "egress_ip_type": "datacenter",
  "open_internet": true,
  "usage_api": false
 },
 "perf": {
  "cpu_runs_s": 19.52,
  "cold_start_ms": null,
  "burst_tti_ms": null,
  "dax_s": null
 },
 "perf_source": "StarSling hpc-sandbox-benchmarks, run 36498291449 (2026-09-29), Node.js V8 Web Tooling p50 at a 4 vCPU / 8 GB target",
 "knobs": [
  {
   "id": "timeout_tail",
   "label": "Idle time billed until the sandbox timeout fires (× session hours)",
   "kind": "slider",
   "min": 1,
   "max": 2,
   "step": 0.05,
   "default": 1,
   "unit": "×",
   "options": null,
   "effect": "hours_factor",
   "modes": [
    "on-demand"
   ],
   "why": "Default timeout is 5 min and the default onTimeout action is kill; a sandbox you do not kill or pause keeps billing CPU+RAM on allocation until the timeout fires (up to 1 h without long_running, longer with it). Default 1 = killed/paused when work ends; the 2x ceiling is a judgment call.",
   "source": "https://docs.novita.ai/guides/sandbox-long-running"
  },
  {
   "id": "running_share",
   "label": "Share of session actually running (onTimeout=pause + autoResume / idle_timeout)",
   "kind": "slider",
   "min": 0.05,
   "max": 1,
   "step": 0.05,
   "default": 1,
   "unit": "%",
   "options": null,
   "effect": "hours_factor",
   "modes": [
    "on-demand"
   ],
   "why": "Paused sandboxes cost $0 compute (state moves to Persistent Storage: 60 GB free per account, then $0.00009/GB-h). With onTimeout=pause + autoResume or an idle_timeout (60-86,400 s), only running time bills. Default 1 = running for the whole session.",
   "source": "https://docs.novita.ai/guides/sandbox-pricing"
  }
 ],
 "caveats": [
  "Isolation technology not named by Novita: docs.novita.ai/guides/sandbox-overview only says 'Each has its own filesystem and runtime' (checked 2026-10-14). isolation 'firecracker' comes from a third-party measurement, not the docs: StarSling hpc-sandbox-benchmarks (run 36498291449) lists Novita as 'firecracker' in its Isolation and Virtualization rows; E2B-derived envd, memory snapshots and virtio-mem are consistent with that.",
  "Persistent storage (paused sandboxes + templates + snapshots) has a 60 GB free allowance per ACCOUNT (extra key snapshot_free_gib_account), then $0.00009/GB-h = $0.0657/GB-month; billed daily; landing (2026-09-29): 'Measured hourly and charged daily. First 60 GB included'. An engine ignoring the allowance overstates small snapshot bills.",
  "Paused sandbox state includes memory; its GB size is not documented.",
  "Max session conflicts across Novita's own pages (checked 2026-10-14): docs quota table 'Maximum session duration | 1 hour | 3 hours | 4 hours by default, adjustable' (Free/Paid/Enterprise); novita.ai/sandbox 'Paid: 24 hours max session length'; sandbox-long-running 'Long-running mode lifts this cap' with no ceiling stated, longest example 7 days (--timeout 168h). Card rule: Paid max_session_h = 24 (landing, and long_running allows more), Free 1, Enterprise 4 (quota table); a Paid session over 3 h may still hit the 3 h quota-table limit unless long_running is set.",
  "Default timeout 5 min and default onTimeout action is kill.",
  "The $100 promo credit may not unlock Paid-tier limits; Paid requires a top-up or credit line. Credit validity period unspecified.",
  "No minimum billed duration or per-start fee documented (Novita blog: 'no additional per-session startup fee').",
  "Egress, volume (beta) and Enterprise pricing not published.",
  "Overdue prepaid balance terminates sandboxes with data loss; no spend caps.",
  "Ephemeral disk fixed at 20 GB (Enterprise adjustable); no per-GB disk upgrade price.",
  "Benchmarks: CPU score is StarSling run 36498291449 (2026-09-29), 19.52 Node.js tooling runs/s at 4 vCPU / 8 GB (perf.cpu_runs_s); the older hpc 2026-08-24 run measured 13.52 (n=10) and is superseded. No computesdk cold-start/burst/dax data.",
  "Idle auto-stop exists but is off by default (must be configured), so the estimator does not apply idle suspension; set a pinned offer if you enable it.",
  "GPU Instances (novita.ai/gpus) are a separate GPU-cloud product from the CPU Agent Sandbox, modelled as alt-flagged gpu_only modes (patch v4-gpu, 2026-09-28). PPIO (ppio-sandbox card, China, CNY 0.108/vCPU-h + 0.054/GiB-h) is a separately billed offer; engineering overlap with Novita is visible (novita-gym PPIO templates) but common ownership / shared credits are unverified (patch v10-regional).",
  "GPU Instance regimes un-flagged alt (fix 2026-09-28): an ordinary self-serve GPU VM product; prices re-rendered from novita.ai/gpus 2026-09-28 (H100 SXM 3.39 / spot 1.70 /hr/GPU). Egress is still not published on docs.novita.ai/guides/sandbox-pricing or novita.ai/sandbox (egress_gib stays null).",
  "GPU Instance billing: 'accurate to the second and settled hourly'; billing starts when the instance 'enters the pulling state' (image pull time is billed, boot_overhead_s unknown). Stopped GPU instances keep data up to 7 days and pay $0.005/GB/day storage; container disk has 60 GB free then $0.005/GB/day; volume disk $0.005/GB/day; network volume $0.002/GB/day. These GPU storage rates are not modelled in the card storage block (which describes the Agent Sandbox).",
  "Agent Sandbox account quota also has aggregate limits: concurrentVcpu and concurrentRamMb (docs example for a 100-instance account: 200 vCPU / 409,600 MiB). Per-tier values are not published; if the Paid tier really is 200 vCPU, 100 concurrent sandboxes only fit at <=2 vCPU each (50 x 4 vCPU, 25 x 8 vCPU).",
  "GPU Instance prices vary by cluster in the first-party market API (not on rendered pricing pages): RTX 4090 $0.67/h (spot 0.335) in the Dallas clusters vs $0.33 elsewhere; RTX 5090 'RTX 5090 32GB' SKU $0.69-0.73/h (spot 0.35-0.365) vs the $0.56 'NVIDIA GeForce RTX 5090' SKU; L40S spot $0.275 appears in CN-HK-01 only. All of these were out of stock on 2026-09-29.",
  "GPU Instance overview advertises 'free network transfer'; Agent Sandbox egress is still unpublished (network.egress_gib null)."
 ],
 "sources": [
  "https://docs.novita.ai/guides/sandbox-pricing",
  "https://docs.novita.ai/guides/sandbox-quota-limit",
  "https://docs.novita.ai/guides/sandbox-long-running",
  "https://docs.novita.ai/guides/sandbox-overview",
  "https://docs.novita.ai/guides/sandbox-volume",
  "https://docs.novita.ai/guides/sandbox-snapshot-create",
  "https://starsling.dev/hpc-sandbox-benchmarks",
  "https://novita.ai/sandbox",
  "https://blogs.novita.ai/ai-agent-sandbox-pricing-models/",
  "https://novita.ai/gpus",
  "https://api-server.novita.ai/api/v1/market/products"
 ],
 "fleet": {
  "default_max_instances": 5,
  "default_max_vcpu": null,
  "default_max_gpus": null,
  "raise": "automatic",
  "raise_time_days": null,
  "verification": "Free promotional credit requires account setup survey, no card; real balance top-up or credit line activates paid tier.",
  "tiers": "Free 5; Paid 100 after top-up; Enterprise 500 default, adjustable via support.",
  "notes": "10/50 paid self-serve; 300 Enterprise; 1,000 requires quota request. Docs say paid max session 3h while landing page says 24h (both still live 2026-10-14); long_running lifts the cap; card uses 24h. Aggregate vCPU/GPU account quotas and approval delay not stated.",
  "sources": [
   "https://docs.novita.ai/guides/sandbox-quota-limit",
   "https://docs.novita.ai/guides/sandbox-pricing",
   "https://novita.ai/sandbox"
  ],
  "researched": "2026-09-28"
 },
 "audit_2026_09_29": {
  "applied": 5,
  "source": "checked against the provider's live pricing and docs pages",
  "reviewed": 8
 },
 "feature_evidence": {
  "snapshot_auto": {
   "value": true,
   "source": "https://novita.ai/docs/guides/sandbox-overview.md",
   "quote": "On timeout or idle timeout you can choose **pause** (so the sandbox can be resumed later, optionally with auto-resume) instead of **kill**. When paused, resuming restores the sandbox to Running with its state intact",
   "note": "Opt-in per sandbox at create time (lifecycle onTimeout='pause' / autoPause with idle_timeout metadata); default is kill ('If you do not pass `lifecycle`, the sandbox is killed when the timeout expires'). Triggers: max-lifetime timeout or idle timeout (no client connected). Memory included: paused state keeps 'filesystem and memory state' incl. running processes. autoResume wakes it on SDK call / inbound HTTP.",
   "checked": "2026-09-29"
  },
  "snapshot_on_demand": {
   "value": true,
   "source": "https://novita.ai/docs/guides/sandbox-snapshot.md",
   "quote": "A snapshot is a reusable saved state of a sandbox. It captures the sandbox filesystem and memory state so you can start new sandboxes from that point later.",
   "note": "SDK sandbox.create_snapshot() / CLI `novita snapshot create <sandbox_id>` on a running sandbox (paused during capture); new sandboxes boot from it via novita.sandbox.create(snapshot_id) (fork/template). Memory included. v2 region (us-phx-1) only. Manual pause/resume also keeps memory. Legacy v1 commit/clone also exists.",
   "checked": "2026-09-29"
  },
  "own_agent_api": {
   "value": true,
   "source": "https://novita.ai/docs/guides/sandbox-cli-agent-invoke.md",
   "quote": "The CLI's `agent invoke` command sends a payload to a deployed Novita Agent and returns its response. It supports both plain-text prompts and structured JSON input, and can stream the response as it is produced.",
   "note": "Novita Agent Runtime: wrap your own agent (LangChain, LangGraph, CrewAI etc.) with @app.entrypoint, deploy with `novita agent launch`, invoke with prompt via CLI or AgentRuntimeClient.invoke_agent_runtime, streaming, 'Session Persistence: Multiple invocations to the same sandbox instance, supporting multi-turn'. Also NovitaClaw CLI deploys/manages a persistent OpenClaw agent (chat via Web UI/TUI). Claude Code and Codex are only preinstalled templates driven via generic commands.run (`claude -p`), which does not count. No first-party Claude Code/Codex session API.",
   "checked": "2026-09-29"
  },
  "harness_api": {
   "value": false,
   "source": "https://novita.ai/docs/guides/sandbox-cli-agent-invoke.md",
   "quote": "The CLI's `agent invoke` command sends a payload to a deployed Novita Agent and returns its response. It supports both plain-text prompts and structured JSON input, and can stream the response as it is produced.",
   "note": "Novita Agent Runtime: wrap your own agent (LangChain, LangGraph, CrewAI etc.) with @app.entrypoint, deploy with `novita agent launch`, invoke with prompt via CLI or AgentRuntimeClient.invoke_agent_runtime, streaming, 'Session Persistence: Multiple invocations to the same sandbox instance, supporting multi-turn'. Also NovitaClaw CLI deploys/manages a persistent OpenClaw agent (chat via Web UI/TUI). Claude Code and Codex are only preinstalled templates driven via generic commands.run (`claude -p`), which does not count. No first-party Claude Code/Codex session API.",
   "checked": "2026-09-29"
  },
  "egress_allowlist": {
   "value": true,
   "source": "https://novita.ai/docs/guides/sandbox-internet-access.md",
   "quote": "Network configuration provides finer-grained control over outbound traffic by allowing you to define allowlists and denylists.",
   "note": "network.allowOut/denyOut at create (IPs/CIDRs and domains incl. '*.github.com' in SDK example, with denyOut 0.0.0.0/0 for default-deny); allow_internet_access=False / CLI --no-internet for no-internet mode; `novita sandbox network <id>` updates egress rules of a running sandbox (CLI page lists IP/CIDR destinations only).",
   "checked": "2026-09-29",
   "level": "both"
  },
  "ingress_rules": {
   "value": true,
   "source": "https://novita.ai/docs/guides/sandbox-internet-access.md",
   "quote": "(--public-traffic makes the sandbox URL accessible without an access token)",
   "note": "Sandbox port URLs (getHost(port)) require an access token unless created with --public-traffic; maskRequestHost option; envd control API protected by 'secure access' token by default since SDK v2.0.0. No IP allowlists documented.",
   "checked": "2026-09-29"
  },
  "guest_firewall": {
   "value": true,
   "source": null,
   "quote": null,
   "note": "E2B-derived microVM (memory snapshots, virtio-mem hotplug; card says firecracker, isolation not officially documented) with root/sudo; iptables/nftables not mentioned in docs.",
   "checked": "2026-09-29",
   "derived": true
  },
  "secret_proxy": {
   "value": "any-http",
   "source": "https://novita.ai/docs/guides/sandbox-secret.md",
   "quote": "The real Secret value is never delivered into the sandbox. What the sandbox holds is an opaque placeholder; the substitution to the real value happens at the proxy layer, outside the sandbox.",
   "note": "Team-scoped Secrets with a per-secret `hosts` allow list (any hostname, '*.' wildcards); env var holds placeholder novita_secret_<hex>; substituted only in HTTPS request header values (not bodies, URL/query, plain HTTP or WebSocket messages); responses are filtered back to the placeholder. Non-HTTP (DB, SSH, git over SSH) not covered. v2 region only.",
   "checked": "2026-09-29"
  },
  "volume_attach": {
   "value": true,
   "source": "https://novita.ai/docs/guides/sandbox-volume.md",
   "quote": "A volume is a persistent storage resource that can be mounted into sandboxes to share and preserve data across sandbox lifecycles.",
   "note": "Beta, v2 region only; create with GiB/inode quota, mount at create (volume_mounts) or at runtime (mount_volume/unmount_volume). Pricing not published.",
   "checked": "2026-09-29"
  },
  "volume_shared": {
   "value": true,
   "source": "https://novita.ai/docs/guides/sandbox-volume.md",
   "quote": "Share data between multiple sandboxes.",
   "note": "Read-write. Docs also say 'You can attach the same volume to different sandboxes over time'; simultaneous multi-sandbox mounts are implied (volume carries its own auth token, network-style) but not explicitly stated. S3 bucket mounts are DIY s3fs-fuse, not first-party.",
   "checked": "2026-09-29"
  },
  "anti_bot": {
   "value": false,
   "source": "https://novita.ai/sandbox",
   "quote": "Novita Sandbox is a managed execution environment for AI agents that need to run code, use browsers, work with files, and preserve state across sessions.",
   "note": "not offered: outside the product's scope. The product is a general-purpose code/browser execution sandbox (with a browser-chromium template and BrowserUse/computer-use integrations); no stealth, fingerprint-spoofing, or anti-bot-evasion feature is documented anywhere on docs.novita.ai.",
   "checked": "2026-09-30"
  },
  "captcha_solving": {
   "value": false,
   "source": "https://novita.ai/sandbox",
   "quote": "Novita Sandbox is a managed execution environment for AI agents that need to run code, use browsers, work with files, and preserve state across sessions.",
   "note": "not offered: outside the product's scope. No CAPTCHA-solving API or integration is documented; the browser support is a plain Chromium template plus generic BrowserUse/computer-use guides.",
   "checked": "2026-09-30"
  },
  "egress_ip_type": {
   "value": "datacenter",
   "source": "https://novita.ai/docs/guides/sandbox-internet-access.md",
   "quote": "Network configuration provides finer-grained control over outbound traffic by allowing you to define allowlists and denylists.",
   "note": "Outbound traffic is controlled via IP/CIDR/domain allow-deny lists on ordinary cloud egress; no residential/mobile proxy IP product is offered or mentioned for the sandbox.",
   "checked": "2026-09-30"
  },
  "mcp_server": {
   "value": false,
   "source": "https://github.com/novitalabs/novita-mcp-server",
   "quote": "novita-mcp-server is currently in beta and only supports GPU instance management. Additional resource types will be supported in future releases.",
   "note": "Novita does ship an official MCP server, but as of this check it explicitly manages GPU Instances only (clusters, products, instances, templates, registry auth, network storage) — the Agent Sandbox product is not yet covered.",
   "checked": "2026-09-30"
  },
  "lang_node": {
   "value": true,
   "source": "https://novita.ai/docs/guides/sandbox-sdk-and-cli.md",
   "quote": "Novita Sandbox provides official SDKs for multiple programming languages... Currently supported: Python, JavaScript & TypeScript, CLI. Prerequisites: JS: Node.js 20+ ... npm i novita-sandbox",
   "note": null,
   "checked": "2026-09-30"
  },
  "egress_http_rules": {
   "value": false,
   "source": "https://novita.ai/docs/guides/sandbox-internet-access.md",
   "quote": "Deny all traffic except specific IPs. ... allowOut: ['1.1.1.1', '8.8.8.0/24'] ... allowOut: ['api.example.com', '*.github.com']",
   "note": "Egress allow/deny rules are expressed as IPs/CIDRs and hostnames/domains (network.allowOut/denyOut), not at the HTTP method/path level.",
   "checked": "2026-09-30"
  },
  "static_egress_ip": {
   "value": false,
   "source": "https://novita.ai/docs/guides/sandbox-internet-access.md",
   "quote": "Network configuration provides finer-grained control over outbound traffic by allowing you to define allowlists and denylists.",
   "note": "No fixed/dedicated outbound IP is documented for the Agent Sandbox. (For the separate GPU Instance product, the FAQ says 'Can dedicated IP be supported? ... this capability is not open to the public.', reinforcing that a static egress IP is not a shipped feature.)",
   "checked": "2026-09-30"
  },
  "self_host": {
   "value": false,
   "source": "https://novita.ai/sandbox",
   "quote": "Novita Sandbox is a managed execution environment for AI agents... It gives each agent an isolated runtime without requiring you to manage infrastructure.",
   "note": "not offered: outside the product's scope. It is a managed cloud API/console service; no on-prem or self-hosted deployment package is offered (only the client SDKs/CLI are distributed, which run against Novita's hosted API).",
   "checked": "2026-09-30"
  },
  "byoc": {
   "value": false,
   "source": "https://docs.novita.ai/guides/sandbox-pricing",
   "quote": "Enterprise ... Custom contract; all limits adjustable ... region selection, dedicated infra, 99.95% SLA.",
   "note": "Enterprise offers dedicated infrastructure and region selection within Novita's own cloud, but no bring-your-own-cloud-account deployment model is documented.",
   "checked": "2026-09-30"
  },
  "open_source": {
   "value": false,
   "source": "https://github.com/novitalabs",
   "quote": "novita-mcp-server, python-sdk, javascript-sdk, novita-cli",
   "note": "The client SDKs/CLI/MCP server are open source, but the core sandbox platform (the managed execution service itself) is closed-source; no repo published for the sandbox engine/backend.",
   "checked": "2026-09-30"
  },
  "hipaa": {
   "value": false,
   "source": "https://trust.novita.ai",
   "quote": "We are proud to be SOC 2 Type II Audited, and GDPR compliant.",
   "note": "Novita's Trust Center lists only SOC 2 Type II and GDPR under Compliance; no HIPAA eligibility or BAA is mentioned anywhere on the trust page or docs.",
   "checked": "2026-09-30"
  },
  "persistent_disk": {
   "value": true,
   "corrected_from": false,
   "source": "https://novita.ai/docs/guides/sandbox-persistence.md",
   "quote": "When a sandbox is paused: Files created in the sandbox are preserved. In-memory state is preserved, including running processes and variables. ... The sandbox remains stored until you resume and kill it, or kill it while it is paused.",
   "note": "Contradiction confirmed and resolved: files/memory survive pause (default onTimeout is kill, but pause/resume, snapshots, and volumes all persist state). Snapshot doc: 'captures the sandbox filesystem and memory state so you can start new sandboxes from that point later.' Volume doc: 'Data written to a volume outlives any single sandbox: it persists after the sandbox is killed'. Default behaviour without opting into lifecycle.onTimeout=pause is still delete-on-timeout (kill), so persistence is opt-in, but the feature exists first-party -> should be true, not false.",
   "checked": "2026-09-30"
  },
  "fork_running": {
   "value": false,
   "source": "https://docs.novita.ai/guides/sandbox-snapshot-create",
   "quote": "The sandbox is paused while the snapshot is being created.",
   "note": "The only fork-like mechanism (snapshot -> new sandbox) pauses the source sandbox during capture (code comment on the same page: 'the sandbox is paused during this'), so a running sandbox cannot be cloned without briefly stopping it. The line moved from the snapshot overview (sandbox-snapshot) to the create page. No dedicated fork/duplicate API exists in the docs. Confirms the recorded false.",
   "checked": "2026-10-14"
  },
  "auto_stop_idle": {
   "value": true,
   "corrected_from": false,
   "source": "https://novita.ai/docs/guides/sandbox-idle-timeout.md",
   "quote": "You can configure an idle timeout for your sandboxes to automatically stop or pause when no active connections are detected. ... Create a sandbox that will be automatically killed after 60 seconds of inactivity.",
   "note": "First-party idle timeout (metadata.idle_timeout, optionally combined with autoPause) auto-stops (kills) or auto-pauses a sandbox after a configured period of inactivity. It's opt-in/off by default, but the capability clearly exists, so the recorded 'false' is wrong.",
   "checked": "2026-09-30"
  },
  "public_ipv4": {
   "value": false,
   "source": "https://novita.ai/docs/guides/sandbox-ssh-access.md",
   "quote": "You can use a WebSocket proxy to connect to your sandbox via SSH. ... ssh -o 'ProxyCommand=websocat --binary -B 65536 - wss://8081-%h.sandbox.novita.ai' user@",
   "note": "Sandboxes are reached only via HTTPS hostnames (getHost(port) -> https://<port>-<id>.sandbox.novita.ai) or a websocket-proxied SSH; no public IPv4 address is ever assigned to a sandbox. Card's own network.ipv4_available is also false.",
   "checked": "2026-09-30"
  },
  "gpu": {
   "value": false,
   "source": "https://novita.ai/docs/guides/sandbox-quota-limit.md",
   "quote": "Maximum vCPU | 2 vCPU | 8 vCPU | 8 vCPU by default, adjustable | Maximum memory | 4 GiB | 8 GiB | 8 GiB by default, adjustable",
   "note": "The Agent Sandbox product (this card's primary features block) is a CPU-only microVM/container runtime -- no GPU option appears anywhere in the sandbox docs, quota table, or template builder. Novita separately sells GPU Instances (novita.ai/gpus), which this card already models as distinct alt-flagged gpu_only modes with their own features.gpu=true; that is outside the Agent Sandbox itself, so top-level gpu=false is correct for the modeled product.",
   "checked": "2026-09-30"
  },
  "windows": {
   "value": false,
   "source": "https://novita.ai/docs/guides/sandbox-template-authoring.md",
   "quote": "The template builder exposes a chainable API for defining how an image is built: choosing a base image, running commands, copying files, setting environment variables, installing packages, and cloning repositories.",
   "note": "Templates are Docker/OCI Linux images (apt/npm/pip tooling, Ubuntu base image used throughout examples); no Windows base image or OS option is offered anywhere in the docs. Windows is outside what this Linux container/microVM sandbox product is.",
   "checked": "2026-09-30"
  },
  "macos": {
   "value": false,
   "source": "https://novita.ai/docs/guides/sandbox-overview.md",
   "quote": "Novita Sandbox offers isolated, stateful execution environments designed for AI agents. It enables running code, installing dependencies, accessing files, using browsers, and preserving state across sessions without infrastructure management.",
   "note": "Product is a Linux container/microVM code-execution sandbox built from Docker/OCI images; no macOS machine offering exists anywhere in the docs (macOS is only mentioned as a client OS for installing the CLI/SSH tooling). Outside the product's scope.",
   "checked": "2026-09-30"
  },
  "arm64": {
   "value": false,
   "source": "https://novita.ai/docs/guides/sandbox-template-authoring.md",
   "quote": "To build from an image hosted in a private or cloud registry, pass credentials when selecting the base image. For a generic registry use `fromImage` / `from_image` with a username and password; dedicated helpers exist for AWS ECR, Google Container Registry, Oracle Cloud (OCI), and Huawei Cloud SWR.",
   "note": "No architecture selection (x86_64 vs arm64) is documented anywhere for sandbox templates or images; only x86_64 base images (e.g. Ubuntu) appear in every example. No evidence of an ARM sandbox option.",
   "checked": "2026-09-30"
  },
  "eu_data_residency": {
   "value": false,
   "source": "https://novita.ai/docs/guides/sandbox-overview.md",
   "quote": "| Name | Version | Domain | Description |\n| us-phx-1 | v2 | `us-phx-1.sandbox.novita.ai` | Default region (used by the current SDK / CLI) |\n| us-virginia-1 | v1 | `sandbox.novita.ai` | Specified via environment variable |",
   "note": "Agent Sandbox only runs in two US regions (us-phx-1, us-virginia-1); no EU region is offered for this product, so there's no way to keep sandbox data in the EU. (Novita's separate GPU Instance/GPU cloud product does have EU clusters (e.g. 'EU-01', 'EU-GB-01' per the GPU v2 API docs), but that's a different product from the Agent Sandbox this card models.)",
   "checked": "2026-09-30"
  },
  "private_network": {
   "value": false,
   "source": "https://novita.ai/docs/guides/sandbox-vpn-tailscale.md",
   "quote": "You can connect a Novita Sandbox to an OpenVPN network using a `.ovpn` client configuration file so the sandbox can reach private networks through the VPN tunnel. This is useful for accessing internal services, using a fixed egress path, or routing selected traffic through your own infrastructure.",
   "note": "The only ways to reach a private network are DIY VPN clients (Tailscale/OpenVPN) run inside the sandbox by the user -- not a first-party private-network/VPC feature. Novita's separate GPU Instance product does have first-party VPC networking (docs.novita.ai/api-reference/gpus-v2-create-vpc), but that's a different product from the Agent Sandbox modeled here, which has no VPC/private-network primitive of its own.",
   "checked": "2026-09-30"
  },
  "docker_inside": {
   "value": false,
   "source": "https://docs.novita.ai/guides/sandbox-legacy-e2b-compatible",
   "quote": "import { Sandbox } from 'novita-sandbox/code-interpreter' ... const sbx = await Sandbox.create()",
   "note": "Novita Sandbox's SDK/CLI is explicitly the E2B-compatible line (same class names, same `novita-sandbox` package mirroring `e2b`), and the card's own caveats say the underlying engine is an E2B-derived Firecracker-style microVM (envd, memory snapshots, virtio-mem). Across the full docs (llms-full.txt) there is no mention of Docker, dockerd, containerd, privileged mode, or cgroup/overlay setup running *inside* a sandbox — Docker only appears as the mechanism to *build* templates (`novita.Dockerfile`) on Novita's side, not as a capability exposed to the guest. E2B-style microVM guests are known not to expose nested container-runtime support out of the box, so docker-inside is judged unsupported by default; not found stated explicitly either way, hence medium confidence rather than high.",
   "checked": "2026-09-30"
  },
  "nested_virt": {
   "value": false,
   "source": "https://docs.novita.ai/guides/sandbox-overview",
   "quote": "Novita Sandbox offers isolated, stateful execution environments designed for AI agents. It enables running code, installing dependencies, accessing files, using browsers, and preserving state across sessions without infrastructure management.",
   "note": "No mention anywhere in the docs (guides, CLI reference, template-authoring, quota-limit) of /dev/kvm, nested virtualization, or running VMs/emulators inside a sandbox. The product (card isolation: firecracker) is itself a microVM guest; Firecracker microVMs standardly do not expose /dev/kvm or nested-virtualization capability to their own guest kernel. Not explicitly documented either way, so judged false with medium confidence based on the platform's architecture.",
   "checked": "2026-09-30"
  },
  "max_session_h": {
   "value": 24,
   "source": "https://novita.ai/sandbox",
   "quote": "24 hours max session length",
   "note": "Paid tier on the landing page. Conflicts with the docs quota table (docs.novita.ai/guides/sandbox-quota-limit): 'Maximum session duration | 1 hour | 3 hours | 4 hours by default, adjustable'. sandbox-long-running: 'Long-running mode lifts this cap', no ceiling stated, longest example 7 days. Kept at 24 (landing; long_running permits longer).",
   "checked": "2026-10-14"
  },
  "isolation": {
   "value": "firecracker",
   "source": "https://starsling.dev/hpc-sandbox-benchmarks",
   "quote": "firecracker",
   "note": "Third-party measurement (StarSling Observed environments table, Isolation and Virtualization rows for Novita), not a Novita claim. docs.novita.ai/guides/sandbox-overview names no technology: 'Each has its own filesystem and runtime'.",
   "checked": "2026-10-14",
   "derived": true
  },
  "usage_api": {
   "value": false,
   "source": "https://docs.novita.ai/guides/sandbox-pricing",
   "quote": "No programmatic usage endpoint found. Billing visible only through account dashboard and invoices; pricing shows on-demand and GPU rates but no per-sandbox usage API documented.",
   "note": "granularity: account-only; cost: no; Novita provides comprehensive SDK/CLI for sandbox management and pricing details, but no REST API or SDK method to retrieve per-sandbox billable usage (vCPU-seconds, GB-seconds, costs). Users track consumption via console billing dashboard and monthly invoices. The audit of docs.novita.ai covering sandbox-pricing, quota-limit, and SDK references found no usage endpoint, billing API, or cost-breakdown mechanism.",
   "confidence": "high",
   "checked": "2026-10-01"
  }
 },
 "locations": [
  {
   "country": "US",
   "state": "AZ",
   "city": "Phoenix",
   "provider_region": "us-phx-1",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "US",
   "state": "VA",
   "city": "Ashburn",
   "provider_region": "us-virginia-1",
   "self_serve": true,
   "choosable": true
  }
 ],
 "locations_source": "https://docs.novita.ai/guides/sandbox-overview",
 "locations_quote": "us-phx-1 (v2, Default region) | us-virginia-1 (v1, Specified via environment variable)",
 "locations_checked": "2026-10-14"
}