Open sourceRustMIT

isb. Sandboxes you can describe.
A platform you own.

Write down the containers or VMs you want in a small YAML file and isb makes incus match it on your own Linux machine. When a sandbox becomes an app, the same box runs it: replicas, deploys, databases, backups, a web UI, and an MCP server your agents can use.

Every agent, build tool and postinstall script runs with whatever its shell can reach. On most machines that means your SSH keys, your cloud tokens and every repository in your home directory.

Containers made for shipping one process make poor workrooms, and VMs are slow to make and hard to repeat. isb gives each task its own whole Linux machine, a system container with its own init, users, services and network, with only the one project directory it needs mounted.

Root inside is an ordinary user outside. A container is usable in about five seconds and costs almost nothing idle. When you want a separate kernel between the code and your machine, change type: container to type: vm. Same file, same commands.

One file.
The machine follows.

If you know docker compose you know the format. isb up creates what is missing and changes only what differs, every time you run it.

services:
  web:
    image: images:ubuntu/24.04
    cpus: 2
    mem_limit: 2g
    idmap: auto        # files made inside stay yours
    volumes:
      - ./site:/home/ubuntu/site
    ports:
      - "8000:8000"      # on the host's 127.0.0.1
    ready: [running, default_route]
    user: ubuntu
    working_dir: /home/ubuntu/site
    command: python3 -u -m http.server 8000
A sandbox, described
$ isb up                # create it, or fix only what drifted
web | Serving HTTP on 0.0.0.0 port 8000 ...
^C                      # stops it; the next up starts it again

$ isb up -d             # or: bring it up and carry on
$ isb exec web -- python3 -m unittest
$ isb down              # delete it, host untouched

# the same file, run for months
$ isb serve install
$ isb stack deploy app  # replicas, health checks, rollouts
$ isb stack rollback app
Run it, then keep it running

We run on it. The dev server for this website runs in an isb sandbox, one per git worktree, so its package installs never touch the host. lasso runs its frontend tooling the same way.

Who it’s
for.

Anyone with a Linux box who wants isolation they can describe, and services they can keep, without an account, a cloud or a per-minute bill.

  1. 01

    AI agents and untrusted code

    Give each agent or task its own machine with one directory mounted, instead of your home directory and its credentials. A dev server an agent starts is stopped when the agent goes away.

  2. 02

    A dev environment per branch

    One sandbox per git worktree, each with its own dependencies and dev server, side by side. A mount that is already right is never touched, so hot reload survives every isb up.

  3. 03

    Apps that run for months

    Replicated, health-checked, load-balanced services with zero-downtime rollouts and rollbacks, from the same file you develop with.

  4. 04

    Teams that want their own platform

    Orgs with quotas and their own network, members and roles, passkeys and SSO, a web UI, and apps that deploy on push, the way Dokploy works, on hardware you control.

Everything on
one binary.

A single static binary is the CLI, the daemon, the web UI and the MCP server. Python, TypeScript and Rust SDKs drive the same core, so they behave identically.

  • 01 · Sandboxes

    Converges, never churns

    isb plan shows the difference, isb up changes only that. Every incus call has a deadline, so a stall names the step instead of hanging.

    Sandboxes · isb.yaml
  • 02 · Stacks

    A swarm for one host

    deploy.replicas, health checks, a least-connections load balancer, start-first rolling updates and one-command rollback.

    Stacks
  • 03 · Apps

    Deploy on push

    Projects and environments; apps from an image or a git repo (railpack, Dockerfile or nixpacks); webhooks from GitHub, GitLab and Gitea; a preview per pull request.

    Deploy apps · Previews
  • 04 · Data

    Databases and backups

    Postgres, MySQL, MariaDB, MongoDB and Redis. Scheduled backups to S3, R2, B2 or MinIO with retention, restored into a new database. Cron jobs too.

    Databases · Jobs
  • 05 · Templates

    One-command apps

    Uptime Kuma, Plausible, Gitea, n8n, Ghost, Umami, Vaultwarden, MinIO and more built in, plus the Dokploy template catalog.

    Templates
  • 06 · Ingress

    Real hostnames, real TLS

    Caddy with Let’s Encrypt on the host, or a Cloudflare Tunnel per org, with the domains each org may use allow-listed.

    Domains and ingress
  • 07 · Orgs

    A boundary per tenant

    Each org is a restricted incus project with its own bridge, quotas and egress allow-list, and its own age-encrypted secret store with break-glass recipients.

    Orgs · Secrets
  • 08 · Access

    People, roles, tokens

    Passwords, passkeys, GitHub, Google or any OIDC provider; viewer to owner roles; scoped, expiring API tokens; superadmins proven by your tailnet or Cloudflare Access.

    Access · Sign-in
  • 09 · Agents

    An MCP server, with a leash

    Agents deploy stacks, run sandboxes and query metrics as MCP tools, held to a policy: allowed and denied tools, a bind root, no privileged containers by default.

    Agents and MCP · MCP tools
  • 10 · Servers

    More than one box

    Add servers over SSH and place an org on its own host or its own VM. Calls are forwarded over mutual TLS: federation, not clustering.

    Placement · Servers
  • 11 · Workspaces

    A home for each team

    Each org gets a long-lived machine with a home that survives rebuilds, where its people and agents work. Agents there make expiring sandboxes beside it through the org’s MCP, and reach nothing outside the org.

    Workspaces
  • 12 · Operate

    See all of it

    A web UI and a terminal dashboard, metrics history, a hash-chained audit log, and notifications to Slack, Discord, Telegram, email or a signed webhook.

    Web UI · TUI · Audit

Quick
start.

isb needs a Linux host with incus, and access to its socket. On a Mac it runs incus in a Lima VM it manages for you.

  1. 01

    Install incus

    From your distribution, following the incus guide. Membership in incus-admin is root-equivalent on that host, so treat it like sudo.

  2. 02

    Install isb

    A static binary, nothing to compile. Prebuilt for x86_64 and aarch64 on the releases page. Install isb has every option.

    $ mise use -g github:execution-associates/isb   # or: cargo install isb
    $ pip install isb-sdk                            # Python, imported as isb
    $ bun add @execution-associates/isb              # TypeScript
  3. 03

    Describe a sandbox, bring it up

    Save the isb.yaml above next to a site/ folder, then isb up. isb down deletes it. Your first sandbox walks through it, and your first org and app goes on to the platform.

  4. 04

    On a Mac

    $ brew install lima
    $ isb machine init
  5. 05

    Give it to your agents

    The repo’s SKILL.md teaches an agent to use isb correctly. For Claude Code, put it at ~/.claude/skills/isb/SKILL.md.

The
documentation.

Straight from the isb repository, rebuilt with every deploy of this site.

Guides

Rendered from execution-associates/isb/docs at platform@c3abfa6.

Want isolated agent workspaces or a self-hosted platform running for your team? We built isb, and we set it up.

Put us on it