{
 "features_resolved": {
  "snapshot_any": true,
  "snapshot_mem": false,
  "fork": false,
  "pause_resume": true,
  "persistent_disk": true,
  "whole_disk": true,
  "persist_scope": null,
  "volumes": false,
  "auto_stop_idle": true,
  "long_sessions": true,
  "custom_image": true,
  "image_snapshot": true,
  "image_oci": false,
  "vm_isolation": true,
  "docker_inside": true,
  "nested_virt": false,
  "root": true,
  "systemd": false,
  "browser": false,
  "desktop": false,
  "computer_use": false,
  "code_interpreter": false,
  "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": 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": true,
  "sso": true,
  "gpu": false,
  "arm64": false,
  "windows": false,
  "macos": false,
  "lang_python": true,
  "lang_node": true,
  "lang_go": true,
  "lang_rust": true,
  "lang_java": true,
  "gpu_desktop": false,
  "credential_injection": true,
  "egress_http_rules": true,
  "wake_on_request": true,
  "live_resize": false,
  "fork_running": false,
  "memory_snapshot_fork": false,
  "webhooks": false,
  "scheduled_wakeups": null,
  "audit_logs": null,
  "eu_data_residency": false,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": null,
  "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": true,
  "guest_firewall": true,
  "secret_proxy": true,
  "secret_proxy_any": true,
  "volume_attach": false,
  "volume_shared": false,
  "sidecar": null,
  "fuse": true,
  "kernel_features": true,
  "burst": null
 },
 "company": {
  "id": "sprites",
  "checked": "2026-09-30",
  "company": "Fly.io (Superfly, Inc.)",
  "ownership": {
   "value": "independent",
   "parent": null,
   "source": "https://techcrunch.com/2022/07/28/fly-io-wants-to-change-the-way-companies-deploy-apps-at-the-edge/",
   "quote": "The company launched in 2017 and it has spent a great deal of time refining the process of deploying the hardware where it's needed"
  },
  "stage": {
   "value": "series-c",
   "source": "https://fly.io/blog/we-raised-a-bunch-of-money/",
   "quote": "This past July, we raised $25MM from A16Z and our existing investors, including Intel Capital and Dell. Recently, we raised an additional $70MM led by EQT Ventures.",
   "confidence": "medium",
   "note": "Fly.io's own posts never label the rounds Series A/B/C explicitly beyond the $12M (Aug 2021, Intel Capital-led) and $25M (closed June 2022, a16z-led) rounds reported by TechCrunch as 'Series A' and 'Series B'. The $70MM EQT Ventures-led round (announced 2023-06-27) is the next priced round after that Series B and is treated here as the de facto Series C/last round; no public round-name confirmation found."
  },
  "accelerators": [
   {
    "name": "Y Combinator",
    "batch": "Winter 2020",
    "source": "https://www.ycombinator.com/companies/fly-io",
    "quote": "Y Combinator Logo Winter 2020 Active Infrastructure Company",
    "confidence": "high",
    "via": "research"
   }
  ],
  "total_funding_usd": {
   "value": 107000000,
   "status": "confirmed",
   "basis": "Sum of confirmed rounds: $12M (Series A, Aug 2021) + $25M (Series B, closed June 2022) + $70M (EQT Ventures-led round, announced June 2023), all stated directly by the company/TechCrunch.",
   "source": "https://fly.io/blog/we-raised-a-bunch-of-money/",
   "quote": "This past July, we raised $25MM from A16Z and our existing investors, including Intel Capital and Dell. Recently, we raised an additional $70MM led by EQT Ventures."
  },
  "last_round": {
   "type": "series-c",
   "amount_usd": 70000000,
   "date": "2023-06",
   "leads": [
    "EQT Ventures"
   ],
   "status": "confirmed",
   "source": "https://fly.io/blog/we-raised-a-bunch-of-money/",
   "quote": "Recently, we raised an additional $70MM led by EQT Ventures."
  },
  "investors": [
   "Andreessen Horowitz",
   "EQT Ventures",
   "Intel Capital",
   "Dell Technologies Capital",
   "Initialized Capital",
   "Sam Lambert (PlanetScale CEO, angel)"
  ],
  "portfolio_listings": [
   {
    "source": "Initialized Capital",
    "company": "Fly.io",
    "batch": null,
    "how": "domain"
   }
  ],
  "revenue": {
   "value": null,
   "status": "unknown"
  },
  "employees": {
   "value": 35,
   "source": "https://techcrunch.com/2022/07/28/fly-io-wants-to-change-the-way-companies-deploy-apps-at-the-edge/"
  },
  "note": "Fly.io (maker of 'Sprites') was founded 2017 by Kurt Mackey (previously founder of MongoHQ/Compose, sold to IBM in 2015) and went through Y Combinator Winter 2020. Confirmed rounds: $12M Series A (Aug 2021, led by Intel Capital), $25M Series B (closed June 2022, led by Andreessen Horowitz with Intel Capital, Dell Technologies Capital, Initialized Capital and Sam Lambert), and $70M (announced June 2023, led by EQT Ventures) — total $107M confirmed. No later financing round, acquisition, or revenue/ARR disclosure was found as of 2026-09-30; company remains independent and privately held."
 },
 "id": "sprites",
 "name": "Sprites (Fly.io)",
 "url": "https://fly.io/pricing",
 "category": "agent-sandbox",
 "isolation": "firecracker",
 "modes": [
  {
   "key": "on-demand",
   "label": "Sprite, billed on actual CPU time + actual memory while awake",
   "flags": [],
   "os": [
    "linux"
   ],
   "regions": null,
   "gpu_only": false,
   "features": {
    "isolation": "firecracker"
   },
   "pricing": "resource",
   "vcpu_h": 0.0385,
   "ram_gib_h": 0.021875,
   "cpu_basis": "active",
   "ram_basis": "active",
   "active_floor": 0,
   "ram_per_vcpu": [
    null,
    null
   ],
   "ram_fixed_per_vcpu": null,
   "vcpu_options": null,
   "min_vcpu": null,
   "max_vcpu": 8,
   "max_ram_gib": 16,
   "sizes": null,
   "pool_tiers": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "commit_note": null,
   "min_billed_seconds": 0,
   "granularity_s": null,
   "start_fee": 0,
   "boot_overhead_s": null,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "disk_gib_h_running": 0.000683,
   "note": "Every Sprite has 8 vCPU; CPU billed on cumulative cpu.stat CPU time, memory on actual usage (platform-managed; starts at 2 GB and autoscales up to 16 GB per the 2026-03-25 release note). Hot storage $0.000683/GB-h on bytes written only while awake (extra key disk_gib_h_running). Warm (~30 s idle) and cold states bill no CPU/RAM/hot storage. Granularity: 'metered per hour of active use', exact rounding unpublished. Region not selectable. [rates verified 2026-10-14] fly.io/pricing: CPU time \"Cumulative CPU usage measured by cpu.stat\" \"$0.0385 / CPU-hour\"; Memory time \"Actual memory usage\" \"$0.021875 / GB-hour\"; fly.io/sprites FAQ: \"CPU at $0.0385/CPU-hour, RAM at $0.021875/GB-hour, and hot storage at $0.000683/GB-hour\". \"Sprites have three states: running (billed), warm (not billed), and cold (not billed)\"; idle window ~30 s (docs.fly.io/sprites/concepts/lifecycle). No minimum/floor published. Whether page cache counts in \"actual memory usage\" is not stated (likely cgroup memory, which includes cache - unverified); \"billed hourly\" rounding unpublished."
  }
 ],
 "storage": {
  "included_disk_gib": 0,
  "disk_gib_month": 0.02,
  "disk_billed_when_stopped": true,
  "snapshot_gib_month": 0.02,
  "paused_ram_billed": false
 },
 "network": {
  "egress_free_gib": null,
  "egress_gib": 0,
  "ipv4_month": null,
  "ipv4_available": false,
  "internet": {
   "default": "configurable",
   "evidence": [
    {
     "quote": "By default, a Sprite's outbound is unrestricted: it can resolve and reach any domain.",
     "url": "https://docs.fly.io/sprites/concepts/networking.md"
    },
    {
     "quote": "pulls in the common development domains, GitHub, npm, PyPI, Docker Hub, and the major AI APIs among them",
     "url": "https://docs.fly.io/sprites/concepts/networking.md"
    },
    {
     "quote": "A Sprite URL is private by default. It's reachable only by members of your org",
     "url": "https://docs.fly.io/sprites/concepts/networking.md"
    }
   ]
  }
 },
 "plans": [
  {
   "name": "Pay-as-you-go",
   "fee": 0,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": null,
   "max_session_h": null,
   "max_vcpu": 8,
   "max_ram_gib": 16,
   "sizes_allowed": null,
   "create_per_min": 10,
   "note": "Default. No plan fee. Running-concurrency cap not published. 10 creates/min. Community support."
  },
  {
   "name": "Adventurer",
   "fee": 20,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": 20,
   "max_session_h": null,
   "max_vcpu": 8,
   "max_ram_gib": 16,
   "sizes_allowed": null,
   "included_cpu_h": 450,
   "included_ram_gib_h": 1800,
   "included_storage_gib_month": 50,
   "max_warm": 20,
   "create_per_min": 60,
   "note": "Optional plan: $20/mo buys 450 CPU-h + 1800 RAM GB-h + 50 GB storage (not fungible); included_usd 0: the allowance is per-resource buckets (included_cpu_h / included_ram_gib_h / included_storage_gib_month), not a fungible $ credit. Overage at standard rates. 20 running + 20 warm Sprites. Tier figures from 2026-01-16 community announcement; names still on the current FAQ."
  },
  {
   "name": "Veteran",
   "fee": 50,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": 50,
   "max_session_h": null,
   "max_vcpu": 8,
   "max_ram_gib": 16,
   "sizes_allowed": null,
   "included_cpu_h": 800,
   "included_ram_gib_h": 3200,
   "included_storage_gib_month": 100,
   "max_warm": 50,
   "create_per_min": null,
   "note": "Optional plan: $50/mo buys 800 CPU-h + 3200 RAM GB-h + 100 GB storage (not fungible); included_usd 0: the allowance is per-resource buckets (included_cpu_h / included_ram_gib_h / included_storage_gib_month), not a fungible $ credit. Overage at standard rates. 50 running + 50 warm Sprites. Tier figures from 2026-01-16 community announcement; names still on the current FAQ."
  },
  {
   "name": "Hero",
   "fee": 100,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": 100,
   "max_session_h": null,
   "max_vcpu": 8,
   "max_ram_gib": 16,
   "sizes_allowed": null,
   "included_cpu_h": 1200,
   "included_ram_gib_h": 4800,
   "included_storage_gib_month": 150,
   "max_warm": 100,
   "create_per_min": null,
   "note": "Optional plan: $100/mo buys 1200 CPU-h + 4800 RAM GB-h + 150 GB storage (not fungible); included_usd 0: the allowance is per-resource buckets (included_cpu_h / included_ram_gib_h / included_storage_gib_month), not a fungible $ credit. Overage at standard rates. 100 running + 100 warm Sprites. Hero confirmed current (FAQ + 2026-09-09 Fly article)."
  },
  {
   "name": "Champion",
   "fee": 200,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": 200,
   "max_session_h": null,
   "max_vcpu": 8,
   "max_ram_gib": 16,
   "sizes_allowed": null,
   "included_cpu_h": 1800,
   "included_ram_gib_h": 7200,
   "included_storage_gib_month": 225,
   "max_warm": 200,
   "create_per_min": null,
   "note": "Optional plan: $200/mo buys 1800 CPU-h + 7200 RAM GB-h + 225 GB storage (not fungible); included_usd 0: the allowance is per-resource buckets (included_cpu_h / included_ram_gib_h / included_storage_gib_month), not a fungible $ credit. Overage at standard rates. 200 running + 200 warm Sprites. Tier figures from 2026-01-16 community announcement; names still on the current FAQ."
  },
  {
   "name": "Legend",
   "fee": 500,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": 500,
   "max_session_h": null,
   "max_vcpu": 8,
   "max_ram_gib": 16,
   "sizes_allowed": null,
   "included_cpu_h": 3200,
   "included_ram_gib_h": 12500,
   "included_storage_gib_month": 400,
   "max_warm": 500,
   "create_per_min": null,
   "note": "Optional plan: $500/mo buys 3200 CPU-h + 12500 RAM GB-h + 400 GB storage (not fungible); included_usd 0: the allowance is per-resource buckets (included_cpu_h / included_ram_gib_h / included_storage_gib_month), not a fungible $ credit. Overage at standard rates. 500 running + 500 warm Sprites. Tier figures from 2026-01-16 community announcement; names still on the current FAQ."
  },
  {
   "name": "Epic",
   "fee": 1000,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": 1000,
   "max_session_h": null,
   "max_vcpu": 8,
   "max_ram_gib": 16,
   "sizes_allowed": null,
   "included_cpu_h": 4800,
   "included_ram_gib_h": 18750,
   "included_storage_gib_month": 600,
   "max_warm": 1000,
   "create_per_min": null,
   "note": "Optional plan: $1000/mo buys 4800 CPU-h + 18750 RAM GB-h + 600 GB storage (not fungible); included_usd 0: the allowance is per-resource buckets (included_cpu_h / included_ram_gib_h / included_storage_gib_month), not a fungible $ credit. Overage at standard rates. 1000 running + 1000 warm Sprites. Tier figures from 2026-01-16 community announcement; names still on the current FAQ."
  },
  {
   "name": "Mythic",
   "fee": 2000,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": 2000,
   "max_session_h": null,
   "max_vcpu": 8,
   "max_ram_gib": 16,
   "sizes_allowed": null,
   "included_cpu_h": 7200,
   "included_ram_gib_h": 28000,
   "included_storage_gib_month": 900,
   "max_warm": 2000,
   "create_per_min": 240,
   "note": "Optional plan: $2000/mo buys 7200 CPU-h + 28000 RAM GB-h + 900 GB storage (not fungible); included_usd 0: the allowance is per-resource buckets (included_cpu_h / included_ram_gib_h / included_storage_gib_month), not a fungible $ credit. Overage at standard rates. 2000 running + 2000 warm Sprites. Tier figures from 2026-01-16 community announcement; names still on the current FAQ."
  },
  {
   "name": "Guild",
   "fee": null,
   "flags": [
    "sales"
   ],
   "fee_is_credit": null,
   "included_usd": null,
   "per_seat": null,
   "concurrency": null,
   "max_session_h": null,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes_allowed": null,
   "note": "Custom limits/allowances, contact sales."
  }
 ],
 "extras": [],
 "free": {
  "monthly_credit": 0,
  "one_time_credit": 30
 },
 "features": {
  "linux": true,
  "windows": false,
  "macos": false,
  "arm64": false,
  "gpu": false,
  "gpu_types": [],
  "snapshot": "fs",
  "pause_resume": true,
  "fork": false,
  "persistent_disk": true,
  "volumes": false,
  "auto_stop_idle": true,
  "max_session_h": null,
  "custom_image": false,
  "docker_inside": true,
  "nested_virt": false,
  "root": true,
  "systemd": false,
  "browser": false,
  "desktop": false,
  "computer_use": false,
  "code_interpreter": false,
  "agent_harnesses": true,
  "ssh": false,
  "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": null,
  "soc2": true,
  "hipaa": true,
  "sso": true,
  "lang_python": true,
  "lang_node": true,
  "lang_go": true,
  "lang_rust": true,
  "lang_java": true,
  "gpu_desktop": false,
  "credential_injection": true,
  "egress_http_rules": true,
  "wake_on_request": true,
  "live_resize": false,
  "fork_running": false,
  "memory_snapshot_fork": false,
  "webhooks": false,
  "scheduled_wakeups": null,
  "audit_logs": null,
  "eu_data_residency": false,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": null,
  "mcp_server": true,
  "isolation": "firecracker",
  "image_oci": false,
  "snapshot_auto": true,
  "snapshot_on_demand": true,
  "harness_api": false,
  "egress_allowlist_level": "domain",
  "ingress_rules": true,
  "secret_proxy": "any-http",
  "volume_attach": false,
  "volume_shared": false,
  "anti_bot": false,
  "captcha_solving": false,
  "own_agent_api": false,
  "max_session_unlimited": true,
  "egress_ip_type": "datacenter",
  "open_internet": true,
  "usage_api": false
 },
 "perf": {
  "cpu_runs_s": null,
  "cold_start_ms": null,
  "burst_tti_ms": null,
  "dax_s": null
 },
 "perf_source": "Sprites is configured in ComputeSDK providers.ts but has no committed result; no HPC result.",
 "knobs": [
  {
   "id": "awake_share",
   "label": "Share of session the Sprite is awake (not warm/cold)",
   "kind": "slider",
   "min": 0.05,
   "max": 1,
   "step": 0.05,
   "default": 1,
   "unit": "%",
   "options": null,
   "effect": "hours_factor",
   "modes": [
    "on-demand"
   ],
   "why": "A Sprite goes warm ~30 s after last activity; warm and cold states bill no CPU, RAM or hot storage (cold storage continues). Anything that keeps it awake (open TCP connection to its URL, stdout output, a held Tasks API call) keeps RAM billing. Default 1 = awake the whole session.",
   "source": "https://docs.fly.io/sprites/concepts/lifecycle/"
  }
 ],
 "caveats": [
  "Pricing section says 'No plans and no tiers' while the FAQ on the same page (and Fly's 2026-09-09 article) describe optional plans; Hero $100 is confirmed current. Other tier prices/allowances come from the 2026-01-16 community post; the 2026-01-22 release note listed a different set (Recruit free, Adventurer $20, Legend $200, Mythic $2,000).",
  "Plan fee is NOT credit: it buys per-resource unit allowances (CPU-h, RAM GB-h, storage GB-month) that are not fungible (Fly staff post 2026-01-16: \"Usage beyond included amounts is billed at standard usage-based rates\"). Encoded as included_cpu_h / included_ram_gib_h / included_storage_gib_month on each plan with included_usd 0, so the engine (which only knows a fungible included_usd) never credits unused CPU hours against RAM overage; until the engine consumes the buckets, plans are never auto-picked over PAYG and the PAYG price is an upper bound for heavy users. Fly account credits cannot pay plan fees.",
  "Storage: disk_gib_month 0.02 is COLD storage on all bytes written, billed for as long as kept (including while awake). HOT storage $0.000683/GB-h ($0.50/GB-mo) additionally bills on the awake working set (mode key disk_gib_h_running). Checkpoint storage not priced separately; snapshot_gib_month 0.02 assumes checkpoints are billed as cold storage (unverified).",
  "Memory is billed on actual usage; the engine's ram_util drives the bill. Release note 2026-03-25: \"Sprites now start with 2 GB of memory and can autoscale up to 16 GB based on demand\"; the lifecycle page publishes no figure (\"A Sprite doesn't run with one published RAM figure.\"). max_ram_gib 16 is that autoscale ceiling, not a reservable size (a Jan 2026 support reply had said 16 GB was 'not available yet').",
  "Fixed shape: 8 vCPU, 100 GB filesystem ceiling, one managed Ubuntu image (no custom image), no region selection, no public IPv4/SSH.",
  "Rates history: 2025-12-30 RAM $0.011/GB-h, CPU $0.07/CPU-h and storage $0.10/GB-mo; later CPU $0.07 and RAM $0.04375; from 2026-10-01 CPU $0.0385/CPU-h (the 2026-09 pricing-update notice said $0.03825) and RAM $0.021875/GB-h (checked on fly.io/pricing 2026-10-14). Plan allowances are unit buckets, so their dollar value roughly halved with the cut.",
  "PAYG running-concurrency cap unpublished (concurrency null). Limits return errors, never extra charges.",
  "Egress/bandwidth not metered today (egress_gib 0).",
  "No benchmark data in benchmarks.json (perf null); docs claim warm resume 100-500 ms, cold wake 1-2 s.",
  "Docker runs inside a Sprite, but a 2026-05-26 community report shows \"docker exec will fail for any container whose PID 1 is non-root\" (Postgres, Redis, node images) because the capability bounding set is restricted to 16 of 41 Linux capabilities; --cap-add SYS_PTRACE/IPC_LOCK also fail. No systemd: services run via the Sprites services API (https://community.fly.io/t/27956, https://docs.fly.io/sprites/concepts/services.md)."
 ],
 "sources": [
  "https://fly.io/pricing",
  "https://fly.io/sprites",
  "https://docs.fly.io/sprites/concepts/lifecycle/",
  "https://docs.fly.io/sprites/concepts/checkpoints",
  "https://fly.io/sprites/release-notes",
  "https://community.fly.io/t/more-sprites-plans/26857",
  "https://community.fly.io/t/more-ram-in-sprites/26921",
  "https://fly.io/learn/ai-sandbox-pricing/",
  "https://docs.fly.io/sprites/concepts/services.md",
  "https://docs.fly.io/sprites/working-with-sprites.md",
  "https://community.fly.io/t/27956"
 ],
 "fleet": {
  "default_max_instances": null,
  "default_max_vcpu": null,
  "default_max_gpus": null,
  "raise": "self-serve",
  "raise_time_days": null,
  "verification": null,
  "tiers": "Official current FAQ confirms Hero 100 running plus 100 warm sprites/org, cold unlimited; higher plans raise ceilings. PAYG creates 10/min; Adventurer 60/min to Mythic 240/min.",
  "notes": "PAYG simultaneous-running default unpublished. Pricing says no plans/tiers elsewhere while FAQ describes optional plans; historic community ladders are not treated as verified current entitlements. 300/1,000 account entitlement/approval needs confirmation, not inferred from creation rate.",
  "sources": [
   "https://fly.io/sprites",
   "https://fly.io/learn/ai-sandbox-pricing/"
  ],
  "researched": "2026-09-28"
 },
 "audit_2026_09_29": {
  "applied": 3,
  "source": "checked against the provider's live pricing and docs pages",
  "reviewed": 1
 },
 "feature_evidence": {
  "snapshot_auto": {
   "value": true,
   "source": "https://docs.fly.io/sprites/concepts/lifecycle.md",
   "quote": "The VM is suspended with everything in memory frozen in place. Compute billing stops. The next request resumes it in 100–500ms, and processes pick up mid-thought, exactly where they were.",
   "note": "Trigger: ~30 s idle -> 'warm' (memory+processes frozen, automatic resume on request/exec). Longer idle -> 'cold' (memory dropped, disk only; processes restart, Services auto-restart). User cannot choose or observe warm vs cold. Separately the platform takes automatic background filesystem checkpoints ('auto-' IDs, pruned over time; docs.fly.io/sprites/concepts/checkpoints: \"the platform creates its own in the background as you work\"). Filesystem is also continuously synced to object storage.",
   "checked": "2026-09-29"
  },
  "snapshot_on_demand": {
   "value": true,
   "source": "https://docs.fly.io/sprites/concepts/checkpoints.md",
   "quote": "A checkpoint snapshots the writable filesystem overlay: everything you've added on top of the base image. It does not touch the base image itself, and it does not capture anything that only lives in memory.",
   "note": "Filesystem only, no memory. Via CLI (sprite checkpoint create), REST API (POST /v1/sprites/{name}/checkpoint) or from inside (sprite-env / /.sprite/api.sock). Copy-on-write, non-interrupting, sequential v0..vN with comments; last 5 mounted read-only at /.sprite/checkpoints/. Restore is in place only (destructive); the public API has no create-from-checkpoint. Release notes (2026-04-02) mention a 'Fork a Sprite' by timestamp for 'Admins' on the 'admin sprite page' - appears to be operator/admin tooling, not in the public API/CLI docs.",
   "checked": "2026-09-29"
  },
  "harness_api": {
   "value": false,
   "source": "https://docs.fly.io/sprites/api/openapi.json",
   "quote": null,
   "note": "Public API surface is sprites, checkpoints, exec, fs, policies, services, connectors - no endpoint to start/prompt/stream/resume an agent harness. Claude Code, Gemini CLI, Codex, Cursor are preinstalled (agent_harnesses) and Sprites act as a sandbox backend for third-party harnesses (Claude Managed Agents self-hosted environment, Cursor Cloud Agents, OpenAI Agents SDK, Google ADK adapters, remote MCP server), but the harness is driven by those vendors' APIs, not a Sprites harness API. Tasks API (in-VM) only keeps the Sprite awake.",
   "checked": "2026-09-29"
  },
  "egress_allowlist": {
   "value": true,
   "source": "https://docs.fly.io/sprites/concepts/networking.md",
   "quote": "Egress can be tightened with a **network policy**, a DNS-based allowlist that decides which domains a Sprite is allowed to reach. Applying one is opt-in and done from outside the Sprite.",
   "note": "Per-Sprite allow/deny domain rules incl. wildcards and a 'defaults' preset; raw IP connections blocked unless resolved from an allowed domain; private IPs always blocked; live reload drops existing connections; read-only inside the Sprite (\"a Sprite can't rewrite its own egress rules\"). No IP/CIDR rules in the NetworkPolicyRule schema (domain/action/include only). Default is unrestricted.",
   "checked": "2026-09-29",
   "level": "domain"
  },
  "egress_http_rules": {
   "value": true,
   "source": "https://docs.fly.io/sprites/concepts/connectors.md",
   "quote": "The access policy can also restrict which provider paths a Sprite can reach through the connector.",
   "note": "Only for traffic sent through the Connectors gateway: per-connector allowed_endpoints / blocked_endpoints path patterns (exact or trailing-* prefix; block wins), API-only. No method/header rules and no HTTP-level rules for general (non-connector) egress, which is DNS-level only.",
   "checked": "2026-09-29"
  },
  "ingress_rules": {
   "value": true,
   "source": "https://docs.fly.io/sprites/concepts/networking.md",
   "quote": "A Sprite URL is private by default. It's reachable only by members of your org, through the browser or with an org token",
   "note": "url_settings.auth sprite|public, plus private_access admins|organization (API). URL routes to one chosen HTTP port (service --http-port); other ports only via authenticated 'sprite proxy' / WebSocket TCP proxy. No IP allowlists, no public IPv4, no raw TCP inbound.",
   "checked": "2026-09-29"
  },
  "secret_proxy": {
   "value": "any-http",
   "source": "https://docs.fly.io/sprites/concepts/connectors.md",
   "quote": "**Custom API** is the fallback for anything without a dedicated connector: give it a base URL, a token, and where the token goes, and it wraps any token-authenticated HTTP API.",
   "note": "Connectors: credential stored encrypted in the org, Sprite calls https://api.sprites.dev/v1/gateway/<provider>/<connection_id>/<path> with no Authorization header (identity from Fly request signature); \"Sprites never see the token.\" Not transparent: the agent must call the gateway URL (preinstalled sprite-api-gateway skill for Claude Code/Cursor/Codex/Gemini). OAuth (GitHub), BYOK and managed (OpenRouter) credentials; deny-by-default per-Sprite access by name prefix/labels. Header/query/path token placement. HTTP only; no DB/SSH/git-protocol coverage documented.",
   "checked": "2026-09-29"
  },
  "volume_attach": {
   "value": false,
   "source": "https://docs.fly.io/sprites/concepts/lifecycle.md",
   "quote": "Every Sprite starts with 100 GB of storage. It does not autoscale yet, so plan around that ceiling.",
   "note": "Single fixed 100 GB ext4 filesystem per Sprite; no volume endpoints in the OpenAPI and no attach option on create. (Fly Machines have volumes, but not Sprites.)",
   "checked": "2026-09-29"
  },
  "volume_shared": {
   "value": false,
   "source": "https://docs.fly.io/sprites/concepts/lifecycle.md",
   "quote": "It is not an object-storage shim or a network filesystem.",
   "note": "Per-Sprite filesystem only; no shared volume or bucket mount documented (SSHFS from a laptop is DIY).",
   "checked": "2026-09-29"
  },
  "docker_inside": {
   "value": true,
   "source": "https://community.fly.io/t/27956",
   "quote": "Within sprites, running docker exec will fail for any container whose PID 1 is non-root.",
   "note": "Confirms Docker 29.1.3 runs inside a Sprite (overlay2, cgroup v2; a /.sprite/docs/docker.md guide ships in the image) and docker exec works when the container's PID 1 is root. Known limitation: restricted capability bounding set (16 of 41) breaks docker exec into images that drop to non-root (Postgres, Redis, node, Elasticsearch) and blocks --cap-add SYS_PTRACE / IPC_LOCK, even with --privileged. Community report, not an official doc statement.",
   "checked": "2026-10-14"
  },
  "nested_virt": {
   "value": false,
   "source": "https://docs.fly.io/security/security-at-fly-io.md",
   "quote": "Compute jobs at Fly.io are virtualized using Firecracker, the virtualization engine developed at AWS as the engine for Lambda and Fargate.",
   "note": "Not explicitly stated either way. Firecracker microVMs do not pass /dev/kvm through to the guest by default, and no Sprites doc (quickstart, lifecycle, networking, privileges-policy API) mentions KVM, nested virtualization, or running VMs/emulators inside a Sprite. Treated as not offered by default; derived from the Firecracker architecture, not a direct statement.",
   "checked": "2026-09-30"
  },
  "browser": {
   "value": false,
   "source": "https://docs.fly.io/sprites/index.md",
   "quote": "Sprites are persistent, hardware-isolated Linux environments for running arbitrary code. It's like having a small, stateful computer you can spin up on demand.",
   "note": "not offered: outside the product's scope. Sprites is a general-purpose persistent Linux sandbox (AI code execution, dev environments, CI/CD); no managed/preinstalled browser or browser-automation product is documented anywhere in the Sprites docs, quickstart, or integrations pages.",
   "checked": "2026-09-30"
  },
  "anti_bot": {
   "value": false,
   "source": "https://docs.fly.io/sprites/index.md",
   "quote": "Sprites are persistent, hardware-isolated Linux environments for running arbitrary code.",
   "note": "not offered: outside the product's scope. Sprites has no browser product at all, so stealth/anti-fingerprinting against bot detection does not apply.",
   "checked": "2026-09-30"
  },
  "captcha_solving": {
   "value": false,
   "source": "https://docs.fly.io/sprites/index.md",
   "quote": "Sprites are persistent, hardware-isolated Linux environments for running arbitrary code.",
   "note": "not offered: outside the product's scope. No CAPTCHA-solving capability is documented; Sprites is a generic compute sandbox, not a browser/scraping product.",
   "checked": "2026-09-30"
  },
  "live_resize": {
   "value": false,
   "source": "https://docs.fly.io/sprites/concepts/lifecycle.md",
   "quote": "You don't set or resize these yourself. The vCPU count and the storage ceiling are fixed; memory is handled automatically.",
   "note": "vCPU (8) and disk (100 GB) are fixed and not user-resizable; memory autoscales automatically under platform control, not via a user-triggered live-resize API/CLI call.",
   "checked": "2026-09-30"
  },
  "own_agent_api": {
   "value": false,
   "source": "https://docs.fly.io/sprites/index.md",
   "quote": "Sprites are persistent, hardware-isolated Linux environments for running arbitrary code.",
   "note": "not offered: outside the product's scope. Sprites is sandbox infrastructure that third-party coding/browser/computer-use agents (Claude Code, Claude Managed Agents, Cursor Cloud Agents, Codex, Gemini CLI) run inside; there is no first-party Fly/Sprites task agent, and the public API (openapi.json) has no endpoint to prompt/drive an own agent.",
   "checked": "2026-09-30"
  },
  "static_egress_ip": {
   "value": false,
   "source": "https://docs.fly.io/sprites/concepts/networking.md",
   "quote": "Egress can be tightened with a network policy, a DNS-based allowlist that decides which domains a Sprite is allowed to reach.",
   "note": "Egress control is domain/DNS-based, not IP-based, and no fixed/static outbound IP is documented or offered anywhere in the Sprites docs (unlike, e.g., a dedicated public IPv4 which the card already marks false/unavailable).",
   "checked": "2026-09-30"
  },
  "sso": {
   "value": true,
   "source": "https://docs.fly.io/security/sso.md",
   "quote": "Fly.io supports Google and GitHub as Identity Providers, and you can use one or both. ... You can, and usually should, require members of your organizations to use SSO.",
   "note": "Org-level SSO via Google (OIDC) or GitHub, configured under org Settings > Single Sign On; applies to the Fly.io organization that owns and manages Sprites. Not SAML-based; Google/GitHub OIDC/OAuth only.",
   "checked": "2026-09-30"
  },
  "eu_data_residency": {
   "value": false,
   "source": "https://docs.fly.io/sprites/concepts/lifecycle.md",
   "quote": "You don't set or resize these yourself. The vCPU count and the storage ceiling are fixed; memory is handled automatically.",
   "note": "Region is not mentioned or selectable anywhere in the Sprites docs (quickstart, lifecycle, networking, index, maintenance) or on fly.io/sprites, unlike Fly Machines which documents an explicit multi-region list (docs.fly.io/reference/regions). No path to choose or guarantee an EU region for a Sprite was found; derived absence, not a direct statement.",
   "checked": "2026-09-30"
  },
  "max_session_h": {
   "value": "none",
   "source": "https://docs.fly.io/sprites/sprite-maintenance.md",
   "quote": "Sprites are persistent. Everything you leave is there when you come back, including the software. Long-living Sprites still need regular updates.",
   "note": "No documented maximum duration for a running/active session; Sprites are designed to be long-lived and are only paused by idle detection (~30 s to warm), not by an elapsed-time cap. No forced stop-after-N-hours is mentioned in lifecycle, quickstart, or the plans/pricing docs.",
   "checked": "2026-09-30"
  },
  "fork": {
   "value": false,
   "source": "https://docs.fly.io/sprites/concepts/checkpoints.md",
   "quote": "Restoring replaces the writable overlay with the saved state and restarts the environment. The base image is untouched.",
   "note": "Restore is in-place/destructive on the same Sprite, not a clone into a new Sprite; the public API/CLI (checkpoints, exec, fs, policies, services, connectors per openapi.json) has no create-Sprite-from-checkpoint or clone endpoint. A 2026-04-02 release note mentions a 'Fork a Sprite' feature on an admin sprite page for 'Admins', but that's operator tooling absent from the public docs/API, not a customer-facing fork.",
   "checked": "2026-09-30"
  },
  "fork_running": {
   "value": false,
   "source": "https://docs.fly.io/sprites/api/openapi.json",
   "quote": null,
   "note": "No fork capability exists in the public API at all (see fork), so cloning a running Sprite without stopping it is a fortiori unavailable.",
   "checked": "2026-09-30"
  },
  "memory_snapshot_fork": {
   "value": false,
   "source": "https://docs.fly.io/sprites/concepts/checkpoints.md",
   "quote": "It does not touch the base image itself, and it does not capture anything that only lives in memory.",
   "note": "Checkpoints (the only snapshot mechanism) are filesystem-only, not memory; combined with no fork capability at all, a memory-preserving fork is unavailable.",
   "checked": "2026-09-30"
  },
  "ssh": {
   "value": false,
   "source": "https://docs.fly.io/sprites/working-with-sprites.md",
   "quote": "Sprites don't expose SSH directly—you'll need to install an SSH server on your Sprite and tunnel the connection through `sprite proxy`.",
   "note": "No native SSH access; only a DIY workaround (install sshd yourself, tunnel via `sprite proxy -W :22`). `sprite console` is offered as the SSH-like interactive shell instead.",
   "checked": "2026-09-30"
  },
  "desktop": {
   "value": false,
   "source": "https://fly.io/sprites",
   "quote": "Sprites | Linux computers for agents",
   "note": "not offered: outside the product's scope. Sprites are headless Linux compute for coding agents (exec/console/fs/services); no VNC/RDP/stream desktop is documented anywhere in the Sprites docs or API.",
   "checked": "2026-09-30"
  },
  "computer_use": {
   "value": false,
   "source": "https://fly.io/sprites",
   "quote": "Sprites | Linux computers for agents",
   "note": "not offered: outside the product's scope. No desktop exists to drive by screenshots/clicks, and no such API appears in the Sprites OpenAPI or docs.",
   "checked": "2026-09-30"
  },
  "custom_image": {
   "value": false,
   "source": "https://docs.fly.io/sprites/concepts/checkpoints.md",
   "quote": "A checkpoint snapshots the writable filesystem overlay: everything you've added on top of the base image. It does not touch the base image itself",
   "note": "Every Sprite starts from one fixed managed base image (working-with-sprites: \"Sprites run Ubuntu 25.10 with common tools preinstalled\"); you can only customize the writable overlay on top of it (and checkpoint that), not swap in your own base image at create time. No create-from-custom-image option in the API/CLI docs.",
   "checked": "2026-10-14"
  },
  "image_oci": {
   "value": false,
   "source": "https://docs.fly.io/sprites/concepts/checkpoints.md",
   "quote": "A checkpoint snapshots the writable filesystem overlay: everything you've added on top of the base image. It does not touch the base image itself",
   "note": "Same fixed-base-image constraint as custom_image; no Docker/OCI image import for creating a Sprite is documented (Fly's separate Machines product supports OCI images, but Sprites does not).",
   "checked": "2026-09-30"
  },
  "volumes": {
   "value": false,
   "source": "https://docs.fly.io/sprites/concepts/lifecycle.md",
   "quote": "Every Sprite starts with 100 GB of storage. It does not autoscale yet, so plan around that ceiling.",
   "note": "Single fixed ext4 filesystem per Sprite backed by hot NVMe + durable object storage; no separate attachable volume resource or endpoint exists for Sprites (unlike Fly Machines, which does have fly volumes).",
   "checked": "2026-09-30"
  },
  "public_ipv4": {
   "value": false,
   "source": "https://docs.fly.io/sprites/concepts/networking.md",
   "quote": "Every Sprite has one at `https://<name>-<org>.sprites.app/` (the org ID is a short generated identifier...), and it routes HTTPS to the Sprite's HTTP service.",
   "note": "Inbound is exclusively via the HTTPS Sprite URL or the local `sprite proxy` tunnel; no per-Sprite public IPv4 address is issued or documented.",
   "checked": "2026-09-30"
  },
  "gpu": {
   "value": false,
   "source": "https://fly.io/sprites",
   "quote": "Sprites | Linux computers for agents",
   "note": "not offered: outside the product's scope. Each Sprite is a fixed 8 vCPU / platform-managed-RAM shape (docs.fly.io/sprites/concepts/lifecycle); no GPU option is mentioned anywhere in the Sprites docs, pricing, or FAQ (GPUs exist on Fly's separate Machines product, not Sprites).",
   "checked": "2026-09-30"
  },
  "windows": {
   "value": false,
   "source": "https://fly.io/sprites",
   "quote": "Sprites | Linux computers for agents",
   "note": "The 'macOS / Linux / Windows' toggle on the marketing page selects the *local* OS for installing the Sprites CLI, not the sandbox OS; the product itself is explicitly Linux-only compute.",
   "checked": "2026-09-30"
  },
  "macos": {
   "value": false,
   "source": "https://fly.io/sprites",
   "quote": "Sprites | Linux computers for agents",
   "note": "Same as windows: macOS only appears as a client-OS tab for the CLI installer, not as a sandbox guest OS. Product is Linux-only.",
   "checked": "2026-09-30"
  },
  "arm64": {
   "value": false,
   "source": "https://docs.fly.io/sprites/concepts/lifecycle.md",
   "quote": "Each Sprite runs with: 8 vCPUs, Memory the platform manages for you..., 100 GB of storage. You don't set or resize these yourself.",
   "note": "Fixed, unconfigurable resource shape with no architecture choice offered anywhere in the docs/pricing; no arm64 option is mentioned.",
   "checked": "2026-09-30"
  },
  "self_host": {
   "value": false,
   "source": "https://fly.io/sprites",
   "quote": "Full Linux computers designed for agents instead of people.",
   "note": "not offered: outside the product's scope. Sprites is a hosted Fly.io service (billed per CPU/RAM/storage-hour on Fly's own infrastructure); no self-hosted/on-prem distribution is documented.",
   "checked": "2026-09-30"
  },
  "byoc": {
   "value": false,
   "source": "https://fly.io/sprites",
   "quote": "Full Linux computers designed for agents instead of people.",
   "note": "not offered: outside the product's scope. No option to deploy the Sprites control plane into a customer's own cloud account is documented anywhere.",
   "checked": "2026-09-30"
  },
  "open_source": {
   "value": false,
   "source": "https://fly.io/sprites",
   "quote": "Full Linux computers designed for agents instead of people.",
   "note": "Sprites is a proprietary hosted product on Fly.io's infrastructure; no OSI-licensed core-product repo is published (Fly does open-source some client tooling like flyctl, but not the Sprites runtime/service itself).",
   "checked": "2026-09-30"
  },
  "private_network": {
   "value": false,
   "source": "https://docs.fly.io/sprites/concepts/networking.md",
   "quote": "By default, a Sprite's outbound is unrestricted... Egress can be tightened with a network policy, a DNS-based allowlist... Private IPs are always blocked, so a Sprite can't reach into private network ranges.",
   "note": "Networking model is public-internet egress (optionally allowlisted) plus a private-by-default HTTPS URL / local proxy for inbound; there is no VPC/private-network peering or Sprite-to-Sprite private networking documented, and private IP ranges are explicitly always blocked outbound.",
   "checked": "2026-09-30"
  },
  "egress_ip_type": {
   "value": "datacenter",
   "source": "https://docs.fly.io/sprites/concepts/networking.md",
   "quote": "By default, a Sprite's outbound is unrestricted: it can resolve and reach any domain. Egress can be tightened with a network policy, a DNS-based allowlist that decides which domains a Sprite is allowed to reach.",
   "note": "derived: Sprites run as Firecracker microVMs on Fly.io's own datacenter infrastructure (docs.fly.io/security/security-at-fly-io); outbound traffic leaves through Fly's shared datacenter network, not a residential or mobile IP pool. No dedicated/static outbound IP is offered (static_egress_ip=false, public_ipv4=false), and no residential/mobile IP product is documented anywhere in the Sprites docs, so egress is ordinary shared datacenter IP space.",
   "checked": "2026-09-30"
  },
  "usage_api": {
   "value": false,
   "source": "https://docs.fly.io/about/billing.md",
   "quote": "You can view and download invoices from the Billing section of your dashboard for each organization. ...To download a past invoice, click View for the relevant cycle. You'll be sent to the Stripe billing portal.",
   "note": "granularity: account-only; cost: no; Billing data is accessible only via web dashboard and Stripe portal invoices. Metrics API (prometheus) provides live monitoring data (CPU/memory graphs) but no billable usage. No REST API, SDK call, or CLI command for per-Sprite/Machine billable usage breakdown or cost queries.",
   "confidence": "high",
   "checked": "2026-10-01"
  },
  "systemd": {
   "value": false,
   "source": "https://docs.fly.io/sprites/concepts/services.md",
   "quote": "There is no `journalctl` here. Sprites don't run systemd; the log files and the create/start streams are how you see service output.",
   "note": "Long-running processes are managed by the Sprites services API (auto-restart on wake), not by an init system.",
   "checked": "2026-10-14"
  }
 },
 "locations": [],
 "locations_source": "https://docs.fly.io/sprites/concepts/lifecycle/",
 "locations_quote": "You don't set or resize these yourself. The vCPU count and the storage ceiling are fixed; memory is handled automatically.",
 "locations_checked": "2026-10-01"
}