A little space of its own

Give your agent
room to work.

Decide what it can touch.

A portable microVM with one static core, Wasm-isolated devices, and only the access you choose.

Linux · macOS on Apple Silicon · Windows

A frog and dragonfly among ferns and a yellow flower, inside a glass terrarium.
A little world. A clear boundary.
Primary use / Agents

A terrarium for agents.

Give a long-lived agent a box of its own. Its storage persists across restarts, and it reaches only the files and destinations you grant. Or lock its root read-only, with a disk-backed overlay that resets every boot.

Set one up
Primary use / Development

A dev VM for your harness.

Run Claude Code, Codex, or your own tooling against your project in a confined VM instead of on your host.

Start with the quickstart
And more

Room for more.

Anything that needs a clear boundary: untrusted builds, unfamiliar installers, one-off recipe runs, or a service published on host loopback.

Read the usage guide
01 / Self-contained

One static core.

The kernel, Alpine base, and device components ship in one binary. Every box takes the same narrow path, with no OCI images or registries: fewer moving parts to trust. Recipes and hooks extend it.

02 / Isolated

Wasm-isolated devices.

Software fault isolation (SFI) gives the VMM and every device instance a separate WebAssembly sandbox, with scoped access to a thin host API.

03 / Explicit

Access is a choice.

Host files and network access start closed. Your recipe names the directories, destinations, and capabilities you grant.

04 / Portable

Bring your environment.

Linux and Windows (x86_64 / ARM64), and macOS on Apple Silicon. Native hypervisors underneath; the same recipes and CLI wherever you work.

Isolation at every layer

Your workload in a VM.
Its machinery in Wasm.

Explore the security model See how each platform sandboxes it
HOST OS & HYPERVISORGuest LinuxYour workloadFilesystemBlockMemoryVsockVMMInterruptsHost agent 4OS sandbox · VM worker1Hardware VM2Wasm components3Thin host API5Network broker virtioIPCTCP · UDP · DNSInternet
Hardware VM One Wasm store per component OS sandbox Interrupts: Wasm controller on x86 · native IRQ lines on ARM.

From a recipe to a running box

Make a little room.

Current release v0.4.0-beta

Start with a dev VM: install Terra and save this recipe as dev.yaml. Then set up and enter your box.

Linux & macOS on Apple Silicon · Terminal

curl -fsSL https://raw.githubusercontent.com/terrarium-sh/terrarium/main/install.sh | sh

Windows · PowerShell

irm https://raw.githubusercontent.com/terrarium-sh/terrarium/main/install.ps1 | iex

After installing on Windows, open a new terminal so terra is on your PATH.

Set up your box

terra ./dev.yaml setup
terra
Read the usage guide
dev.yamlyour box, your rules
hw:
  cpus: 2
  mem_mib: 1024

network:
  mode: unrestricted-public

workload:
  entrypoint: /bin/sh
terra ./dev.yaml setup
terra

Public network access is opt-in.
Host files stay private until you share them.

More recipes: terrarium_examples

Keep exploring

A reference within reach.