Skip to main content
The adapter package keeps its pre-rename name until it is republished under the sandbox name; everything it talks to is Boat.
Eve is a TypeScript framework for building coding agents. It runs each agent inside a sandbox, which is an isolated filesystem and shell the agent reads, writes, and executes in. Eve lets you choose where that sandbox actually runs. Boat is Ascii’s cloud sandbox: a full Linux machine you create over an API, run commands in, and read and write files in. @asciidev/eve-box connects the two. It is an Eve sandbox backend that maps Eve’s filesystem and process operations onto the Boat API, so your Eve agents run on real sandbox machines instead of your laptop.
New to both? You only need two things to follow this guide: Node.js 18+ and a Boat API key. No prior Eve or Boat experience required.

How it fits together

  • Eve owns your agent logic and calls a sandbox to do filesystem and shell work.
  • @asciidev/eve-box is the adapter you plug into Eve.
  • Boat is the machine the work actually happens on.

Set it up

1

Create a Boat account

Sign in at boat.dev with GitHub and start a Boat plan, which includes a free 7-day trial. You need an account to create sandboxes. See the Boat quickstart for the full onboarding walkthrough.
2

Get a Boat API key

Create a key from the API keys tab of the Boat dashboard. Keep it secret: store it in an environment variable, never in source control.
3

Install the packages

Use a modern TypeScript config ("module": "NodeNext", "target": "ES2022", "lib": ["ES2022", "DOM"]) and "type": "module" in package.json.
4

Define the sandbox backend

Point Eve’s sandbox at Boat. In an Eve project this lives in your sandbox definition file:
sandbox.ts
That’s it: Eve agents in this project now run on Boat.

A complete example

This standalone script creates a sandbox-backed sandbox session and exercises the operations Eve relies on: running commands, reading files, and writing files. It runs on its own so you can verify your setup before wiring the backend into a larger Eve agent.
hello-sandbox.ts
You should see the file contents, the machine’s uname output, and exit code 0.

What the backend maps

Configuration

asciiBox(options) accepts:

Running agents for other people

By default a sandbox inherits your Boat account, including your secrets, secret files, GitHub-credentialed repos, and SSH identity. Fine for your own agents; if anyone else can drive the agent, set noEnv: true so they can’t read your secrets or act as you.
With noEnv: true the sandbox starts empty and confined to itself. You then give it exactly what it needs: secrets through env, and files and setup through Eve’s onSession hook.
sandbox.ts
env keys merge over your account variables (per-sandbox wins; at most 100 variables, 64 KB total; reserved Boat-internal names are rejected). writeFile/readFile move bytes in and out and run/spawn execute commands as the Eve-native equivalents of boat scp and boat ssh <id> <cmd>. A no-env sandbox can’t reach your private repos, so clone public ones or have the user authenticate inside the sandbox. See No-env sandboxes.

Reusing a prepared environment

Setup runs when each session’s sandbox is first created. If you want many sessions to start from the same fully prepared state, fork a sandbox: prepare one, stop it so its snapshot completes, then fork it; each clone keeps the entire filesystem. See Fork sandbox.

Network policies

Boat does not yet enforce Eve’s fine-grained network policies. The backend accepts "allow-all" and throws EveSandboxUnsupportedError for stricter policies ("deny-all", allow-lists, subnet rules), so you never get a false sense of isolation. If you need firewall-backed policies, run that Eve agent on a backend that supports them.

Resources

npm package

@asciidev/eve-box on npm.

Source on GitHub

Issues, examples, and the adapter source.

Boat quickstart

Install Boat and create your first sandbox.

Boat API keys

Create and manage the key this adapter needs.