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