Skip to main content
This walkthrough uses sh, a recipe dabs ships with: a shell in a clean box with your current directory live-mounted at /work. Run everything from your project directory.
Screens below are verified by walkthroughs/test_quickstart.py. Generated names (like sh-a3f9c21d) are blanked to ________ — yours will differ.

0. Install dabs

That puts the binary in ~/.local/bin — no root, nothing system-wide. Set DABS_INSTALL_DIR to install it elsewhere. If the script says that directory is not on your PATH, add it and reopen your shell. dabs drives platform tools you install yourself — Apple’s container on macOS, bubblewrap + docker on Linux. It detects what is missing and prints the install command; it never installs anything for you.

1. Boot a box

--no-command boots a fresh box and leaves it up without running the recipe’s command. Note the id it prints — that is your handle for everything else.
Every boot is a new, pristine box. Booting again gives you a second box; it never reuses the first.

2. Reach in with exec

dabs exec <box> '<shell line>' runs a shell command inside the box. Your project is at /work, mounted live:
Because sh uses a live mount, the box’s write is now on your disk:
If you don’t want the box writing to your files, use a recipe with a copy: source instead — see Sources.

3. See what dabs owns

The tree reads: a project node marks the directory you ran from, and the box stands on it. live means the box is running right now. KIND names the driver running each box, and INFO says where a node lives — for a box, the ready-to-paste command that shells into it.

4. Reap it

dabs rm never tears a box down silently. Without -y it previews what it would take and asks — on a terminal, as an interactive dialog:
Answering No keeps everything (dabs: rm sh-________: kept). Pass -y to consent up front — the form agents and scripts use:

Where to next

  • Concepts — what nodes, places, and spaces actually are.
  • Recipes — write your own box in ten lines of YAML.
  • Worktrees — hand an agent a branch instead of your tree.