Skip to content

Configuration File

PathPurpose
~/.config/jackin/config.tomlOperator configuration (workspaces, global mounts)
~/.jackin/agents/Cached agent repository checkouts
~/.jackin/data/<container-name>/Persisted agent state (Claude history, settings, GitHub CLI config, plugins)

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.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
FieldDescription
workdirContainer working directory
mountsArray of mount specifications
mounts[].srcHost path
mounts[].dstContainer path
mounts[].readonlyRead-only flag
allowed_agentsList of allowed agent selectors
default_agentDefault agent selector
last_agentMost 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.

[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/*"].

Each agent instance stores state at ~/.jackin/data/<container-name>/:

File/DirectoryPurpose
.claude/Claude Code session history, conversation context
.claude.jsonClaude Code settings
.config/gh/GitHub CLI authentication and settings
plugins.jsonInstalled 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.