Skip to content

The Construct Image

projectjackin/construct:trixie is the shared base Docker image for every agent. In The Matrix, the construct is the white void — the base simulation loaded before a mission. In jackin’, it’s the foundation layer that provides system tools, shell environment, and container infrastructure.

Every agent Dockerfile starts from the construct:

FROM projectjackin/construct:trixie

The construct is built on Debian Trixie and includes:

PackagePurpose
bashDefault shell for scripts
zsh + Oh My ZshInteractive shell with autosuggestions
git + Git LFSSource control with large file support
curlHTTP client
jq + yqJSON and YAML processors
openssh-clientSSH for git operations
sudoPrivilege escalation (passwordless for claude user)
treeDirectory visualization
PackagePurpose
ripgrep (rg)Fast regex search
fd-find (fd)Fast file finder
fzfFuzzy finder for interactive selection
PackagePurpose
misePolyglot language version manager
Docker CLI + ComposeContainer operations via DinD
GitHub CLI (gh)Repository, PR, and issue operations
Starship promptInformative terminal prompt

The construct creates a claude user with:

  • Home directory at /home/claude
  • Zsh as the default shell
  • Passwordless sudo access
  • Oh My Zsh with autosuggestions plugin
  • Starship prompt configured
  • mise shims in $PATH

The construct source code lives at docker/construct/ in the jackin’ repository. It’s automatically built and pushed to Docker Hub via GitHub Actions when changes are made to that directory.

The image is tagged as:

  • projectjackin/construct:trixie — the stable tag
  • projectjackin/construct:trixie-{sha} — commit-specific tags

When you load an agent, jackin’ doesn’t use the construct directly. It generates a derived Dockerfile that adds:

  1. User remapping — adjusts the claude user’s UID/GID to match your host user
  2. Claude Code installation — installs the Claude Code CLI
  3. Runtime entrypoint — the script that configures git, authenticates with GitHub, installs plugins, and launches Claude
  4. Plugin installation — any Claude plugins declared in the agent manifest

Agent repos add their tools on top of the construct. The construct provides the foundation — agents provide the specialization:

┌─────────────────────────────────┐
│ Derived Layer (jackin-managed) │ Claude Code, entrypoint, user mapping
├─────────────────────────────────┤
│ Agent Layer (your Dockerfile) │ Rust, Node, Python, custom tools
├─────────────────────────────────┤
│ Construct (shared base) │ Debian, git, Docker CLI, mise, zsh
└─────────────────────────────────┘

This layered approach means:

  • Agent authors focus on their tools, not infrastructure
  • The construct can be updated independently (security patches, new tools)
  • Docker layer caching makes builds fast