--dangerously-skip-permissions knowing they can’t touch your host or phone home to anywhere you haven’t allowed. This guide takes you from install to your first sandboxed agent, then on to parallel agents with Git worktrees.
Prerequisites
- Docker must be installed and running
- An account or API key for the harness you’ll run — an Anthropic API key or Claude Code subscription for the claude harness, an OpenAI account or API key for codex
- macOS or Linux (Windows is not currently supported)
1. Install Clawker
[Optional] Monitoring
Start the monitoring stack before your agents to get real-time dashboards Monitoring is optional but highly recommended to understand what’s happening inside your agents. It provides visibility into costs, token usage, tool calls, session events, firewall egress, DNS queries:http://localhost:5601 to explore logs (costs, token usage, tool calls, session events, firewall egress, DNS queries, per-decision eBPF egress events including bypass windows), and Prometheus at http://localhost:9090 for metrics. Index patterns for all six indices (claude-code, clawker-cli, clawkercp, clawker-envoy, clawker-coredns, clawker-ebpf-egress) and the index field mappings + retention policy are preconfigured on every monitor up by the clawker-opensearch-bootstrap service. Open Discover and pick a pattern. See Monitoring for the bootstrap pipeline details and Egress Observability for the per-decision eBPF event record shape.
2. Initialize and Configure Your Project
- Project name — defaults to the current directory name (must be lowercase)
- Language preset — Python, Go, Rust, Node, Java, Ruby, C/C++, C#/.NET, Bare, or “Build from scratch”
- Save or customize — accept the preset as-is, or step through each field to tailor it
- A
.clawker.yamlconfig file pre-filled with the right packages, language stacks, and firewall domains for your language - A
.clawkerignorefile (.gitignore-style syntax) that controls which files and directories are excluded from the container workspace — in snapshot mode, matching paths are excluded from the copy; in bind mode, matching directories are masked with empty tmpfs overlays. Useful for platform-specific build artifacts (e.g.,dist/,build/,node_modules/) that can cause issues when switching between macOS and Linux - A project entry in Clawker’s registry so it always knows the project root
~/.config/clawker/settings.yaml) and XDG directories are bootstrapped automatically on first run. (Run clawker settings edit to update Clawker CLI settings, like disabling the global firewall, monitoring stack changes, etc.)
Customizing Your Config
You can edit.clawker.yaml directly, or use the interactive TUI editor:
3. Build the Image
clawker-<project>:base) holding the harness-agnostic layers from your .clawker.yaml — system packages, language stacks, custom instructions — and a harness image layered on top, tagged with the harness name (e.g. clawker-<project>:claude). The default harness image also gets the :default alias. The default is claude out of the box; the build.harness config key picks another. To build a specific harness instead, pass its name: clawker build -t codex. Docker’s layer cache is used, so unchanged layers are skipped; use --no-cache to force a full rebuild.
4. Run Your First Agent
What Happens Behind the Scenes
When you run this command, Clawker:- Creates the container with your project directory mounted at its real host path, plus persistent volumes — the config volume declared by the harness bundle (
~/.claudefor the claude harness,~/.codexfor codex) and a separate shell-history volume — and streams the container’s mTLS bootstrap material (per-agent cert + key + CA + a single-use Hydra JWT, minted in your host’s clock) into it - Brings up the clawker control plane if it isn’t already running — a long-lived per-host daemon that owns the firewall lifecycle, eBPF program attachment, and the mTLS command channel to every agent — and waits for it to be fully ready (including a host↔CP clock-sync check) before starting the container
- Starts the container with
clawkerdas PID 1; the control plane attaches eBPF firewall programs from outside and dials intoclawkerdover mTLS to drive in-container init. When the monitoring stack is running, every firewall decision from those eBPF programs (allowed / denied / bypassed) begins streaming to theclawker-ebpf-egressOpenSearch index — see Egress Observability - Forwards SSH/GPG agent sockets and Git HTTPS credentials from your host, stages the harness’s managed config from your host (for the claude harness: settings, plugins, skills, agents — never credentials; you authenticate once inside the container and the token persists in the config volume), runs any
post_initscript you’ve configured - Signals the agent is ready, at which point the agent daemon forks the harness CLI as the unprivileged container user (
clawker) — a kernel-side privilege drop
/etc/claude-code/CLAUDE.md, so the agent knows it’s in a clawker container and can help troubleshoot issues and provide guidance when running into constraints.
5. Parallel Agents with Worktrees
Run multiple agents on separate branches using Git worktrees:--worktree branch:base flag creates a Git worktree off the base branch and mounts it into the container. Each agent works on its own branch with no conflicts.
Worktree containers apply extra security lockdown for unattended sessions —
.git/hooks and .git/config are masked read-only, which changes a few git behaviors (notably git push -u). See Worktree Caveats before your first worktree session.wt alias collapses the boilerplate — it expands to run --rm -it --agent $1 --worktree $2 @, and arguments after it pass through to the harness, so the commands above become:
Managing Resources
Clawker mirrors Docker CLI patterns but only operates on Clawker-managed resources:Firewall Management
What’s Next
Configuration
Full
.clawker.yaml reference with layered config and monorepo supportCommand Aliases
One-word shortcuts for full agent launches — shipped defaults, placeholders, team sharing
Security & Firewall
Understand the deny-by-default firewall and how to configure domain access
Custom Images
Packages, language stacks, Dockerfile instructions, and injection points
Harnesses
Select and run coding-agent harnesses beyond the built-in claude and codex
Stacks
Language toolchains you layer into an image — the built-in stacks and how to author your own
Bundles
Install distributed bundles of harnesses, stacks, and monitoring extensions
Credential Forwarding
SSH, GPG, and Git HTTPS forwarding, plus in-container harness authentication