You're the Operator.
They're already inside.

jackin❯ drops AI coding agents into isolated Docker containers: full autonomy inside, your host untouched outside. One CLI. Same-path mounts. Per-agent state.

02 · Vocabulary

The vocabulary is the product.

Every command in jackin❯ has a named concept behind it. Scroll to turn the page — or click a term in the rail to jump.

Operator
noun

—You. Running the CLI from your host machine. The one who decides what gets loaded into a container, and when agents are pulled back out.

03 · The Problem

The false choice.

Every AI coding agent hands you two failure modes. The false choice is thinking you have to accept either one.

Over-correct

Babysit every prompt

  • "Are you sure?" dialogs every ten seconds.
  • Permission gates on every action.
  • The agent waits on you, constantly.
  • Flow interrupted a hundred times a day.
Productivity · destroyed
Under-correct

Full YOLO on host

  • Agent reads every file — SSH keys, .env, cookies.
  • Runs any command on your machine.
  • Installs any package it wants — supply chain and all.
  • One bad prompt is an unrecoverable bad day.
Risk · maximum
Refuse both. You're the Operator — define the container instead.
04 · The Approach

Draw the boundary yourself.

jackin❯ gives you exactly one move: a clear boundary around an AI agent. You decide what's inside — toolchains, plugins, conventions — and what it can reach — paths, tokens, exposed ports. Two ways to get there.

Route 01 · Reuse

Pick up an opinionated one

Some orgs publish roles for their stack. The jackin❯ team ships the-architect — with everything the jackin❯ ecosystem requires to build jackin❯ itself. Zero config: load and start working.

Rust stablecargo-nextestcargo-watchcode-reviewfeature-devsuperpowersjackin-dev

Your framework's team can ship one just like it for yours.

clijackin load the-architect
Route 02 · Build

Cast your own

Two files, one git repo. A short jackin.role.toml declares identity and Claude plugins. A Dockerfile installs your language toolchains and system packages. Versioned, reviewable, self-contained:

Self-contained ✓
dockerfile = "Dockerfile"

[identity]
name = "Backend Engineer"

[claude]
plugins = [
  "superpowers@superpowers-marketplace",
]

[[claude.marketplaces]]
source = "obra/superpowers-marketplace"
clijackin load your-org/backend
repogithub.com/your-org/jackin-backend
Either way — you draw the boundary.
05 · Cast

A role for every job.

Smith, Jones, Brown — archetypes to adopt. Every other role, yours to cast.

AS
General-purpose
Agent Smith

The default starter. Clone, compile, commit.

AJ
Backend engineer
Agent Jones

Server-side in your company's stack.

AB
Frontend engineer
Agent Brown

UI with your team's conventions.

+

Cast your own role.

Platform engineer, SRE, security reviewer, ML researcher — whatever your team needs. Write the Dockerfile, declare the manifest, push the repo.

Read the guide →
06 · Mental Model

Think in two dimensions.

Same agent in different workspaces. Same workspace with different agents. Pick both — see what runs.

Role
the tool profile
×
Workspace
workdir + mounts
=
Running Agent
the resulting container
containerjackin-agent-smith
roleagent-smith
repogithub.com/jackin-project/jackin-agent-smith
toolsgit, gh, mise, zsh
pluginsdefault starter
workdir$(pwd)
mounts
$(pwd)rw
networkjackin-agent-smith-net
Kitchen-Sink Agent
Every toolchain.Every plugin.Every convention.

Too much context — worse decisions.

Role-Specific Agent
Only relevant tools.Only matching plugins.Only applicable conventions.

Focused context — better results, faster.

07 · How it Works

The daily loop.

Five moves. Any number of agents. A full day's flow with jackin❯.

№ 01
load
Jacking in.

Enter your project and jack in. Clones the agent repo, builds the derived image, launches the container, drops you into Claude Code.

# enter your project
$ cd ~/Projects/my-app

# jack in
$ jackin load agent-smith
  → Pulling construct:trixie      OK
  → Cloning agent-smith           OK
  → Building derived image        OK
  → Launching DinD sidecar        OK

✓ Agent loaded. You're inside.
№ 02
clone
More of me.

Same class, another instance. Spin up a second agent-smith on a different branch or service — separate container, separate state, its own network.

# first clone · auth redesign
$ cd ~/Projects/auth-redesign
$ jackin load agent-smith
✓ agent-smith #1 loaded.

# second clone · payments v2
$ cd ~/Projects/payment-v2
$ jackin load agent-smith
✓ agent-smith #2 loaded.

→ 2 agents running. Separate containers, DinD, networks.
№ 03
hardline
The hardline.

Reattach your terminal to a running agent. Closed the window, switched machines, back from a break — pick up where you left off.

$ jackin hardline agent-smith
  → Locating container            OK
  → Attaching to session          OK

✓ Session restored. History intact.
№ 04
eject
Pulling out.

Stop one agent cleanly. State persists on disk for next time — the operator decides when a construct is torn down.

$ jackin eject agent-smith
  → Saving agent state            OK
  → Stopping container            OK
  → Removing network              OK

✓ Ejected. State preserved.
№ 05
exile
Casting out.

Pull everyone out at once. Every agent stopped, every network removed. End of day, or a panic button.

$ jackin exile
  → Exiling 3 agents
     agent-smith                  OK
     the-architect                OK
     docs-writer                  OK
  → All networks removed

✓ All clear. Host untouched.
08 · Jack in

Install.

Homebrew on Mac and Linux. Tap, install, load — you're in.

brew tap jackin-project/tap
brew install jackin@preview
jackin load agent-smith