{
 "features_resolved": {
  "snapshot_any": true,
  "snapshot_mem": true,
  "fork": true,
  "pause_resume": true,
  "persistent_disk": true,
  "whole_disk": null,
  "persist_scope": null,
  "volumes": true,
  "auto_stop_idle": false,
  "long_sessions": true,
  "custom_image": true,
  "image_snapshot": true,
  "image_oci": false,
  "vm_isolation": false,
  "docker_inside": false,
  "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": false,
  "ssh": false,
  "public_ipv4": false,
  "inbound_https": false,
  "custom_domain": null,
  "raw_tcp_inbound": null,
  "egress_allowlist": true,
  "open_internet": null,
  "static_egress_ip": null,
  "private_network": null,
  "self_host": true,
  "byoc": true,
  "open_source": false,
  "soc2": true,
  "hipaa": false,
  "sso": true,
  "gpu": false,
  "arm64": false,
  "windows": false,
  "macos": false,
  "lang_python": true,
  "lang_node": false,
  "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": true,
  "eu_data_residency": false,
  "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": true,
  "fast_boot": null,
  "strong_isolation": false,
  "ingress_rules": false,
  "guest_firewall": false,
  "secret_proxy": false,
  "secret_proxy_any": false,
  "volume_attach": true,
  "volume_shared": true,
  "sidecar": null,
  "fuse": null,
  "kernel_features": null,
  "burst": null
 },
 "company": {
  "id": "datalayer",
  "checked": "2026-09-30",
  "company": "Datalayer",
  "ownership": {
   "value": "bootstrapped",
   "parent": null,
   "source": "https://www.google.com/search?q=%22datalayer.io%22+funding+OR+raised+OR+seed",
   "quote": "Datalayer (Datalayer Profile) is currently an unfunded company and has not raised any external seed or venture capital funding. Status: Bootstrapped / Unfunded"
  },
  "stage": {
   "value": "bootstrapped",
   "source": "https://www.google.com/search?q=%22datalayer.io%22+funding+OR+raised+OR+seed",
   "quote": "Datalayer has not raised any funding yet.",
   "confidence": "medium",
   "note": "Per Tracxn (third-party estimator), Datalayer.io (founded by Eric Charles, Brussels) is bootstrapped/unfunded. Not to be confused with the unrelated Web3/blockchain startup also named 'Datalayer' (datalayer.co) that closed a $500K pre-seed in June 2024 led by GBV Capital and NxGen — that is a different company with a different domain and business (Layer-1 blockchain), not this cloud/agent-runtime provider."
  },
  "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": ""
  },
  "note": "Datalayer.io is a small, apparently bootstrapped/unfunded company founded by Eric Charles (Jupyter open-source contributor), originally focused on collaborative Jupyter notebooks (founded ~2013/2021 per different sources) and now pivoting to a 'Managed Agents' platform for agentic data analysis, including on-demand runtime environments sold via Free/Team/Enterprise plans. No accelerator, priced VC round, or revenue figures were found. Caution: search results are dominated by an unrelated crypto project also called 'Datalayer' (Layer-1 blockchain, domain datalayer.co, $500K pre-seed June 2024 led by GBV Capital/NxGen) — that funding does NOT belong to this provider."
 },
 "id": "datalayer",
 "name": "Datalayer Runtimes",
 "url": "https://datalayer.io/pricing",
 "category": "dev-env",
 "isolation": "container",
 "modes": [
  {
   "key": "on-demand",
   "label": "On-demand",
   "flags": [],
   "os": [
    "linux"
   ],
   "regions": null,
   "gpu_only": false,
   "features": {},
   "pricing": "sizes",
   "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": [
    {
     "name": "1-CPU",
     "vcpu": 1,
     "ram_gib": 1,
     "disk_gib": null,
     "hour": 0.3,
     "month_cap": 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": "Only currently priced available environment. Larger environments markedUnavailable; not scalable linearly to4/8."
  }
 ],
 "storage": {
  "included_disk_gib": null,
  "disk_gib_month": null,
  "disk_billed_when_stopped": null,
  "snapshot_gib_month": null,
  "paused_ram_billed": null
 },
 "network": {
  "egress_free_gib": null,
  "egress_gib": null,
  "ipv4_month": null,
  "ipv4_available": null
 },
 "plans": [
  {
   "name": "Free",
   "fee": 0,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": null,
   "per_seat": null,
   "concurrency": null,
   "max_session_h": null,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes_allowed": null,
   "note": "Personal use: 3 agents, 500 runs/month and 50 native wallet credits that reset each calendar month; top-ups supported. Credits are not documented as USD and must not be converted to $50."
  },
  {
   "name": "Team",
   "fee": 49,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": null,
   "per_seat": 15,
   "concurrency": null,
   "max_session_h": null,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes_allowed": null,
   "note": "$49/month base; organizations also pay $15/month for each active organization member. Includes 500 native wallet credits each billing cycle, 5,000 runs/month, unlimited agents, top-ups, and paid-plan customization.",
   "wallet_credits_cycle": 500,
   "agent_runs_month": 5000
  },
  {
   "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": "Custom sales price; unlimited agent runs and MCP server connections, SSO/SAML, audit logs/compliance, custom SLAs, dedicated support/onboarding and an on-premise deployment option. Compute concurrency, hardware and rates remain unpublished."
  }
 ],
 "free": {
  "monthly_credit": null,
  "one_time_credit": null,
  "wallet_credits_month": 50,
  "agent_runs_month": 500
 },
 "features": {
  "linux": true,
  "windows": false,
  "macos": false,
  "arm64": false,
  "gpu": false,
  "snapshot": "mem",
  "pause_resume": true,
  "fork": true,
  "persistent_disk": true,
  "volumes": null,
  "auto_stop_idle": false,
  "max_session_h": null,
  "custom_image": null,
  "docker_inside": false,
  "nested_virt": false,
  "root": null,
  "systemd": null,
  "browser": false,
  "desktop": false,
  "computer_use": false,
  "code_interpreter": true,
  "agent_harnesses": false,
  "ssh": false,
  "public_ipv4": false,
  "inbound_https": false,
  "custom_domain": null,
  "raw_tcp_inbound": null,
  "egress_allowlist": true,
  "static_egress_ip": null,
  "private_network": null,
  "self_host": true,
  "byoc": true,
  "open_source": false,
  "soc2": true,
  "hipaa": false,
  "sso": true,
  "gpu_types": [],
  "regions": [],
  "lang_python": true,
  "lang_node": false,
  "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": true,
  "eu_data_residency": false,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": true,
  "mcp_server": true,
  "snapshot_auto": false,
  "snapshot_on_demand": true,
  "harness_api": false,
  "secret_proxy": false,
  "volume_attach": true,
  "volume_shared": true,
  "own_agent_api": true,
  "isolation": "container",
  "image_oci": false,
  "anti_bot": false,
  "captcha_solving": false,
  "ingress_rules": false,
  "guest_firewall": false,
  "egress_ip_type": "datacenter",
  "usage_api": false
 },
 "perf": {
  "cpu_runs_s": null,
  "cold_start_ms": null,
  "burst_tti_ms": null,
  "dax_s": null
 },
 "knobs": [],
 "caveats": [
  "Rendered official pricing exposes one available CPU sandbox:1vCPU/1GiB at$0.30/h. Listed7CPU, T4 andA100 environments markedUnavailable. Wallet-credit plans, agentrun caps andorganization seats are separate.",
  "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.",
  "Pricing page lists 7 CPUs / 30 GiB, T4 GPU + 2 CPUs / 10 GiB and A100 80GB GPU + 4 CPUs / 20 GiB as Unavailable."
 ],
 "sources": [
  "https://datalayer.io/pricing",
  "https://github.com/datalayer/code-sandboxes/blob/d9c39925d87447dab5f3f7f1bdf9451ec4ebca2a/code_sandboxes/providers.py"
 ],
 "audit_2026_09_29": {
  "applied": 10,
  "source": "checked against the provider's live pricing and docs pages",
  "reviewed": 2
 },
 "feature_evidence": {
  "snapshot_auto": {
   "value": false,
   "source": "https://datalayer.ai/docs/credits",
   "quote": "Credits are consumed while Runtimes are running, even if they are not actively being used. Ensure to terminate Runtimes when they are no longer needed to optimize credit usage.",
   "note": "Snapshots are only taken on user Pause (UI/API/CLI) or explicit Take Snapshot. No idle auto-pause documented; runtimes simply run until their prepaid time reservation ends (older docs: 'After this time, the Runtime will be automatically terminated'). Agent-runtimes has conversation-level auto-checkpoints (message history), not machine state.",
   "checked": "2026-09-29"
  },
  "snapshot_on_demand": {
   "value": true,
   "source": "https://datalayer.ai/docs/code-sandbox-snapshots",
   "quote": "Takes the state of the sandbox as it is now, and leaves the sandbox running — unlike pausing it, which stops the sandbox to keep its state.",
   "note": "Two mechanisms. (1) Runtime Snapshots: API/CLI/UI/MCP (`create_snapshot`, `datalayer snapshots create`, `snapshot_sandbox`); new runtimes can launch from one (`create_runtime(snapshot_name=...)`), loadable into any running sandbox, export/import to file. BUT it is kernel state only: 'The Runtime state is serialized using Python's pickle module' (picklable Python variables, not processes/disk). (2) Pause/Resume: 'Pausing preserves Agent Runtime state and creates an Agent Runtime Snapshot'; agent runtimes use CRIU full-pod checkpoints ('pause/resume/terminate controls backed by checkpointing (CRIU) semantics', `agent-runtimes checkpoints ls/delete`), i.e. memory included, but resume only restores the same runtime. Snapshot storage price unpublished.",
   "checked": "2026-09-29"
  },
  "harness_api": {
   "value": false,
   "source": "https://agent-runtimes.datalayer.tech/endpoints/",
   "quote": "Agent Runtimes exposes a comprehensive REST and WebSocket API for managing agents, executing prompts, and monitoring system status",
   "note": "Reviewed: drives Datalayer’s own Agent Runtimes (pydantic-ai agents), not a coding harness. Harness = Datalayer's own open-source Agent Runtimes (pydantic-ai-based agents defined by Agentspecs), launched into a cloud runtime pod as a sidecar next to the Jupyter kernel (`agent-runtimes agents create ai-agents-env ... --cloud`; `create_runtime(agent_spec_id=...)`), then driven from outside via AG-UI (SSE), Vercel AI, ACP (WebSocket) or A2A with streaming, tool approvals, pause/resume and conversation persistence (`run_cloud_agent_chat` sends a prompt to a cloud runtime agent). Not Claude Code/Codex/OpenCode: those connect the other way, as MCP clients of the hosted Datalayer MCP server (mcp.datalayer.run).",
   "checked": "2026-09-29"
  },
  "secret_proxy": {
   "value": false,
   "source": "http://web.archive.org/web/20251011032842/https://docs.datalayer.app/secrets/",
   "quote": "The secrets will be injected in all Runtimes as environment variables. The environment variable name will be the secret name.",
   "note": "Live core SDK docs: 'Secrets are encrypted at rest and securely transmitted to runtimes when needed.' Agent-runtimes identity OAuth tokens (GitHub, GitLab, Google...) are also handed to skills/codemode as env vars (GITHUB_TOKEN etc.). Model inference can route via Datalayer ('inferenceProvider = local | datalayer') but no credential-injecting egress proxy is documented.",
   "checked": "2026-09-29"
  },
  "volume_attach": {
   "value": true,
   "source": "https://datalayer.ai/docs/contents/volumes",
   "quote": "Attach the Volume to a Code Sandbox at an absolute path with read-only or read/write access.",
   "note": "'A Volume is durable, mutable storage managed as a Contents source'; created with capacity and storage tier (`datalayer contents volumes create --capacity-bytes ...`), scoped to a user or a Space; a Kubernetes persistent claim fixed at pod creation (attach before start; running sandbox refused with ATTACHMENT_NOT_MOUNTABLE). Persists after sandbox deletion; bills until deleted (price unpublished). Also Cloud Storage bucket mounts and local-folder bridge mounts.",
   "checked": "2026-09-29"
  },
  "volume_shared": {
   "value": true,
   "source": "https://datalayer.ai/docs/contents/home-folder",
   "quote": "You can attach the Home Folder to multiple sandboxes; avoid simultaneous writes to the same file unless your workflow coordinates them.",
   "note": "Home Folder (user + every org/team folder) lives on 'the platform's shared filesystem' and is mounted read/write ('Every mount is read/write'), hot-attachable to running Datalayer runtimes. Volumes list 'the runtime currently holding it' and are validated for 'concurrent access', so Volumes themselves look single-holder; the shared case is the Home Folder / team folders (and bucket mounts).",
   "checked": "2026-09-29"
  },
  "own_agent_api": {
   "value": true,
   "source": "https://agent-runtimes.datalayer.tech/endpoints/",
   "quote": "Agent Runtimes exposes a comprehensive REST and WebSocket API for managing agents, executing prompts, and monitoring system status",
   "note": "Harness = Datalayer's own open-source Agent Runtimes (pydantic-ai-based agents defined by Agentspecs), launched into a cloud runtime pod as a sidecar next to the Jupyter kernel (`agent-runtimes agents create ai-agents-env ... --cloud`; `create_runtime(agent_spec_id=...)`), then driven from outside via AG-UI (SSE), Vercel AI, ACP (WebSocket) or A2A with streaming, tool approvals, pause/resume and conversation persistence (`run_cloud_agent_chat` sends a prompt to a cloud runtime agent). Not Claude Code/Codex/OpenCode: those connect the other way, as MCP clients of the hosted Datalayer MCP server (mcp.datalayer.run).",
   "checked": "2026-09-29"
  },
  "isolation": {
   "value": "container",
   "source": "https://datalayer.ai/docs/contents/volumes",
   "quote": "A Volume is a persistent claim fixed when the sandbox's pod is created ... Attaching a Volume to a sandbox that is already running is refused with ATTACHMENT_NOT_MOUNTABLE: a claim cannot be added to a live pod.",
   "note": "derived: Datalayer's own Runtimes/Code Sandboxes run as Kubernetes pods (persistent-volume claims tied to 'the sandbox's pod', 'a live pod'). No microVM/gVisor/Kata technology is documented; the product also offers other sandbox variants (Daytona, E2B, Modal, CoreWeave, Cloudflare) which have their own isolation.",
   "checked": "2026-09-30"
  },
  "image_oci": {
   "value": false,
   "source": "https://datalayer.ai/docs/environments-spec",
   "quote": "spec.base | ref (String, required), channel (String, required) ... A Dockerfile whose FROM is an approved base with its channel as the tag.",
   "note": "Custom Environments (including Dockerfile-based builds) must start FROM a Datalayer-approved base image/channel (e.g. datalayer/python-cpu); there is no documented path to launch a sandbox directly from an arbitrary external Docker/OCI image.",
   "checked": "2026-09-30"
  },
  "docker_inside": {
   "value": false,
   "source": "https://datalayer.ai/docs/environments-user",
   "quote": "A resolve and a build reach only the hosts packages come from: PyPI and PyTorch's wheels, the public conda channels, the Ubuntu and Debian snapshot mirrors, GitHub releases, and the image registries.",
   "note": "not offered: outside the product's scope. Datalayer Code Sandboxes are Jupyter-kernel execution pods for Python code; no docs describe a Docker/dockerd daemon usable inside a running sandbox.",
   "checked": "2026-09-30"
  },
  "nested_virt": {
   "value": false,
   "source": "https://datalayer.io/pricing",
   "quote": "1 CPU | 1 vCPU (1 GiB) | No GPU | 0.3 | Agentic automation, lightweight API tasks, and orchestration.",
   "note": "not offered: outside the product's scope. Sandboxes are small Kubernetes-pod-based Python kernels; no /dev/kvm or nested-VM capability is documented anywhere in the docs.",
   "checked": "2026-09-30"
  },
  "desktop": {
   "value": false,
   "source": "https://datalayer.ai/docs/code-sandboxes",
   "quote": "A CodeSandbox is the execution boundary for agent-generated code.",
   "note": "not offered: outside the product's scope. Code Sandboxes run Python/Jupyter kernels; 'Desktop' in the docs sidebar refers to the Datalayer client app, not a sandbox GUI/VNC/RDP stream.",
   "checked": "2026-09-30"
  },
  "browser": {
   "value": false,
   "source": "https://datalayer.ai/docs/code-sandboxes",
   "quote": "A CodeSandbox is the execution boundary for agent-generated code.",
   "note": "not offered: outside the product's scope. No managed/controllable browser instance inside a Code Sandbox is documented.",
   "checked": "2026-09-30"
  },
  "computer_use": {
   "value": false,
   "source": "https://datalayer.ai/docs/code-sandboxes",
   "quote": "A CodeSandbox is the execution boundary for agent-generated code.",
   "note": "not offered: outside the product's scope. No screenshot+click desktop-driving API is documented; the platform exposes code execution, notebooks and an MCP server instead.",
   "checked": "2026-09-30"
  },
  "anti_bot": {
   "value": false,
   "source": "https://datalayer.io/pricing",
   "quote": "AI Agents Workers for data-intense cases",
   "note": "not offered: outside the product's scope. Datalayer is a Jupyter/code-sandbox and agent-runtime platform for data workloads, not a browser/bot-automation stealth product.",
   "checked": "2026-09-30"
  },
  "captcha_solving": {
   "value": false,
   "source": "https://datalayer.io/pricing",
   "quote": "AI Agents Workers for data-intense cases",
   "note": "not offered: outside the product's scope; no CAPTCHA-solving feature is documented anywhere on the site.",
   "checked": "2026-09-30"
  },
  "ssh": {
   "value": false,
   "source": "https://datalayer.ai/docs/code-sandboxes",
   "quote": "A CodeSandbox is the execution boundary for agent-generated code.",
   "note": "not offered: outside the product's scope. Sandboxes are reached via the Jupyter/notebook protocol, the CLI, or MCP tool calls (code:execute), not SSH; a dedicated /docs/ssh page exists but returns 'This page is not available yet.'",
   "checked": "2026-09-30"
  },
  "snapshot": {
   "value": "mem",
   "source": "https://datalayer.ai/docs/code-sandbox-snapshots",
   "quote": "A Runtime Snapshot is a saved state of a Runtime. It can be used to save the current state of a Runtime, and to restore it later. ... Takes the state of the sandbox as it is now, and leaves the sandbox running.",
   "note": "Runtime Snapshots serialize the Python kernel's picklable variables (interpreter/memory state), loadable into a new or existing sandbox. This is narrower than a full VM memory snapshot (no arbitrary running processes/threads restored), but broader than a plain disk/filesystem snapshot, so 'mem' is the closer bucket.",
   "checked": "2026-09-30"
  },
  "fork": {
   "value": true,
   "source": "https://datalayer.ai/docs/code-sandbox-snapshots",
   "quote": "a snapshot can be loaded into a sandbox other than the one it was taken from ... an agent starts a sandbox from a snapshot with launch_sandbox and a snapshot_name.",
   "note": "Cloning is snapshot-mediated: take a Runtime Snapshot of one sandbox, then launch a new sandbox from that snapshot.",
   "checked": "2026-09-30"
  },
  "fork_running": {
   "value": true,
   "source": "https://datalayer.ai/docs/code-sandbox-snapshots",
   "quote": "Takes the state of the sandbox as it is now, and leaves the sandbox running — unlike pausing it, which stops the sandbox to keep its state.",
   "note": "Taking a Runtime Snapshot does not stop the source sandbox, so a clone (new sandbox launched from that snapshot) can be produced while the original keeps running.",
   "checked": "2026-09-30"
  },
  "memory_snapshot_fork": {
   "value": false,
   "source": "https://datalayer.ai/docs/code-sandbox-snapshots",
   "quote": "The Runtime state is serialized using Python's pickle module",
   "note": "Only picklable Python variables are captured/restored, not the full process/memory image, so a cloned sandbox does not resume arbitrary running processes the way a true memory-snapshot fork would.",
   "checked": "2026-09-30"
  },
  "pause_resume": {
   "value": true,
   "source": "https://datalayer.ai/docs/code-sandbox-snapshots",
   "quote": "unlike pausing it, which stops the sandbox to keep its state.",
   "note": null,
   "checked": "2026-09-30"
  },
  "wake_on_request": {
   "value": false,
   "source": "https://datalayer.ai/docs/credits",
   "quote": "When launching a Runtime, you are required to specify a time reservation value. This value represents the maximum amount of time the runtime can run and this immediately will be deducted from your credits.",
   "note": "not offered: sandboxes must be explicitly launched/resumed via API/CLI/MCP; no documentation describes a stopped sandbox automatically waking on an inbound request.",
   "checked": "2026-09-30"
  },
  "persistent_disk": {
   "value": true,
   "source": "https://datalayer.ai/docs/contents/home-folder",
   "quote": "You can attach the Home Folder to multiple sandboxes",
   "note": "The Home Folder / Volumes persist independently of any single sandbox's lifecycle and can be reattached to new sandboxes, so files survive stop/terminate.",
   "checked": "2026-09-30"
  },
  "auto_stop_idle": {
   "value": false,
   "source": "https://datalayer.ai/docs/credits",
   "quote": "Credits are consumed while Runtimes are running, even if they are not actively being used. Ensure to terminate Runtimes when they are no longer needed to optimize credit usage.",
   "note": "No idle-detection auto-stop is documented; a runtime runs until its prepaid time reservation elapses or it is manually terminated/paused.",
   "checked": "2026-09-30"
  },
  "live_resize": {
   "value": false,
   "source": "https://datalayer.io/pricing",
   "quote": "1 CPU | 1 vCPU (1 GiB) | No GPU | 0.3 | Agentic automation, lightweight API tasks, and orchestration.",
   "note": "not offered: outside the product's scope. CPU/RAM is fixed per Environment/size class at launch; no API to change resources on a running sandbox is documented.",
   "checked": "2026-09-30"
  },
  "agent_harnesses": {
   "value": false,
   "source": "https://agent-runtimes.datalayer.tech/endpoints/",
   "quote": "Agent Runtimes exposes a comprehensive REST and WebSocket API for managing agents, executing prompts, and monitoring system status",
   "note": "Datalayer ships its own open-source Agent Runtimes (pydantic-ai agents), not preinstalled third-party coding harnesses. Claude Code/Codex/OpenCode/Cursor connect the other way, as MCP clients of the hosted Datalayer MCP server — they are not offered as sandbox templates.",
   "checked": "2026-09-30"
  },
  "mcp_server": {
   "value": true,
   "source": "https://datalayer.ai/docs/mcp",
   "quote": "Connect Claude, Codex, Cursor, VS Code, or any MCP-compatible agent to your Datalayer Notebooks without running an MCP server yourself. Copy this URL into any client that supports remote MCP servers: https://mcp.datalayer.run/mcp",
   "note": "Also ships the open-source Jupyter MCP Server (BSD-3-Clause) that the hosted server is built on.",
   "checked": "2026-09-30"
  },
  "lang_python": {
   "value": true,
   "source": "https://datalayer.ai/docs/environments-spec",
   "quote": "spec.language | name | \"python\" | No | \"python\"",
   "note": null,
   "checked": "2026-09-30"
  },
  "lang_node": {
   "value": false,
   "source": "https://datalayer.ai/docs/environments-spec",
   "quote": "spec.language | name | \"python\" | No | \"python\"",
   "note": "not offered: the Environment specification's language.name field only accepts \"python\"; no Node.js/JavaScript runtime is documented for Code Sandboxes.",
   "checked": "2026-09-30"
  },
  "public_ipv4": {
   "value": false,
   "source": "https://datalayer.ai/docs/code-sandboxes",
   "quote": "A CodeSandbox is the execution boundary for agent-generated code.",
   "note": "not offered: outside the product's scope. Sandboxes are reached through Datalayer's own hosted app/MCP endpoints, not a per-machine public IPv4; a dedicated /docs/networking page exists but returns 'This page is not available yet.'",
   "checked": "2026-09-30"
  },
  "inbound_https": {
   "value": false,
   "source": "https://datalayer.ai/docs/code-sandboxes",
   "quote": "A CodeSandbox is the execution boundary for agent-generated code.",
   "note": "not offered: no documentation describes exposing arbitrary sandbox ports over HTTPS URLs; access is via the Jupyter/notebook protocol, CLI, or MCP tool calls.",
   "checked": "2026-09-30"
  },
  "ingress_rules": {
   "value": false,
   "source": "https://datalayer.ai/docs/code-sandboxes",
   "quote": "A CodeSandbox is the execution boundary for agent-generated code.",
   "note": "not offered: outside the product's scope, since generic inbound port exposure is not offered at all; a dedicated /docs/networking page returns 'This page is not available yet.'",
   "checked": "2026-09-30"
  },
  "egress_allowlist": {
   "value": true,
   "source": "https://datalayer.ai/docs/environments-user",
   "quote": "A resolve and a build reach only the hosts packages come from: PyPI and PyTorch's wheels, the public conda channels, the Ubuntu and Debian snapshot mirrors, GitHub releases, and the image registries. A RUN step that reaches anywhere else fails",
   "note": "Documented for the Environment build step (host-level allowlist enforced server-side); not confirmed for arbitrary code execution inside a running sandbox.",
   "checked": "2026-09-30"
  },
  "guest_firewall": {
   "value": false,
   "source": "https://datalayer.ai/docs/contents/volumes",
   "quote": "A Volume is a persistent claim fixed when the sandbox's pod is created",
   "note": "derived: sandboxes are Kubernetes pods (container isolation), not full VMs with guest root documented, so guest-side iptables/nftables control is not applicable/documented.",
   "checked": "2026-09-30"
  },
  "gpu": {
   "value": false,
   "source": "https://datalayer.io/pricing",
   "quote": "A100 GPU + 4 CPUs | Unavailable | 4 vCPU (20 GB) | 1 A100 (80 GB) | Unavailable ... T4 GPU + 2 CPUs | Unavailable",
   "note": "Datalayer's own GPU-backed sandbox tiers are listed but marked Unavailable; docs confirm 'Datalayer sandboxes run the CPU classes for now' (https://datalayer.ai/docs/environments-user), with GPU classes only buildable against a customer's own Modal/Daytona account.",
   "checked": "2026-09-30"
  },
  "windows": {
   "value": false,
   "source": "https://datalayer.ai/docs/environments-spec",
   "quote": "spec.language | name | \"python\" | No | \"python\"",
   "note": "not offered: outside the product's scope. Environments are Linux/Python base images; no Windows machine option exists.",
   "checked": "2026-09-30"
  },
  "macos": {
   "value": false,
   "source": "https://datalayer.io/pricing",
   "quote": "1 CPU | 1 vCPU (1 GiB) | No GPU | 0.3 | Agentic automation, lightweight API tasks, and orchestration.",
   "note": "not offered: outside the product's scope. No macOS machine option is documented.",
   "checked": "2026-09-30"
  },
  "byoc": {
   "value": true,
   "source": "https://datalayer.io/pricing",
   "quote": "For organizations needing scale, compliance, and dedicated support with SSO/SAML, audit logs, custom SLAs, onboarding, and flexible deployment. ... On-premise deployment option",
   "note": "Enterprise plan offers an 'on-premise deployment option' distinct from the standard SaaS, consistent with a customer-controlled-infrastructure deployment; exact BYOC mechanics (own cloud account vs on-prem hardware) are not detailed.",
   "checked": "2026-09-30"
  },
  "open_source": {
   "value": false,
   "source": "https://raw.githubusercontent.com/datalayer/core/main/LICENSE",
   "quote": "BSD 3-Clause License. Copyright (c) 2022, Datalayer. All rights reserved.",
   "note": "The client SDK/CLI (datalayer/core) and the Jupyter MCP Server are BSD-3-Clause open source, but the hosted Runtimes/Code Sandboxes backend itself is a proprietary managed SaaS with no published source; the 'core product' (the sandbox hosting service) is not open source.",
   "checked": "2026-09-30"
  },
  "soc2": {
   "value": true,
   "source": "https://datalayer.io/trust",
   "quote": "Datalayer, Inc. has successfully completed a System and Organization Controls (SOC) 2 Type II audit, performed by Sensiba LLP ... issued with a clean audit opinion",
   "note": null,
   "checked": "2026-09-30"
  },
  "hipaa": {
   "value": false,
   "source": "https://datalayer.io/trust",
   "quote": "We are proud to have achieved the ISO 27001 certification ... SOC 2 Type II ... ISO/IEC 42001:2023 certification",
   "note": "The trust page lists SOC 2 Type II, ISO 27001, and ISO 42001 certifications only; no HIPAA-eligibility or BAA is mentioned anywhere.",
   "checked": "2026-09-30"
  },
  "egress_ip_type": {
   "value": "datacenter",
   "source": "https://datalayer.ai/docs/environments-user",
   "quote": "A resolve and a build reach only the hosts packages come from: PyPI and PyTorch's wheels, the public conda channels, the Ubuntu and Debian snapshot mirrors, GitHub releases, and the image registries.",
   "note": "derived: Datalayer Code Sandboxes/Runtimes run as Kubernetes pods on Datalayer's own cloud infrastructure; outbound traffic goes through the platform's shared cluster egress, not a residential/mobile IP product. No dedicated networking page exists yet ('This page is not available yet.' at /docs/networking and /docs/regions) and no residential/mobile egress option is documented anywhere on the site.",
   "checked": "2026-09-30"
  },
  "egress_http_rules": {
   "value": false,
   "source": "https://datalayer.ai/docs/environments-user",
   "quote": "A resolve and a build reach only the hosts packages come from: PyPI and PyTorch's wheels, the public conda channels, the Ubuntu and Debian snapshot mirrors, GitHub releases, and the image registries. A RUN step that reaches anywhere else fails",
   "note": "The only documented outbound control is a host-level allowlist enforced during Environment builds (which hosts a RUN step may reach), not method/path-level HTTP rules. No API/UI for per-HTTP-method or per-path egress rules on running sandboxes is documented; /docs/networking returns 'This page is not available yet.'",
   "checked": "2026-09-30"
  },
  "arm64": {
   "value": false,
   "source": "https://datalayer.ai/docs/environments-spec",
   "quote": "spec.platform | architecture | \"linux/amd64\" | No | \"linux/amd64\" | —",
   "note": "The Environment Specification's spec.platform.architecture field only accepts the literal value \"linux/amd64\"; no arm64/aarch64 option is documented anywhere for Datalayer's own Code Sandboxes/Runtimes.",
   "checked": "2026-09-30"
  },
  "eu_data_residency": {
   "value": false,
   "source": "https://datalayer.io/privacy",
   "quote": "Your data may be transferred to and processed in countries other than your own. We ensure appropriate safeguards are in place for such transfers.",
   "note": "not offered: no region-selection feature or EU-specific hosting commitment is documented anywhere (no /docs/regions content exists yet: 'This page is not available yet.'); the Privacy Policy only describes general international-transfer safeguards, not a customer-selectable EU-only deployment.",
   "checked": "2026-09-30"
  },
  "usage_api": {
   "value": false,
   "source": "https://datalayer.ai/docs/credits",
   "quote": "Credits are consumed while Runtimes are running, even if they are not actively being used. Ensure to terminate Runtimes when they are no longer needed to optimize credit usage.",
   "note": "granularity: account-only; cost: no; Datalayer exposes REST/WebSocket APIs for managing Agent Runtimes (create, list, execute prompts), but no programmatic endpoint to query billable usage (credits consumed) per sandbox, per tag, or per project. Wallet credit consumption is visible only through the dashboard; billing is account-level via invoice or dashboard, not per-sandbox or per-tag APIs.",
   "confidence": "high",
   "checked": "2026-10-01"
  }
 },
 "locations": [],
 "locations_source": "https://datalayer.io/pricing",
 "locations_quote": "No region selection is documented in the pricing page, product docs, or API reference for Datalayer Code Sandboxes or Runtimes.",
 "locations_checked": "2026-10-01"
}