{
 "features_resolved": {
  "snapshot_any": true,
  "snapshot_mem": false,
  "fork": true,
  "pause_resume": true,
  "persistent_disk": true,
  "whole_disk": null,
  "persist_scope": null,
  "volumes": true,
  "auto_stop_idle": false,
  "long_sessions": false,
  "custom_image": true,
  "image_snapshot": true,
  "image_oci": false,
  "vm_isolation": false,
  "docker_inside": true,
  "nested_virt": false,
  "root": null,
  "systemd": null,
  "browser": false,
  "desktop": false,
  "computer_use": false,
  "code_interpreter": true,
  "browser_control": null,
  "desktop_control": null,
  "browser_and_desktop": false,
  "anti_bot": false,
  "captcha_solving": false,
  "residential_ip": false,
  "agent_harnesses": true,
  "ssh": false,
  "public_ipv4": false,
  "inbound_https": false,
  "custom_domain": null,
  "raw_tcp_inbound": null,
  "egress_allowlist": true,
  "open_internet": null,
  "static_egress_ip": false,
  "private_network": null,
  "self_host": false,
  "byoc": false,
  "open_source": false,
  "soc2": null,
  "hipaa": null,
  "sso": false,
  "gpu": false,
  "arm64": null,
  "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": null,
  "audit_logs": null,
  "eu_data_residency": true,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": true,
  "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": false,
  "guest_firewall": false,
  "secret_proxy": false,
  "secret_proxy_any": false,
  "volume_attach": true,
  "volume_shared": false,
  "sidecar": null,
  "fuse": false,
  "kernel_features": false,
  "burst": null
 },
 "company": {
  "id": "brimble",
  "checked": "2026-09-30",
  "company": "Brimble",
  "ownership": {
   "value": "bootstrapped",
   "parent": null,
   "source": "https://www.brimble.io/ (Show HN, 2025-06-18)",
   "quote": "We've been building Brimble — a modern hosting platform for developers to ship fullstack apps easily.\n\nIt's just two of us. No funding. No marketing team."
  },
  "stage": {
   "value": "bootstrapped",
   "source": "https://hn.algolia.com/api/v1/search?query=brimble (Show HN post by klefcodes, 2025-06-18)",
   "quote": "It's just two of us. No funding. No marketing team.",
   "confidence": "medium",
   "note": "Founders explicitly said 'no funding' as of June 2025 (a Show HN post titled 'We bootstrapped a Vercel alternative – Brimble'). No YC/Crunchbase profile found (ycombinator.com/companies/brimble returns 404); no later funding announcement found. Team appears to be a small remote team based in Nigeria (careers page lists NGN salaries), consistent with a small bootstrapped company, but this could not be independently confirmed beyond the founders' own statement."
  },
  "accelerators": [],
  "total_funding_usd": {
   "value": null,
   "status": "unknown"
  },
  "last_round": {
   "type": null,
   "amount_usd": null,
   "date": null,
   "leads": [],
   "status": "unknown",
   "source": "",
   "quote": ""
  },
  "investors": [],
  "portfolio_listings": [],
  "revenue": {
   "value": null,
   "status": "unknown"
  },
  "employees": {
   "value": null,
   "source": "https://brimble.io/careers — lists a small number of open roles (Sales Representative, Product Manager, Fullstack/Infra Engineer), all remote in Nigeria, paid in NGN; no total headcount stated"
  },
  "note": "Brimble is a small, apparently bootstrapped PaaS/sandbox provider (per its own June 2025 Show HN post: 'It's just two of us. No funding.'). No YC listing, no Crunchbase/PitchBook profile found, and no press coverage of any funding round was found in the time available. The product has since expanded (full-stack app hosting, databases, object storage, sandboxes) and the team appears to have grown to a small remote team based in Nigeria (careers page salaries in NGN), but there is no evidence of institutional funding or an accelerator affiliation."
 },
 "id": "brimble",
 "name": "Brimble Sandboxes",
 "url": "https://brimble.io/pricing",
 "category": "agent-sandbox",
 "isolation": "gvisor",
 "modes": [
  {
   "key": "on-demand",
   "label": "On-demand",
   "flags": [],
   "os": [
    "linux"
   ],
   "regions": null,
   "gpu_only": false,
   "features": {
    "isolation": "gvisor"
   },
   "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": "",
   "cpu_class": "shared"
  }
 ],
 "storage": {
  "included_disk_gib": null,
  "disk_gib_month": null,
  "disk_billed_when_stopped": true,
  "snapshot_gib_month": null,
  "paused_ram_billed": false
 },
 "network": {
  "egress_free_gib": null,
  "egress_gib": null,
  "ipv4_month": null,
  "ipv4_available": null
 },
 "plans": [
  {
   "name": "Hacker",
   "fee": 3,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": null,
   "per_seat": null,
   "concurrency": 3,
   "max_session_h": 2,
   "max_vcpu": 2,
   "max_ram_gib": 4,
   "sizes_allowed": null,
   "note": "Includes 5 sandbox CPU-hours + 10 GB-hours per month; usage above is metered ('Sandbox CPU / memory | Metered above plan-included sandbox allowances') at an unpublished rate. Plan fee does NOT include app CPU/RAM."
  },
  {
   "name": "Developer",
   "fee": 11,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": null,
   "per_seat": 11,
   "concurrency": 15,
   "max_session_h": 6,
   "max_vcpu": 4,
   "max_ram_gib": 8,
   "sizes_allowed": null,
   "note": "Includes 20 sandbox CPU-hours + 40 GB-hours per month (brimble.io/pricing 2026-09-28); overage rate not published. Unknown limits are not promises of unlimited capacity."
  },
  {
   "name": "Enterprise",
   "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": "Unknown limits are not promises of unlimited capacity."
  },
  {
   "name": "Team",
   "fee": 11,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": null,
   "per_seat": 11,
   "concurrency": 15,
   "max_session_h": 6,
   "max_vcpu": 4,
   "max_ram_gib": 8,
   "note": "$11 per seat per month, min 1 seat; same allowances as Developer (15 concurrent sandboxes, 20 sandbox CPU-h + 40 GB-h)."
  }
 ],
 "free": {
  "monthly_credit": null,
  "one_time_credit": null
 },
 "features": {
  "linux": true,
  "windows": false,
  "macos": false,
  "arm64": null,
  "gpu": false,
  "snapshot": "fs",
  "pause_resume": true,
  "fork": true,
  "persistent_disk": true,
  "volumes": true,
  "auto_stop_idle": false,
  "max_session_h": 6,
  "custom_image": null,
  "docker_inside": true,
  "nested_virt": false,
  "root": null,
  "systemd": null,
  "browser": false,
  "desktop": false,
  "computer_use": false,
  "code_interpreter": true,
  "agent_harnesses": true,
  "ssh": false,
  "public_ipv4": false,
  "inbound_https": false,
  "custom_domain": null,
  "raw_tcp_inbound": null,
  "egress_allowlist": true,
  "static_egress_ip": false,
  "private_network": null,
  "self_host": false,
  "byoc": false,
  "open_source": false,
  "soc2": null,
  "hipaa": null,
  "sso": false,
  "gpu_types": [],
  "regions": [
   "eu",
   "asia"
  ],
  "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": null,
  "audit_logs": null,
  "eu_data_residency": true,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": true,
  "mcp_server": true,
  "isolation": "gvisor",
  "image_oci": false,
  "snapshot_auto": false,
  "snapshot_on_demand": true,
  "harness_api": false,
  "egress_allowlist_level": "both",
  "ingress_rules": false,
  "guest_firewall": false,
  "secret_proxy": false,
  "volume_attach": true,
  "volume_shared": false,
  "anti_bot": false,
  "captcha_solving": false,
  "egress_ip_type": "datacenter",
  "own_agent_api": false,
  "usage_api": false
 },
 "perf": {
  "cpu_runs_s": null,
  "cold_start_ms": null,
  "burst_tti_ms": null,
  "dax_s": null
 },
 "knobs": [],
 "caveats": [
  "Public paid-plan sandbox quotas. PaaS bandwidth/object storage rates are not automatically sandbox snapshot/egress rates; no sandbox overage CPU/RAM unit price established.",
  "ENGINE_CARD cannot apply all independent free CPU/RAM/storage/request allowances exactly. Raw regimes/worked example retain them; any engine subtotal may overstate charges or miss eligibility. Do not subtract them twice.",
  "Not fully priceable in ENGINE_CARD: unknown USD resource rates or machine shape. Null is not zero; do not rank as a free provider.",
  "Features set to null were not verified. No sandbox was purchased or tested; feature/performance statements are documentation claims. Null maximums are unknown unless a cited note explicitly states unlimited.",
  "A complete monthly bill requires known snapshot/egress/plan limits; do not silently treat missing ancillary charges as free.",
  "Re-checked 2026-09-28: pricing page publishes plan fees, concurrency, max runtime and included CPU-/GB-hours only; no per-resource or overage rate, so the card stays unpriced.",
  "Brimble app/project compute is $1/vCPU-month and $1/GB-month (~$0.0014/h, region multipliers e.g. 1.45x) but the docs explicitly exclude sandboxes from that page; do NOT use these as sandbox overage rates.",
  "Snapshots expire: each has expires_at set by plan-dependent retention; an hourly reaper deletes expired snapshots. Snapshot storage bills while held ('Metered above plan-included snapshot allowance').",
  "Auto-destroy timers only 30m/1h/3h/6h/12h/18h plus a platform max-lifetime ceiling; spending limit with action 'pause' rejects every new sandbox create until raised or the cycle rolls.",
  "Sandbox size conflict: docs (paper.brimble.io/sandboxes/overview) cap sandbox memory at 2 GB and scratch disk at 1-5 GB, but the pricing page advertises up to 2 vCPU / 4 GB (Hacker) and 4 vCPU / 8 GB (Developer). A 4 vCPU / 8 GiB sandbox may not be creatable.",
  "Free plan: the pricing page says \"Sandboxes available on paid plans\", but the docs say free accounts get \"a small sandbox quota\" in free-marked regions only. Contradictory, so not modelled as a plan.",
  "One-time 14-day Developer trial for eligible personal accounts; a payment method is required before it starts (paper.brimble.io/billing/plans)."
 ],
 "sources": [
  "https://brimble.io/pricing",
  "https://pypi.org/project/brimble-sandbox/"
 ],
 "fleet": {
  "default_max_instances": 3,
  "default_max_vcpu": null,
  "default_max_gpus": null,
  "raise": "self-serve",
  "raise_time_days": null,
  "verification": null,
  "tiers": "Hacker 3 simultaneous sandboxes; Developer 15; Enterprise custom.",
  "notes": "Sandbox concurrency, not build concurrency (separate 1/2 builds). 50/300/1,000 not established by published self-serve plans; CPU shape sizes are not aggregate quotas.",
  "sources": [
   "https://brimble.io/pricing"
  ],
  "researched": "2026-09-28"
 },
 "audit_2026_09_29": {
  "applied": 21,
  "source": "checked against the provider's live pricing and docs pages",
  "reviewed": 7
 },
 "feature_evidence": {
  "snapshot_auto": {
   "value": false,
   "source": "https://paper.brimble.io/sandboxes/overview.md",
   "quote": "RAM state, running processes, and open sockets never survive a pause regardless.",
   "note": "Pause scales the container to zero and keeps only the persistent workspace volume; no state capture on pause/destroy/auto-destroy. There is an opt-in cron-scheduled snapshot mode (snapshotMode: automatic + snapshotFrequency), filesystem only, which skips ticks while paused - scheduled backups, not stop-triggered snapshots.",
   "checked": "2026-09-29"
  },
  "snapshot_on_demand": {
   "value": true,
   "source": "https://paper.brimble.io/sandboxes/snapshots.md",
   "quote": "You can launch a brand-new sandbox from any snapshot you own, with exactly the files you saved.",
   "note": "SDK/API/dashboard snapshots.create on a ready sandbox; filesystem only (no memory); restore = new sandbox via fromSnapshot, any number of times (template/fork-like). Snapshots expire per plan retention (hourly reaper), not downloadable.",
   "checked": "2026-09-29"
  },
  "harness_api": {
   "value": false,
   "source": "https://paper.brimble.io/sandboxes/cookbook/ai-coding-agent.md",
   "quote": "adjust the binary name in the exec command",
   "note": "claude-code, codex, opencode and droid templates come preinstalled (agent_harnesses), but they are driven only through generic exec (e.g. `claude --print`) plus streamed exec / tail -f of logs; no agent-specific prompt/session/resume API in the SDK or OpenAPI.",
   "checked": "2026-09-29"
  },
  "egress_allowlist": {
   "value": true,
   "source": "https://paper.brimble.io/sandboxes/overview.md",
   "quote": "Default deny, with an allowlist of IPv4 addresses, CIDR ranges, or hostnames.",
   "note": "Modes open (default) / deny_all / restricted (max 50 entries), set at create or PUT /sandboxes/{id}/egress at runtime; sandbox-system.md: allowlist 'enforced at the host firewall for the container's address'.",
   "checked": "2026-09-29",
   "level": "both"
  },
  "egress_http_rules": {
   "value": false,
   "source": "https://paper.brimble.io/api-reference/sandboxes.openapi.yaml",
   "quote": "Each entry is an IPv4 address, CIDR range",
   "note": "Egress policy schema is only mode + allow list of IPv4/CIDR/hostname; no method/path/header rules.",
   "checked": "2026-09-29"
  },
  "ingress_rules": {
   "value": false,
   "source": "https://paper.brimble.io/api-reference/sandboxes.openapi.yaml",
   "quote": "Always `null` for sandboxes (no HTTP-facing proxy).",
   "note": "Sandboxes expose no inbound ports or preview URLs at all (only Brimble API exec/files reach them; docs say use a web service if you want a public URL), so there are no ingress controls - but also nothing public. Web-service projects have edge/internal networking, out of scope for the sandbox card.",
   "checked": "2026-09-29"
  },
  "guest_firewall": {
   "value": false,
   "source": "https://paper.brimble.io/sandboxes/sandbox-system.md",
   "quote": "Linux capabilities are stripped on the container.",
   "note": "gVisor container (runsc) with capabilities stripped and no-new-privileges; no CAP_NET_ADMIN, so in-guest iptables/nftables should not take effect. Not explicitly documented.",
   "checked": "2026-09-29"
  },
  "secret_proxy": {
   "value": false,
   "source": "https://paper.brimble.io/sandboxes/cookbook/ai-coding-agent.md",
   "quote": "Sandboxes don't bake env vars into the template; you set them per-exec.",
   "note": "Secrets (e.g. ANTHROPIC_API_KEY) are passed as per-exec env vars and enter the sandbox; no credential-injecting proxy documented.",
   "checked": "2026-09-29"
  },
  "volume_attach": {
   "value": true,
   "source": "https://paper.brimble.io/volumes/overview.md",
   "quote": "pre-provisioned once, attached to a sandbox or a web-service project when you need it.",
   "note": "`sandbox`-type volumes 10-50 GB, region-pinned, backed by Brimble object storage (CSI), mounted at the workspace directory; attach via volumeId at create or persistent:true.",
   "checked": "2026-09-29"
  },
  "volume_shared": {
   "value": false,
   "source": "https://paper.brimble.io/volumes/overview.md",
   "quote": "One volume, one workload at a time. No concurrent reads from multiple sandboxes or projects.",
   "note": "Single-writer attachment; no multi-attach, read-only or RW.",
   "checked": "2026-09-29"
  },
  "image_oci": {
   "value": false,
   "source": "https://paper.brimble.io/sandboxes/overview.md",
   "quote": "A sandbox starts from a **template**, a preconfigured base image with a runtime... You pick the template at creation by passing its `name`.",
   "note": "Sandboxes only start from Brimble's fixed template catalog (python-3.12, node-22, bun-1, deno-2, ubuntu-24, plus agent templates) or from a snapshot of one of those; no documented way to supply a custom Docker/OCI image for a sandbox. (Deploy-from-Docker-image exists only for web-service projects, a separate product.)",
   "checked": "2026-09-30"
  },
  "desktop": {
   "value": false,
   "source": "https://paper.brimble.io/sandboxes/overview.md",
   "quote": "A sandbox is a short-lived, isolated compute environment you can spin up on Brimble to run code, execute shell commands, write and read files, snapshot state, and pause or resume.",
   "note": "not offered: outside the product's scope. Sandboxes expose exec/file/snapshot operations only, no VNC/RDP/streamed graphical desktop of any kind.",
   "checked": "2026-09-30"
  },
  "browser": {
   "value": false,
   "source": "https://paper.brimble.io/sandboxes/overview.md",
   "quote": "A sandbox is a short-lived, isolated compute environment you can spin up on Brimble to run code, execute shell commands, write and read files, snapshot state, and pause or resume.",
   "note": "not offered: outside the product's scope. No managed/real browser inside sandboxes is documented anywhere in the docs, cookbooks, or API reference.",
   "checked": "2026-09-30"
  },
  "computer_use": {
   "value": false,
   "source": "https://paper.brimble.io/sandboxes/overview.md",
   "quote": "A sandbox is a short-lived, isolated compute environment you can spin up on Brimble to run code, execute shell commands, write and read files, snapshot state, and pause or resume.",
   "note": "not offered: outside the product's scope (no desktop/browser to drive, no screenshot+click API).",
   "checked": "2026-09-30"
  },
  "anti_bot": {
   "value": false,
   "source": "https://brimble.io/pricing",
   "quote": "What are Brimble Sandboxes?",
   "note": "not offered: outside the product's scope. Brimble sandboxes are generic code-execution/dev-environment compute (Python/Node/Ubuntu templates); there is no browser product to apply stealth/fingerprint evasion to.",
   "checked": "2026-09-30"
  },
  "captcha_solving": {
   "value": false,
   "source": "https://brimble.io/pricing",
   "quote": "What are Brimble Sandboxes?",
   "note": "not offered: outside the product's scope, same reasoning as anti_bot.",
   "checked": "2026-09-30"
  },
  "egress_ip_type": {
   "value": "datacenter",
   "source": "https://paper.brimble.io/networking/static-outbound-ips.md",
   "quote": "By default, a project's outbound IP is **not published** and can change when the project is rescheduled onto another host.",
   "note": "Sandboxes run on Brimble's own multi-tenant cloud host pool (Nomad-scheduled, per-region), so outbound traffic is ordinary shared datacenter IP space, not residential/mobile. Static outbound IPs (a fixed datacenter IP per region pool) is documented only for web-service projects, not sandboxes.",
   "checked": "2026-09-30"
  },
  "ssh": {
   "value": false,
   "source": "https://paper.brimble.io/sandboxes/overview.md",
   "quote": "Exec command | `handle.exec({ cmd })` | Runs a shell command; returns stdout, stderr, exit code, duration.",
   "note": "Sandboxes are reached only through the SDK/API exec, runCode, and file endpoints; no SSH server/keys are documented. The overview page even contrasts a sandbox to 'more like an SSH-able worker than a website' as an analogy, not an actual SSH feature.",
   "checked": "2026-09-30"
  },
  "fork_running": {
   "value": true,
   "source": "https://paper.brimble.io/sandboxes/snapshots.md",
   "quote": "You can only snapshot a `ready` sandbox... You can restore the same snapshot any number of times. Each restore is a separate sandbox.",
   "note": "Taking a snapshot does not pause/stop the source sandbox (only `paused`/`starting` sandboxes are rejected), and restoring the snapshot into one or more new sandboxes leaves the source running throughout, so a running sandbox can be cloned without stopping it (filesystem-only, no memory/process state per memory_snapshot_fork=false).",
   "checked": "2026-09-30"
  },
  "wake_on_request": {
   "value": false,
   "source": "https://paper.brimble.io/sandboxes/overview.md",
   "quote": "**`paused`**, the container is scaled to zero. CPU and memory billing stops... **Resume** | `handle.resume()` | Starts a fresh container and reattaches the volume.",
   "note": "Pausing and resuming are both explicit API/dashboard calls; there is no idle-triggered sleep and no documented mechanism where an inbound request automatically wakes a paused sandbox (sandboxes have no inbound HTTP surface at all to receive such a request).",
   "checked": "2026-09-30"
  },
  "live_resize": {
   "value": false,
   "source": "https://paper.brimble.io/api-reference/sandboxes.openapi.yaml",
   "quote": "Provisions a sandbox synchronously.",
   "note": "vCPU/RAM specs are set on create (and implicitly by plan/template); the documented operations (exec, pause, resume, egress update, snapshot) contain no resize/update-specs call for a running sandbox.",
   "checked": "2026-09-30"
  },
  "own_agent_api": {
   "value": false,
   "source": "https://paper.brimble.io/agent/overview.md",
   "quote": "**Brimble Agent** is the chat assistant inside the [Brimble dashboard](https://app.brimble.io). You stay signed in as yourself.",
   "note": "Brimble Agent is a signed-in, dashboard-only chat assistant for managing the workspace (launch/debug/fix projects); it is not a browser/computer-use/research task agent, and there is no documented API to drive it programmatically (only Brimble MCP, which controls the account/sandboxes themselves, not a task agent).",
   "checked": "2026-09-30"
  },
  "public_ipv4": {
   "value": false,
   "source": "https://paper.brimble.io/api-reference/sandboxes.openapi.yaml",
   "quote": "Always `null` for sandboxes (no HTTP-facing proxy).",
   "note": "Sandboxes have no exposed inbound ports, preview URLs, or public IP; the only way in is the Brimble API (exec/files) against the sandbox ID.",
   "checked": "2026-09-30"
  },
  "inbound_https": {
   "value": false,
   "source": "https://paper.brimble.io/api-reference/sandboxes.openapi.yaml",
   "quote": "Always `null` for sandboxes (no HTTP-facing proxy).",
   "note": "not offered: outside the product's scope for sandboxes. HTTPS URLs to reach ports exist only for web-service projects ('a project is a deployed application that serves traffic over a URL'), a separate product from sandboxes.",
   "checked": "2026-09-30"
  },
  "static_egress_ip": {
   "value": false,
   "source": "https://paper.brimble.io/networking/static-outbound-ips.md",
   "quote": "Give a project a fixed, predictable set of outbound IP addresses so you can allowlist it at a bank, payment processor, or third-party API.",
   "note": "Static outbound IPs is documented and priced only for web-service projects, not sandboxes; no equivalent feature is documented for sandboxes, whose outbound IP is unpublished and can change.",
   "checked": "2026-09-30"
  },
  "gpu": {
   "value": false,
   "source": "https://brimble.io/pricing",
   "quote": "3 Sandboxes at a time (up to 2 vCPU / 4 GB, 120 min max runtime)",
   "note": "not offered: outside the product's scope. Sandbox plans are specified purely in vCPU/RAM (no GPU tier), and no GPU template, GPU pricing, or GPU API exists anywhere in the docs.",
   "checked": "2026-09-30"
  },
  "windows": {
   "value": false,
   "source": "https://paper.brimble.io/sandboxes/overview.md",
   "quote": "`ubuntu-24` | Ubuntu 24.04 LTS, a clean base image for custom environments and general Linux workloads.",
   "note": "not offered: outside the product's scope. All sandbox templates (python-3.12, node-22, bun-1, deno-2, ubuntu-24, claude-code, codex, opencode, droid) are Linux; no Windows template or OS option exists.",
   "checked": "2026-09-30"
  },
  "macos": {
   "value": false,
   "source": "https://paper.brimble.io/sandboxes/overview.md",
   "quote": "`ubuntu-24` | Ubuntu 24.04 LTS, a clean base image for custom environments and general Linux workloads.",
   "note": "not offered: outside the product's scope. Sandboxes run as gVisor containers on a Linux host pool; no macOS machine offering is documented.",
   "checked": "2026-09-30"
  },
  "self_host": {
   "value": false,
   "source": "https://paper.brimble.io/getting-started/introduction.md",
   "quote": "Deploy applications without managing infrastructure. Connect a Git repository and Brimble handles the build, the runtime, the TLS, and the edge.",
   "note": "not offered: outside the product's scope. Brimble is a hosted PaaS/sandbox service; no self-hosted/on-prem distribution of the platform is offered or documented.",
   "checked": "2026-09-30"
  },
  "byoc": {
   "value": false,
   "source": "https://paper.brimble.io/getting-started/introduction.md",
   "quote": "Deploy applications without managing infrastructure. Connect a Git repository and Brimble handles the build, the runtime, the TLS, and the edge.",
   "note": "not offered: outside the product's scope. No bring-your-own-cloud/dedicated-into-your-account deployment model is documented; Brimble runs everything on its own regional infrastructure.",
   "checked": "2026-09-30"
  },
  "open_source": {
   "value": false,
   "source": "https://pypi.org/project/brimble-sandbox/",
   "quote": "Official Brimble sandbox SDKs for TypeScript, Python, and Go.",
   "note": "The client SDKs are published packages, but the Brimble platform itself (Core API, provisioner, dashboard) is closed-source; no OSI license or public core-product repo is documented.",
   "checked": "2026-09-30"
  },
  "sso": {
   "value": false,
   "source": "https://paper.brimble.io/security/two-factor-authentication.md",
   "quote": "Brimble supports **TOTP codes** (Google Authenticator, Authy, 1Password, Bitwarden, etc.) and **passkeys** (Touch ID, Windows Hello, hardware security keys).",
   "note": "Account auth/2FA and team roles docs enumerate only email/password + TOTP + passkey; no SAML/OIDC single sign-on is mentioned anywhere in the docs, including the workspaces/teams/roles pages.",
   "checked": "2026-09-30"
  },
  "eu_data_residency": {
   "value": true,
   "source": "https://paper.brimble.io/networking/static-outbound-ips.md",
   "quote": "**Europe (EU)** | Frankfurt, Helsinki, Nuremberg, and other European regions | Live",
   "note": "Sandboxes let you pick a region at create time (card regions include 'eu'), and Brimble has live EU regions (Frankfurt, Helsinki, Nuremberg), so a sandbox and its data/volumes can be kept in the EU.",
   "checked": "2026-09-30"
  },
  "max_session_h": {
   "value": 6,
   "source": "https://brimble.io/pricing",
   "quote": "15 Sandboxes at a time (up to 4 vCPU / 8 GB, 360 min max runtime)",
   "note": "Max sandbox runtime is a published per-plan cap: Hacker 120 min (2h), Developer/Team 360 min (6h); Enterprise is custom/unpublished. 6h is the highest self-serve figure; docs also describe a platform-level 'max-lifetime ceiling' enforced regardless of the autoDestroy timer (30m/1h/3h/6h/12h/18h options), consistent with these plan caps.",
   "checked": "2026-09-30"
  },
  "memory_snapshot_fork": {
   "value": false,
   "source": "https://paper.brimble.io/sandboxes/overview.md",
   "quote": "RAM state, running processes, and open sockets never survive a pause regardless.",
   "note": "Snapshots (snapshots.md) are filesystem-only too ('with exactly the files you saved'); there is no memory-state capture anywhere, so no memory-snapshot-based fork is possible. Confirmed false.",
   "checked": "2026-09-30"
  },
  "nested_virt": {
   "value": false,
   "source": "https://paper.brimble.io/sandboxes/sandbox-system.md",
   "quote": "Each sandbox container runs under **gVisor** in production, a user-space kernel that intercepts syscalls and reimplements them in a memory-safe Go process.",
   "note": "Docs never mention nested virtualization/KVM at all. gVisor's syscall-interception model (chosen explicitly 'instead of microVMs' for isolation, per the same page) does not expose /dev/kvm or hardware virtualization to the guest, so nested virt is not offered. No explicit 'no nested virt' statement exists, hence medium confidence based on what the product architecturally is.",
   "checked": "2026-09-30"
  },
  "auto_stop_idle": {
   "value": false,
   "source": "https://paper.brimble.io/sandboxes/overview.md",
   "quote": "autoDestroy: true + destroyTimeout, destroy after a fixed wall-clock window. Allowed values: 30m, 1h, 3h, 6h, 12h, 18h.",
   "note": "The only automatic stop/destroy mechanisms are a fixed wall-clock timer (destroyTimeout), oneShot (destroy when the main process exits), and a platform max-lifetime ceiling - none of these are idle/inactivity-based. Confirmed false.",
   "checked": "2026-09-30"
  },
  "cpu_class": {
   "value": {
    "on-demand": "shared"
   },
   "source": "https://brimble.io/pricing",
   "quote": "Shared CPU (single instance)",
   "note": "Pricing page lists 'Shared CPU (single instance)' as a Hacker-plan feature (the plan tier that also grants sandbox access), and the sandbox architecture docs describe fractional vCPU allocation ('0.5 vCPU equivalent') on a shared, Nomad-scheduled, multi-tenant gVisor host pool with no mention of dedicated/pinned cores for sandboxes at any plan tier. No published baseline % for burstable, so classified as shared rather than burstable:NN.",
   "checked": "2026-09-30"
  },
  "usage_api": {
   "value": false,
   "source": "https://paper.brimble.io/billing/plans.md",
   "quote": "Review the live billing estimate [in dashboard]; Weekly usage insights [via email]. The stats API (GET /sandboxes/{id}/stats) returns CPU%, memory%, and network bytes/sec (monitoring) with no billable usage breakdown.",
   "note": "granularity: account-only; cost: no; Brimble meters CPU and memory usage (charged at $1/vCPU-month and $1/GB-month), but the REST API only exposes monitoring stats (CPU%, memory%, network). No endpoint exists to retrieve billable usage per sandbox or per tag/label. Usage is visible only in the web dashboard (live billing estimate) and via email reports (weekly usage insights). The sandbox stats endpoint is monitoring-only, not a usage/billing API.",
   "confidence": "high",
   "checked": "2026-10-01"
  }
 },
 "locations": [
  {
   "country": "DE",
   "state": null,
   "city": "Frankfurt",
   "provider_region": "eu-west",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "FI",
   "state": null,
   "city": "Helsinki",
   "provider_region": "eu-north",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "DE",
   "state": null,
   "city": "Nuremberg",
   "provider_region": "eu-central",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "SG",
   "state": null,
   "city": "Singapore",
   "provider_region": "ap-southeast",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "JP",
   "state": null,
   "city": "Tokyo",
   "provider_region": "ap-northeast",
   "self_serve": true,
   "choosable": true
  }
 ],
 "locations_source": "https://paper.brimble.io/networking/static-outbound-ips.md",
 "locations_quote": "Brimble has regions across Europe, including Frankfurt, Helsinki, and Nuremberg. Asia, including Singapore and Tokyo.",
 "locations_checked": "2026-10-01"
}