Skip to content

Code & AI agent sandboxes: read the guide

Bastion

Open source toolSandbox

Self-hosted virtual machines for background coding agents.

Scanned 23 Jul 2026 · Schema v5 · features v17

Licence
MIT

Self-hosted; you pay for the infrastructure.

Free tier
Free to run

Isolation
Virtual machine

hypervisor, or nothing at all

Regions
—

Not disclosed on the public surface.

Capabilities
8 / 54

8 partial · 30 fail · 7 not assessed

Agent readiness
7/10 · 3/10

read · drive, pre-login surface

Advertised for

Background coding agents · Parallel agent tasks · Per issue review environments · Reproducible dev environments · Async agent runs

Built for

Developers, then technical

  • · CLI/SSH/JSON-first onboarding: `curl | bash` installer, the `bastion` CLI, schema-validated JSON templates, SSH/tmux/OpenCode-TUI access
  • · Deep infra vocabulary: KVM, Cloud Hypervisor, qcow2 overlays, TAP interfaces, vsock, cloud-init, iptables NAT, systemd, a privileged root daemon
  • · Self-host on YOUR own Linux/KVM host or multi-node cluster — usage cost = your hardware + LLM tokens (no managed tier)

01 Runtime Each fact carries its source; dots show confidence. Open a row for the evidence.

Isolation & lifecycle

Isolation primitive
Virtual machinehypervisor, or nothing at all
Persistence
Disposable Cloud Hypervisor VMs with a writable qcow2 ROOT overlay (default 20 GiB, sized per template) backed by an immutable template overlay backed by the shared base. Durable for the environment's lifetime (survives VM pause/stop) but there is no separate attachable/reattachable volume, and envs are torn down explicitly via `bastion env remove` (no auto-persistence beyond removal).
Snapshots / forks
Copy-on-write LAYERING (base → immutable prepared template overlay → per-env COW overlay) — disposable environments are effectively forked from a prepared template layer, enabling parallel isolated agents from one prepared image. Cloud Hypervisor `paused` state is exposed. No user-facing live-VM snapshot / restore / export of a running environment.

Resources & limits

Storage
Per-env qcow2 root volume (sized in the template); metadata in embedded SQLite (single host) or Postgres (cluster); cluster shared base + prepared template overlay archives stored in an S3-compatible bucket.
Limits & quotas
Operator-bounded — limited by your host's (or cluster's) CPU/memory/disk. Per-env resources (vcpu default 2, memory default 2 GiB, volume default 20 GiB) are declared per template; on a cluster, `env create` schedules onto a node with enough capacity and FAILS rather than overcommitting. No product-imposed SaaS quotas.
GPU
No

Access

Deploy interface
cliapi
SDK languages
None

Network & secrets

Egress controls
VM-level network isolation (each env gets its own TAP interface + DHCP via dnsmasq; NAT egress via iptables + IPv4 forwarding), but NO configurable egress firewall / allowlist / outbound policy is exposed.
Secrets
First-class, namespace-scoped secrets store — `bastion secrets create --key OPENAI_API_KEY --value ...`, referenced in templates as ${{ secret.X }} and injected into agent auth/config, env files (write_env_file), and setup actions inside the guest.
Bring your own cloud
na

Placement & use

Jurisdiction
na
Advertised workloads
Background coding agentsParallel agent tasksPer issue review environmentsReproducible dev environmentsAsync agent runs

02 Capabilities 8 pass · 8 partial · 30 fail · 54 of 61 assessed

  • Supported
  • Partially supported
  • Not supported
  • Not assessed

Compute & storage 1/8

