slot
Parallel, isolated working environments for AI agents.
slot init # set up
slot create 1 # spin up a fresh sandbox
slot start 1 # open Claude Code in it
slot tree add 1 xyz # work a second branch/PR beside the first (same sandbox)
slot start 1 --tree xyz # open a session on that branch — its own memory
slot tree pull 1 --reset # overwrite a branch in place; agent memory is kept
slot diff 1 my-feature # review what the agent did
slot push 1 my-feature # send your working branch back — to any branch name
slot teardown 1 # clean up
Each slot is a separate Docker microVM with its own clones of your projects. Agents work inside; your real code stays clean. Two modes: default (fast, for personal projects) and safe (audit log, staging buffer, scrubbed env, redacted-secrets allowlist — for production code).
Install
Published on PyPI as slot-cli (the command stays slot):
uv tool install slot-cli # installs the `slot` command
uvx --from slot-cli slot --help # or run it without installing
# or: pipx install slot-cli
From a local checkout instead (e.g. to try unreleased changes):
uv build && uv tool install --force ./dist/slot_cli-*.whl
Requires Python 3.11+, git, and sbx (Docker's sandbox CLI). On
Linux, /dev/kvm accessible. See
docs/01-getting-started/installation.md.
New here?
Read GUIDE.md — a plain-English, example-first walkthrough of every feature (including running multiple repos in one slot).
Documentation
Full docs are in docs/. Quick links:
- What is slot? — 2-minute mental model
- Your first slot — end-to-end walkthrough
- Concepts — glossary
- Default mode / Safe mode — the two workflows
- Secrets — the
.agentsredacted-marker rule - Hooks — extending slot
- Integrations — wiring host services into sandboxes (Plyn walkthrough)
- Commands reference
- Why this shape — design choices
- Threat model
What's new in 0.3.4: flexible push, no-co-author commits, safe config
- Push to any branch from your working branch.
slot push N <branch>sends your current work onto<branch>in the real repo even when your slot is on a differently-named branch (creating it if new).--from <ref>names the source explicitly. - Commits carry no co-author. New slots disable the "Co-Authored-By: Claude"
trailer (
includeCoAuthoredBy = falsein the slot's.claude-store). sandbox.tomlis backed up before any rewrite (slot init --force) tosandbox.toml.bak, so hand edits are recoverable.
Full list in CHANGELOG.md.
What's new in 0.3.4: visibility — status, insights, memory
Reading straight off each slot's durable .claude-store on the host (no
sbx exec):
slot status [N]— the orchestrator dashboard: per-worktree branch, dirty count, ahead/behind base, sandbox state, session count, token spend, and last activity. What you want when running several agents at once.slot insights [N] [--by slot|day]— token spend rolled up per slot or per day; pass--rate-in/--rate-out(USD per 1M) for an estimated cost.slot memory show|edit|prune N— inspect, edit, or prune a slot's shared global memory layer — makes "what does this agent know?" visible.
What's new in 0.3.4: worktrees + durable memory
slot tree— hold multiple branches/PRs in one slot at once, via git worktrees, inside a single long-lived sandbox. No more teardown→create to switch branches.slot tree add N <ref> [--project P] [--name NAME] [--detach]slot tree pull N [tree] [--rebase | --reset]— update a branch in place;--resethard-overwrites it (discards local git changes) but never touches agent memoryslot tree ls N·slot tree rm N <name> [--force]slot start N --tree NAME— open a session inside a worktree
- Durable agent memory. Each slot gets a
.claude-store/on the host-mounted workspace, and the sandbox'sCLAUDE_CONFIG_DIRpoints at it — so session history and memory survivesbx stop/rm/rebuild, the way Plyn's data survives in its host volume. - Two-tier memory across worktrees. Each worktree gets its own per-tree memory (keyed by folder); all sessions in the slot share one global memory layer for cross-cutting facts.
- Design:
docs/worktrees-memory-plan.md.
What's new in 0.3.3
- Renamed TaskFlow to Plyn throughout the docs, integration walkthrough, and starter pack — same app, new name. Existing slot projects need no changes; only the host-side container, volume, and skill names rebrand.
- Integration doc is now
docs/02-using-slot/integrations/plyn.md - Starter pack is now
plyn-starter-pack/, withsetup.shaccepting env-var overrides so legacytaskflow-datavolumes can be migrated in-place — see the pack README
What's new in 0.3.2
- Per-project
branchinsandbox.toml— pin slots to a specific branch instead of inheriting whatever was checked out on the host - Per-project
skills = [...]insandbox.toml— curate which~/.claude/skills/entries get copied into slots; omit for the current "copy everything" behaviour slot createprints the actual branch checked out for each cloned project — no more guessing- Wizard input forgiveness — typing
YorNinto path prompts is now detected as "yes use default" / "no skip", instead of being taken as a literal one-letter path - Plyn integration documented — new
docs/02-using-slot/integrations/plyn.mdwalks through the full setup, with a starter pack for one-command install - 126 tests, up from 90
What's new in 0.3.1
- Unified
[[project.secrets]]block replaces the singleenv =field — supports redacted env files, service account keys, certs, whatever - Allowlist policy for safe mode: secret host filenames must contain
.agents(e.g..env.agents,.keys/sa-key.agents.json) - Backwards compatible — old
env = "..."configs still work, with a deprecation note - 90 tests, up from 67
- Docs split into 24 focused files instead of three big ones
See docs/02-using-slot/secrets.md for the secrets story end-to-end.
Status
v0.3.1 — feature-complete for the core loop. See what we said no to for things that aren't planned.
License
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file slot_cli-0.3.4.tar.gz.
File metadata
- Download URL: slot_cli-0.3.4.tar.gz
- Upload date:
- Size: 64.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.12 {"installer":{"name":"uv","version":"0.11.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5046cbfe8dfa6646f789d117a5bc6620a0afa2b7e332245571bcdb6e3b6abff9
|
|
| MD5 |
d222a86592e3c4d447572287536c59d6
|
|
| BLAKE2b-256 |
1a1735528e14e0894c9b196700493a2742eb106a51dcd1f90304fe19a22c4671
|
File details
Details for the file slot_cli-0.3.4-py3-none-any.whl.
File metadata
- Download URL: slot_cli-0.3.4-py3-none-any.whl
- Upload date:
- Size: 63.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.12 {"installer":{"name":"uv","version":"0.11.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
808f9f3c0bde1077449ced4645ea465f6e401592a7b697cc1d91d6f202ef75dc
|
|
| MD5 |
0c0be624740abb58e88f74e5db077475
|
|
| BLAKE2b-256 |
356f2baf753ff50b175c2bd95025b4e65fa4f356b43bb915a0936be59c4158c3
|