Configuration File
Storage locations
Section titled “Storage locations”| Path | Purpose |
|---|---|
~/.config/jackin/config.toml | Operator configuration (workspaces, global mounts) |
~/.jackin/agents/ | Cached agent repository checkouts |
~/.jackin/data/<container-name>/ | Persisted agent state (Claude history, settings, GitHub CLI config, plugins) |
config.toml schema
Section titled “config.toml schema”The configuration file is TOML format at ~/.config/jackin/config.toml. It’s managed through CLI commands — you generally don’t need to edit it by hand.
Workspaces
Section titled “Workspaces”[workspaces.my-app]workdir = "/home/user/Projects/my-app"allowed_agents = ["agent-smith", "the-architect"]default_agent = "agent-smith"last_agent = "the-architect"
[[workspaces.my-app.mounts]]src = "/home/user/Projects/my-app"dst = "/home/user/Projects/my-app"readonly = false
[[workspaces.my-app.mounts]]src = "/home/user/cache"dst = "/cache"readonly = true| Field | Description |
|---|---|
workdir | Container working directory |
mounts | Array of mount specifications |
mounts[].src | Host path |
mounts[].dst | Container path |
mounts[].readonly | Read-only flag |
allowed_agents | List of allowed agent selectors |
default_agent | Default agent selector |
last_agent | Most recently used agent selector for this workspace |
When you use jackin workspace add, the common case is to make workdir and the first mount destination the same absolute path. If you need a different container layout, use --no-workdir-mount and define mounts explicitly.
Global mounts
Section titled “Global mounts”[docker.mounts]gradle-cache = { src = "/home/user/.gradle/caches", dst = "/home/claude/.gradle/caches", readonly = true }
[docker.mounts."chainargos/*"]secrets = { src = "/home/user/.chainargos/secrets", dst = "/secrets", readonly = true }Global mounts are stored by name. Unscoped mounts live directly under [docker.mounts]. Scoped mounts live under a scope key such as [docker.mounts."chainargos/*"].
Persisted state
Section titled “Persisted state”Each agent instance stores state at ~/.jackin/data/<container-name>/:
| File/Directory | Purpose |
|---|---|
.claude/ | Claude Code session history, conversation context |
.claude.json | Claude Code settings |
.config/gh/ | GitHub CLI authentication and settings |
plugins.json | Installed Claude plugins list |
This state is mounted back into the container on subsequent loads, so the agent resumes where it left off.
Delete with jackin purge <agent> to start fresh.