Persistent diskStorage that survives restart/stop (not ephemeral-only).
Partially supported
Object storageManaged S3-compatible / blob object store the platform PROVIDES to a user's workloads (buckets, presigned URLs). DISTINCT from persistent-disk (block/volume attached to an instance) and from a self-host dependency (source.self_host.deps[]=["object-storage"] is an infra dep to RUN an OSS tool — the opposite direction). SCOPE varies and matters: native first-class (Railway Buckets, Cloudflare R2) vs a sibling SKU / extension (Fly Tigris, Bunny Storage, DigitalOcean Spaces) — record which in the evidence quote / note. Admitted v15.
Not supported
Snapshots / forkingSnapshot or copy-on-write fork of a running instance (filesystem-only counts). Whether the snapshot also restores memory + running processes is recorded separately by memory-snapshot (v19).
Partially supported
Live-state (memory) snapshotsA snapshot / checkpoint / pause captures a running instance's MEMORY and PROCESS state and restores it, so running processes continue where they left off instead of a freshly booted instance with the same files. Counts whether user-triggered (snapshot, checkpoint, pause-to-storage) or used to restore pre-initialised state (memory snapshots for fast cold starts). Distinct from snapshots-forks (any snapshot or fork, including filesystem-only; a product passing that key may still fail this one) and from scale-to-zero (an idle-cost property; suspension may or may not keep memory). Actor multiplexing (see scale-to-zero) records its live-state half here — only when the suspended actor's MEMORY/process state is what comes back, not a freshly booted worker with the actor's files.
Not assessed
Scale to zeroIdle instances suspend at no / negligible cost. ACTOR MULTIPLEXING (many suspended stateful actors sharing a small pool of pre-warmed workers, woken on request — Agent Substrate, AX, kagent; Rivet's hibernating actors) has NO key of its own (proposal REJECTED v20) — score the idle-cost half HERE and the live-state half under memory-snapshot; the oversubscription ratio / density is a performance characteristic the registry does not key.
Not supported
GPU computeGPU-backed instances available.
Not supported
Multi-regionCompute placeable in more than one geographic region.
Partially supported
Sandbox templates / custom imagesBuild reusable sandbox/VM images from an OCI image or Dockerfile (a base you fork instances from).
Supported
Cloud-init / ignition configCustomise a VM / microVM / instance at boot via cloud-init (or ignition) user-data — the same boot-metadata interface as AWS/Azure/GCP. Inject packages, users, SSH keys, files, and run-commands declaratively at launch. Distinct from sandbox-templates (a PREBUILT image you fork instances from) — this is PER-LAUNCH declarative customisation, not a baked image.
Not supported
Desktop / computer-use sandboxA virtual desktop (GUI) for LLM computer-use — browser + desktop automation, often via noVNC/VNC.
Not applicable
Selectable isolation runtimeThe user chooses the isolation runtime per workload / environment / sandbox from more than one option (e.g. microVM vs gVisor vs plain container, native namespaces vs gVisor, gVisor vs VM). Records the CHOICE; the isolation_primitive facet still records the best-evidenced primary. A platform that switches runtime automatically without a user choice (e.g. gVisor forced for GPU) does not pass on that alone.
Not assessed

Networking & delivery 1/8

Automatic HTTPSTLS endpoints provisioned automatically per workload.
Not supported
Built-in reverse proxyPlatform routes external traffic to workload services.
Supported
Custom domainsBring-your-own domain via CNAME/DNS.
Not supported
Public preview URLsShareable per-deploy / per-branch URLs.
Partially supported
Direct public IPv6Per-instance stable public IPv6 for raw TCP/UDP (beyond a managed HTTPS proxy) — e.g. mosh / raw sockets.
Not supported
Egress controlsConfigurable OUTBOUND network policy — egress firewall / allowlist / egress proxy on traffic LEAVING a workload. Scoped to OUTBOUND only (v15): private-network REACHABILITY between a user's own services is private-networking, not this. Static-egress-IP belongs here (an outbound concept).
Not supported
Private networkingA platform-internal private network between a user's OWN services — service-to-service connectivity, VPC, service mesh, and/or service discovery, not exposed to the public internet. DISTINCT from egress-controls (OUTBOUND firewall/allowlist), reverse-proxy (PUBLIC inbound ingress), and direct-ipv6 (per-instance PUBLIC addressing). Admitted v15.
Not supported
Email send / receiveSend and/or receive email from the workload.
Not supported
Edge KV storeA globally-replicated key-value store read from WITHIN an edge runtime at the PoP (low-latency, eventually-consistent) — Cloudflare Workers KV, Deno KV, Fastly KV Store, Akamai EdgeKV, Vercel Edge Config. Distinct from first-party-db (a managed DATABASE service you provision and connect to) and from http-query-api (HTTP access to an external store) — edge-kv is colocated with the edge compute and read at the edge.
Not applicable

Developer access 3/8

Public APIDocumented programmatic API.
Supported
OpenAPI specMachine-readable OpenAPI / Swagger spec published.
Not supported
CLIOfficial command-line tool.
Supported
SDKOfficial client library/libraries.
Not supported
SSH accessDirect SSH into workloads.
Supported
Filesystem APIRemote file operations over the API (list/read/write/watch/copy/upload) without SSH.
Not supported
Git deployDeploy from a Git repo / push-to-deploy.
Not supported
Private container registryHosted private image registry.
Not supported
E2B-compatible APIDrop-in compatibility with the E2B sandbox API/SDKs — existing E2B client code runs against this product by changing the endpoint/domain + key, with no business-code changes. E2B itself passes as the reference implementation. Distinct from public-api / sdk (the product has its own API — this key says it also speaks another vendor's) and from self-host-oss (a self-hosted E2B-compatible server is scored on both).
Not assessed
HTTP data APIQuery / read / write the stored DATA over plain HTTP/REST (or GraphQL) WITHOUT the native protocol driver (Postgres wire / Redis RESP) — agent- and edge-friendly data access via fetch(). The DATA plane; distinct from public-api (a control-plane / management API). Auto-generated-from-schema REST/GraphQL (PostgREST, pg_graphql) is a flavour of this.
Not applicable

AI & agents 1/10

Built-in coding agentShips a first-party AI coding agent in the product.
Partially supported
Agent skillsInstallable / declarable agent skills or tools.
Not supported
AI app builderPrompt-to-app / vibe-coding generation surface.
Not supported
MCP serverExposes a Model Context Protocol server for agents.
Not supported
MCP clientActs as an MCP client / consumes MCP tools.
Not supported
MCP-server hostingRun/host MCP servers as a workload on the platform (distinct from exposing a first-party MCP control server — that is mcp-server).
Not supported
LLM gatewayRoutes LLM API calls through the platform (multi-provider).
Not supported
BYOK for LLMsBring-your-own LLM provider keys.
Supported
Model inference API (first-party)A FIRST-PARTY hosted LLM/model inference API — the provider serves its OWN catalogue of (usually open-weight) models behind a (typically OpenAI-compatible) endpoint, billed per token. Distinct from llm-gateway (a multi-PROVIDER proxy/router for YOUR calls to external providers like OpenAI/Anthropic) and from byok-llm (bring your own provider keys) — here the platform IS the inference provider, serving its own models.
Not supported
Autonomous QA agentA first-party AUTONOMOUS AI agent that QA-TESTS a running app / implementation — exercising it like a real user (clicking through flows, checking behaviour) and reporting bugs/defects (often back to a coding agent, or before a human review). Distinct from built-in-agent (a code-AUTHORING agent — this one VERIFIES the result, it does not write the feature; a product can ship both), from ai-guided-code-review (organises a diff for a HUMAN to review — not an autonomous tester), and from observability (runtime metrics/logs, not active testing).
Not supported
Credential-injection proxyThe platform holds real secrets OUTSIDE the workload and injects them on the wire (an egress / broker proxy swaps a placeholder or phantom token for the real credential on matching outbound requests), so code running in the sandbox — e.g. an untrusted agent — never sees or can exfiltrate the real key. Distinct from secrets-management (storage + injection INTO the workload as env vars/files — the workload holds the secret) and from egress-controls (outbound allow/deny POLICY; a product can have an allowlist without injecting credentials, and vice versa).
Not assessed
Preinstalled coding agentThe platform installs and launches a THIRD-PARTY coding agent (a harnesses.yml entry — Claude Code, Codex, OpenCode, Pi ...) inside a workspace/sandbox it provisions, with the agent's auth wired in (your own account or API key), so you start an agent session rather than an empty box. Distinct from built-in-agent (a FIRST-PARTY agent the vendor ships) and from harnesses[] (which records that a harness CAN target the product, not that the product runs it for you).
Not assessed

Data 0/0

First-party databasePlatform-provided managed database.
Not applicable
Database branchingCopy-on-write branch of a DATABASE (schema + data) as a dev-lifecycle primitive — branch your data like code, usually instant via a metadata operation. Distinct from snapshots-forks (forks a running compute INSTANCE / VM state) and from preview-environments (a full per-PR environment that may USE a DB branch). For a data product a CoW branch maps HERE, not to snapshots-forks.
Not applicable
Vector searchFirst-class storage, indexing, and similarity search of vector embeddings — a native vector type/index or a managed vector DB. The data-layer primitive for RAG / semantic retrieval.
Not applicable
Ephemeral instant DB (no-signup)Provision a working, usable instance via a single command / HTTP call with NO account, signup, or card — typically time-boxed (expires unless claimed). A zero-onboarding path an agent can hit directly.
Not applicable

Platform & operations 0/6

Scheduled tasksCron / scheduled job primitive.
Not supported
Durable workflowsDurable execution / long-running workflow primitive.
Not supported
Preview environmentsA full EPHEMERAL environment spun up per PR / branch — compute + addons + (often) a DB branch — torn down on merge. More than preview-urls (which is just a shareable URL for one deploy).
Partially supported
Built-in observabilityFirst-party metrics / logs / tracing / APM / profiling included in the platform (no third-party stack required to see what a workload is doing).
Partially supported
Managed CI/CD runnersPlatform-hosted, drop-in CI/CD runner VMs (GitHub Actions / GitLab), typically faster and cheaper than the CI vendor's own hosted runners, billed per runner-minute; isolated + ephemeral per job. Distinct from git-deploy (push-to-deploy of an APP) and scheduled-tasks (cron) — this is managed CI COMPUTE you point your existing pipelines at.
Not supported
Project template marketplaceA marketplace / gallery of prebuilt PROJECT STARTER templates (apps or websites) a user clones or launches a new project from and then customises — the "start from a template" surface of a builder / PaaS. Distinct from sandbox-templates (a COMPUTE base IMAGE you fork runtime INSTANCES from — Dockerfile / OCI), from app-builder (the prompt-to-app GENERATION surface — a product can have both), and from one-click OSS-app catalogues / helm-addon-marketplace (deploy a FINISHED app as-is, not a starter you build on).
Not supported

Organisation & security 2/6

Built-in authPlatform-provided authentication / IAM for workloads.
Not supported
SSO / SAMLEnterprise single sign-on.
Not supported
Secrets managementFirst-class secrets storage / injection.
Supported
TeamsMulti-user team accounts.
Partially supported
SharingShare a running workload/resource via link (optionally gated).
Not supported
BYOCRuns inside the customer's own cloud account.
Not applicable
Deploy into customers' VPCsA SaaS vendor uses the platform to deploy and operate ITS software inside ITS CUSTOMERS' cloud accounts / VPCs (nested or "customer BYOC"), managed from the vendor's control plane. Distinct from byoc (your own workloads in your own cloud account).
Not assessed
Workload identityThe platform gives each workload its own verifiable identity (OIDC token, SPIFFE SVID, cloud IAM federation) that it exchanges for short-lived credentials, so no long-lived static secret is stored or injected. Distinct from secrets-management (stores / injects static secrets) and credential-injection-proxy (swaps real secrets in on the wire).
Not assessed
Self-host / OSS coreOpen-source core that can be self-hosted.
Supported

Proposed, not verified

Capabilities the scan saw but the registry does not track yet. A key is admitted only once two distinct products exhibit it. These are not scored.

  • Reusable env-setup action library — built-in preset 'actions' (setup_node/bun/uv/mise/openjdk, setup_docker, setup_github_cli, setup_aws_cli, setup_android_sdk, setup_maestro, write_env_file, set_default_ssh_directory) plus custom packaged actions, composed declaratively in a JSON template's init/start lifecycleenv-setup-action-library

    “'Runtime actions install language runtimes or runtime managers in guest VMs'; custom actions have a package layout, manifest fields, input env vars, and a context JSON — a GitHub-Actions-like reusable-step library for preparing agent VMs.” bastion.computer

03 Agent readiness Pre-login surface · counts, not a grade

Can an agent read it?

parse-ability · docs, metadata, machine-readable surfaces

7/10

7 full · 0 partial · 70% of applicable checks

  • llms.txt
    Supported
  • llms-full.txt
    Supported
  • robots.txt AI policy
    Not supported
  • JSON-LD
    Not supported
  • Sitemap
    Supported
  • Meta tags
    Supported
  • Markdown negotiation
    Not supported
  • Content efficiency
    Supported
  • Docs discoverable
    Supported
  • Machine-readable pricing
    Not applicable
  • No anti-bot wall
    Supported

Can an agent drive it?

act-ability · APIs, SDKs, MCP, credentials, webhooks

3/10

2 full · 1 partial · 30% of applicable checks

  • Public API
    Supported
  • OpenAPI spec
    Not supported
  • MCP server
    Not supported
  • SDK packages
    Not supported
  • Auth documented
    Not supported
  • Self-serve credentials
    Not applicable
  • Webhooks
    Not supported
  • CLI tool
    Supported
  • Error model
    Partially supported
  • Rate limits documented
    Not supported
  • Agent config files
    Not supported

04 Coding harnesses Which agents and IDEs are documented to run here

Advertised integrations 1

  • OpenCode opencode
    Supported

    OpenCode is the ONLY first-class MANAGED agent Bastion installs/configures/runs per environment (pinned binary in the base; auth via ${{ secret.X }}; model configurable, e.g. anthropic/claude-opus-4-8).

Plausible compatibility 14

Derived, not stored: the product passes SSH access, so any CLI coding agent is installable inside it. This is plausible compatibility, not a supported integration.

  • Aider
  • Amp
  • Antigravity
  • Claude Code
  • Codex CLI
  • Devin
  • Droid
  • Gemini CLI
  • Goose
  • Hermes Agent
  • Kilo Code
  • Kiro CLI
  • Pi
  • Qwen Code

05 Compliance & regions Standards held, with ordinal rigor; never a score

Certifications held 0

No attestations found on the public surface. Empty means nothing is advertised, after checking, not that nothing was checked.

Regions —

No region list captured.

06 Open source MIT · fetched by machine, not quoted from marketing

Licence & repository

Licence
MITOSI
Primary language
Go
Stars
23
Forks
1
Created
25 Apr 2026
Archived
No

Activity

Last commit
19 Jul 2026
Latest release
v0.27.0 · 15 Jul 2026
Issues open / closed
0 / 1 · 100% closed

42 releases since the 2026-04-25 repo creation — extremely rapid: v0.23.0→v0.27.0 landed within ~2 weeks of early-mid July 2026 (multiple minor releases per week). Pre-1.0 / fast-moving; observation, not a graded velocity.

Fetched via gh on 23 Jul 2026.

Self-hosting

Methods
binarysource-buildcompose
You operate
postgresobject-storage

MIT; self-host is the ONLY way to run it. SINGLE-HOST (default) needs NO external services: the installer (curl -fsSL https://bastion.computer/install.sh | bash) drops the `bastion` CLI + guest proxy + systemd services, metadata lives in embedded SQLite, and Cloud Hypervisor assets (static VMM binary, Ubuntu 24.04 guest kernel/initramfs/rootfs, pinned OpenCode) are installed by `bastion system init`. HARD host requirements: x86_64 Linux, readable/writable /dev/kvm, /dev/vhost-vsock, nested virtualization if the host is itself a VM, and the privileged `bastion start daemon` running as root; macOS Apple-silicon gets the CLI ONLY (no VM host). The deps listed (postgres, object-storage) apply ONLY to the optional multi-node CLUSTER control plane (`bastion start cluster` requires a Postgres URL for nodes/namespaces/routing state + an S3-compatible bucket for shared base/template overlay archives — a docker-compose example ships with MinIO). No hosting: self-host cost = free under MIT + your own Linux/KVM host or cluster + your LLM-provider token spend.

Documentation signals 7/8

  • SupportedQuickstart
  • SupportedAPI reference
  • SupportedSelf-host guide
  • SupportedChangelog
  • Not supportedOpenAPI
  • Supportedllms.txt
  • SupportedExamples
  • SupportedArchitecture doc

07 Company & presence Facts only, not scored

Company

Headquarters
Not disclosed
Founded
2025 (bastion-computer org created 2025-11-04; bastion repo created 2026-04-25)
Team size
Very small / solo (indie) — appears maintainer-led
Hiring
n/a — early-stage open-source project (no careers page; contribute via GitHub Discussions)

Notable people

  • Bastion (bastion-computer) — 'Building open source infrastructure for software factories'

Activity

Last release
v0.27.0 (2026-07-15); 42 releases total, rapid pre-1.0 cadence github.com
Last blog post
n/a — no blog

Presence 3

Links found on the public surface scanned; not an exhaustive search.

08 Sources & method How this entry was produced

Public surface only

Everything here was read from bastion.computer's unauthenticated pages, docs, pricing and repository on 23 Jul 2026. Nothing behind a login was used.

Statuses, not scores

Capabilities are pass, partial or fail against a written rubric (features v17). “Not assessed” means the scan predates the key.

Confidence is separate

Each fact carries its own confidence. Low-confidence facts are shown, never hidden, so you can weigh them.

Schema
scan v5
Features registry
v17
Keys tracked today
61
Assessed on this entry
54
Something wrong on this page?
where do i run this.

An independent spec sheet for places to run code, and the code your agents write. Facts come from each product's public pages; every capability is a count, never a grade.

Verify

Pages change; so do prices. Verify on the vendor's site before you commit; every product page shows when it was read.

Where Do I Run This © 2026counts, not grades · public pages only