Run coding agents in isolated Docker containers
Project description
clankr
Run Claude Code in isolated Docker containers. --dangerously-skip-permissions without the danger.
install
uv tool install clankr
setup
clankr init
# prompts for: github username, bot username, PAT
Create a classic PAT on the bot account with repo scope.
per-repo setup (recommended)
clankr setup-repo user/project
# then accept the invitation (log in as bot → github.com/notifications)
This adds the bot as a collaborator and configures the repo with:
- Branch protection: PRs required for main, owner bypasses
- Squash merge only, auto-delete branch on merge
This step is optional — agents work without it, but branch protection prevents them from pushing directly to main.
usage
clankr launch user/project # interactive, bare profile
clankr launch -p gsd user/project # GSD workflow
clankr launch -d -p gsd user/project # detached (tmux)
clankr launch -d -p gsd -s auth-fix user/project # named slot
clankr launch /path/to/local/repo # local repo
clankr attach project-1 # reattach to detached agent
clankr ls # list slots
clankr rm project-1 # remove (warns if unpushed)
clankr clean # remove all stopped clean slots
$ clankr ls
SLOT PROFILE STATUS REPO
hello-world-1 gsd detached /home/max/.local/share/clankr/repos/hello-world-1
project-2 gsd running /home/max/.local/share/clankr/repos/project-2
project-1 bare stopped /home/max/.local/share/clankr/repos/project-1
profiles
Each profile is an isolated claude code config — system prompt, settings, hooks, extensions.
bare— claude code, skip permissions, no extrasgsd— get shit done workflow framework
Create your own: ~/.config/clankr/profiles/<name>/ with any of:
CLAUDE.md— system promptsettings.json— claude code settingsinit— executable script that runs inside the container before claude starts (install plugins, extensions, etc.)
clankr profiles # list available profiles
cp -r ~/.config/clankr/profiles/gsd ~/.config/clankr/profiles/my-custom
vim ~/.config/clankr/profiles/my-custom/CLAUDE.md
how it works
- each slot gets its own repo clone and claude config
- credentials copied fresh from host
~/.claude/.credentials.jsonon each launch (tokens expire ~8h) --dangerously-skip-permissionsbaked into the container-dwraps the container in a tmux session — survives SSH disconnects- git identity: configurable bot account with scoped PAT
- branch protection via
setup-repo: require PR + approval for main, owner bypasses, squash-only merges
commands
| Command | Description |
|---|---|
clankr init |
First-time setup: config + default profiles |
clankr launch |
Launch an agent (-p profile, -s slot, -d detach) |
clankr ls |
List all slots |
clankr attach <slot> |
Attach to detached agent's tmux session |
clankr rm <slot> |
Remove slot (warns if unpushed work) |
clankr clean |
Remove all stopped clean slots |
clankr logs <slot> |
Show container logs |
clankr setup-repo <repo> |
Add bot collaborator + branch protection + squash merge |
clankr profiles |
List available profiles |
clankr version |
Print clankr version |
paths
| What | Where |
|---|---|
| Config | ~/.config/clankr/config.toml |
| Profiles | ~/.config/clankr/profiles/ |
| Dockerfile override | ~/.config/clankr/Dockerfile |
| Repo clones | ~/.local/share/clankr/repos/ |
| Slot state | ~/.local/share/clankr/run/ |
Project details
Release history Release notifications | RSS feed
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 clankr-1.2.0.tar.gz.
File metadata
- Download URL: clankr-1.2.0.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","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 |
0e6cd51b97747fa0d66025dbce97e47542863c95cff6d8ca99a89b34b6fd44e6
|
|
| MD5 |
bf092baa3893bf92a75267b86a131594
|
|
| BLAKE2b-256 |
40ab5ddf02bf35b01ec07360953ec573fa1eea8e193ea836276c04cc4b5f9ff2
|
File details
Details for the file clankr-1.2.0-py3-none-any.whl.
File metadata
- Download URL: clankr-1.2.0-py3-none-any.whl
- Upload date:
- Size: 13.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","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 |
fa0f031da42dbb8d308a3d282bc29bcda2f8ab9ffdb7f3cdca2de0dd5d6bd476
|
|
| MD5 |
4975af3cc5df739c8fc61cad0b8e7d6c
|
|
| BLAKE2b-256 |
4de6d10de8d31f7c2a1d0a70c2ebbb2d98af1d7d0db622e63c3852a6b481e96b
|