yolo-jail

module
v0.10.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 18, 2026 License: Apache-2.0

README

YOLO Jail

CI License

A secure, isolated container environment for AI coding agents (Claude Code, Copilot, opencode, pi, Codex, Antigravity) to safely modify codebases without compromising host security or identity. Agents are selected with the packs config key — see Agents. Runs on Linux and macOS (Apple Silicon and Intel) with Podman or Apple Container.

Why?

AI coding agents like Claude Code, GitHub Copilot, and OpenAI Codex have a --yolo mode that lets them run shell commands without confirmation. This is powerful but dangerous — agents can access your SSH keys, cloud credentials, git identity, and anything else on your machine.

YOLO Jail lets you run agents in YOLO mode safely by isolating them in a container with:

  • ❌ No access to ~/.ssh/, ~/.gitconfig, or cloud credentials
  • ✅ Separate auth (gh auth login, codex login, etc. inside the jail)
  • ✅ Your codebase mounted read-write at /workspace
  • ✅ Persistent tool state across restarts
  • ✅ Pre-configured MCP servers, LSP servers, and modern CLI tools

Features

  • Isolated: Runs in a podman or Apple Container container with no access to host credentials
  • Optimized: Pre-installed with modern, fast tools (rg, fd, bat, eza, jq, delta, fzf)
  • Restricted: Blocked tools return clear errors with suggestions (e.g., rg instead of grep)
  • Reproducible: Defined entirely via Nix Flakes
  • Agent-Ready: MCP presets (Chrome DevTools, Sequential Thinking) and LSP servers (Pyright, TypeScript) — enable by name
  • Configurable: Per-project config via yolo-jail.jsonc, user defaults via ~/.config/yolo-jail/config.jsonc
  • Container Reuse: Same workspace reuses the same container via exec
  • Runtime Flexible: Works with podman (Linux/macOS) and Apple Container (macOS native)
  • Cross-Platform: Full support for Linux and macOS (Apple Silicon and Intel)

Prerequisites

Core requirements (both platforms):

  • Nix (with flakes enabled)
  • A container runtime — one of:
    • Podman (preferred on Linux; Podman Machine on macOS)
    • Apple Container (native macOS, brew install container)

Additionally, to install from source:

Platform specifics (in priority order):

  • Linux / x86_64 — any modern distribution with Podman. No extra setup. The primary target.
  • macOS / Apple Silicon — via a native arm64 Linux container (Apple Container or Podman Machine); no emulation. See docs/guides/macos.md.
  • Linux / arm64 (aarch64-linux) — supported and CI-tested (image built + integration-tested natively on ubuntu-24.04-arm); same nix image as x86_64, no arch switch.
  • macOS / Intel — also supported (x86_64 Linux container).

No builder is needed on macOS — the standard image builds entirely from the NixOS binary cache. If you add a package that isn't cached, the from-source Linux build is offloaded automatically to a tiny throwaway container on whichever container runtime is already up (Podman or Apple Container); no VM, no sudo, no setup.

Install

Every channel below ships the same single yolo binary. Pick whichever fits — but read the note under each: a launch needs more than the binary.

Every launch also needs a flake bundle — the copy of yolo's build inputs (flake.nix, its lockfile, the prebuilt in-jail binaries) that yolo builds the jail from. Homebrew and the from-source install put one beside the binary for you; go install and pipx/uvx ship the binary alone, so they need a checkout named by YOLO_REPO_ROOT. yolo never consults your working directory to find it. Full table: docs/guides/USER_GUIDE.md.

Homebrew (easiest, macOS and Linux)
brew tap mschulkind-oss/tap
brew install mschulkind-oss/tap/yolo-jail

Works on macOS and Linuxbrew. Single command, auto-upgrades with brew upgrade. No source checkout, no just required.

Go
go install github.com/mschulkind-oss/yolo-jail/cmd/yolo@latest

Builds straight from the module. Needs Go on the host; puts yolo in $GOBIN (or $(go env GOPATH)/bin).

The module holds no flake bundle, so this channel gets the binary and nothing else: the first yolo refuses with "Cannot find yolo-jail repo root" until you clone the repo and export YOLO_REPO_ROOT=/path/to/checkout. If you are going to have a checkout anyway, from source is the channel that wants one.

pipx / uvx
pipx install yolo-jail
# or, to run without installing:
uvx yolo-jail

The PyPI distribution is per-platform wheels wrapping the same prebuilt Go binary — there is no Python code and no Python runtime dependency beyond the installer itself. It exists so the pre-Go audience keeps a working upgrade path.

A wheel carries the binary alone, so like go install this channel needs YOLO_REPO_ROOT pointed at a checkout before the first launch will do anything.

From source

For hacking on yolo-jail itself, or running an unreleased working tree. Identical on Linux and macOS:

git clone https://github.com/mschulkind-oss/yolo-jail.git
cd yolo-jail
just setup             # pinned toolchain (mise) + Go module deps
just deploy            # builds + installs the yolo CLI

To upgrade later: cd yolo-jail && git pull && just deploy

Upgrading from the Python version

yolo-jail used to ship as a Python package installed with uv tool install. just deploy retires that install for you — it uninstalls the yolo-jail uv tool and clears the console scripts it left in $GOBIN (yolo, yolo-ps, yolo-host-processes, yolo-claude-oauth-broker-host), which otherwise make go install fail with build output "…/yolo" already exists and is not an object file.

Nothing is deleted that cannot be positively identified as part of that old install. If something unrecognized is sitting at $GOBIN/yolo, the migration stops and asks you to look at it rather than guessing. uv itself is no longer a prerequisite.

Optional — User-level defaults
yolo init-user-config
# Edit: ~/.config/yolo-jail/config.jsonc

Platform-specific runtime setup (one-time, needed whichever channel you installed from):

# Linux — Podman
sudo pacman -S podman                   # or apt/dnf/pacman for your distro

# macOS — Apple Container (native, recommended)
brew install container skopeo
container system start

# macOS — Podman Machine
brew install podman
podman machine init --cpus 4 --memory 8192 --disk-size 50
podman machine start

On macOS, image builds use the NixOS binary cache by default — no builder to set up. If you add packages that aren't in the cache (or build offline), the from-source Linux build is offloaded automatically to a throwaway container on the container runtime you already have running. See docs/guides/macos.md.

For development, see CONTRIBUTING.md.

Quick Start

Works identically on Linux and macOS:

# Navigate to any repository
cd ~/code/my-project

# Start an interactive shell in the jail
yolo

# Or run a command directly (agent installation is being reworked; see the Agents section)
yolo -- claude           # Claude Code in YOLO mode
yolo -- copilot          # Copilot with --yolo auto-injected
yolo -- opencode         # opencode.ai agent (auto-approve)
yolo -- pi               # pi.dev coding agent (auto-approve)
yolo -- codex            # OpenAI Codex CLI (auto-approve, sandbox off)

# Force a new container
yolo --new -- bash

# ALWAYS run this after every yolo-jail.jsonc edit, before restarting
yolo check

# Check your setup
yolo doctor

# List running jails
yolo ps

# Show full configuration reference
yolo config-ref

On macOS, yolo doctor additionally checks the VM backend (Podman Machine or Apple Container system status) — confirming the runtime is up, so that an uncached build can offload to a throwaway container on it.

First Run

On first run, YOLO Jail will:

  1. Build the Linux container image via nix build (takes a few minutes — both Linux and macOS download from the NixOS binary cache; on macOS, any non-cached package is built by offloading to an ephemeral container on the running runtime — no VM, no sudo, no first-boot)
  2. Load the image into your container runtime
  3. Install MCP servers, LSP servers, and utilities
  4. Start your command

Subsequent runs are fast — tools are cached in persistent storage on both platforms.

Auth Setup (One-Time)

Inside the jail, authenticate with your tools:

gh auth login          # GitHub CLI
# Claude Code authenticates via /login on first run
# codex login / opencode auth login / pi's /login work the same way

Each coding agent authenticates itself inside the jail — see the per-agent auth column in Agents. Agents that take a provider API key (opencode, pi, codex) can instead read it from env_sources.

These tokens are stored in ~/.local/share/yolo-jail/home/ (same path on Linux and macOS) and persist across jail restarts. On both platforms, a host-side systemd timer (installed by just deploy) periodically refreshes the shared Claude OAuth token so jails never race the refresh flow.

Configuration

Create a per-project config in yolo-jail.jsonc:

{
  "runtime": "podman",              // or "container" (Apple Container)
  "packages": ["strace", "htop"],   // extra nix packages
  "mounts": ["/path/to/ref-repo"],  // extra read-only mounts
  "network": {
    "mode": "bridge",               // or "host" for host networking
    "ports": ["8000:8000"]          // publish ports in bridge mode
  },
  "security": {
    "blocked_tools": ["curl", "wget"]
  }
  // "cache_relocations" exists too, but NOT here — user scope only, see below
}

Workspace config merges over user defaults (~/.config/yolo-jail/config.jsonc), and a sibling yolo-jail.local.jsonc — meant to be gitignored for per-machine overrides — auto-merges over the workspace config. Lists merge and dedupe, scalars override.

Two keys opt out of that merge, and both for the same reason: a workspace config lives inside the jail's writable mount, so an agent could otherwise grant itself something. packs and cache_relocations are read straight from ~/.config/yolo-jail/config.jsonc and nowhere else; yolo check errors if either appears in yolo-jail.jsonc.

// ~/.config/yolo-jail/config.jsonc — never yolo-jail.jsonc
{
  // Everything a jail has beyond a bare shell. A bare NAME selects a pack that
  // ships with yolo; an address brings one from elsewhere. Nothing is on by
  // default, so with no entries here a jail has no coding agent.
  "packs": [
    "claude",                                    // a shipped agent pack
    "file:///home/me/code/my-skills-pack",       // a local pack of your own
    "git+ssh://git@github.com/org/repo//packs/team?ref=main"
  ]
}

A pack delivers a coding agent (its CLI, config files, skills and briefing), or your own shared skills and house rules, or both. An EMBEDDED pack — one shipped with yolo — may read a host file, which is how claude and pi compose your own settings.json into the jail. A FETCHED pack never can: installing a third-party pack approves distributing content, not handing that repository your host config. Run yolo pack --help for authoring and yolo pack install to fetch.

On cache_relocations specifically: it moves a subdir of the jail cache onto other storage, bind-mounted read-write — which is the read-write host mount an agent must not be able to grant itself. Podman only.

// ~/.config/yolo-jail/config.jsonc — never yolo-jail.jsonc
{
  "cache_relocations": {
    // cache subdir name → absolute host path (the parent must already exist)
    "huggingface": "/data/relocated/yolo-jail/cache/huggingface"
  }
}

Moving an existing cache needs a stop-copy-configure-restart dance — see Storage & Persistence in the user guide.

Run yolo check after every edit to yolo-jail.jsonc to validate the merged config, dry-run the generated jail agent configs, and preflight the image build before restarting into the jail. Inside a running jail, yolo check --no-build is the fast way to validate config changes mid-session before asking for a restart.

Run yolo config-ref for the full configuration reference.

Agents

[!IMPORTANT] The agents config key has been REMOVED. An agent arrives as a packs entry. A config still carrying agents is rejected with an error.

Name the pack you want, in your USER config (~/.config/yolo-jail/config.jsonc — a workspace config cannot name one):

{ "packs": ["claude"] }   // also: copilot, codex, opencode, pi, agy

Nothing is on by default, so a jail with no packs really has no coding agent, and says so at launch and in yolo check.

YOLO Jail is a library of coding agents. Which ones a jail gets follows from the packs you configure, and nothing in the core knows what an agent is — the six below are pack files (packs/*/pack.json), not Go code.

  • No rebuild: agents install lazily on first use, so changing packs never rebuilds the image — just restart the jail.

Each agent is launched with its autonomous/YOLO mode auto-enabled (the jail container is the security boundary), and authenticates itself inside the jail — host credentials never cross the boundary.

Agent pack name Run Install Auth (inside the jail)
Claude Code claude yolo -- claude native installer /login on first run
GitHub Copilot copilot yolo -- copilot npm @github/copilot /login (GitHub OAuth)
opencode opencode yolo -- opencode npm opencode-ai opencode auth login, or a provider key (e.g. ANTHROPIC_API_KEY/OPENAI_API_KEY)
pi (pi.dev) pi yolo -- pi npm @earendil-works/pi-coding-agent pi /login, or a provider key
OpenAI Codex codex yolo -- codex native installer codex login (ChatGPT), or OPENAI_API_KEY
Antigravity agy yolo -- agy native installer Google sign-in on first run

Provider API keys are easiest to supply via env_sources (a gitignored dotenv file) so they reach the agent inside the jail without living in your committed config. MCP servers you configure (mcp_presets / mcp_servers) are wired into every selected agent that supports MCP — claude, copilot, opencode, codex, and agy (pi has no native MCP).

Isolation backends

The runtime config picks how the agent is isolated:

  • podman (Linux, default) / container (macOS, Apple Container) — the agent runs in a Linux container. Strongest boundary (kernel/VM isolation, resource caps). On macOS this means a lightweight Linux VM — native arm64 on Apple Silicon (no emulation); see docs/guides/macos.md.

Security

  • Strict Isolation: No access to host ~/.ssh/, ~/.gitconfig, or cloud credentials
  • Separate Auth: Run gh auth login, codex login, etc. inside the jail once
  • User Mapping: Files created in the jail are owned by your host user (matching UID/GID)
  • Blocked Tools: Configurable list of tools that return clear error messages
  • Config Safety: Changes to yolo-jail.jsonc require human confirmation at next startup — agents cannot silently modify the jail environment. See docs/reference/config-safety.md.
  • Read-Only Mounts: Extra mounts are read-only by default

Troubleshooting

Run yolo doctor to diagnose common setup issues:

yolo doctor

This checks your container runtime, Nix installation, configuration files, image status, and running containers.

Run yolo check after every config edit, especially when handing work from an outside agent into the jail or when an in-jail agent edits yolo-jail.jsonc mid-session and needs to verify the restart will succeed.

Contributing

See CONTRIBUTING.md for development setup and guidelines.

Documentation

License

Apache License 2.0

Directories

Path Synopsis
cmd
goprobe command
Command goprobe is a deployment-mechanics tripwire.
Command goprobe is a deployment-mechanics tripwire.
yolo command
Command yolo is the yolo-jail CLI.
Command yolo is the yolo-jail CLI.
yolo-cglimit command
Command yolo-cglimit is the in-jail client for the cgroup-delegate loophole: it asks the host-side delegate to create a child cgroup with the requested limits, move THIS process into it, and then execs the user's command.
Command yolo-cglimit is the in-jail client for the cgroup-delegate loophole: it asks the host-side delegate to create a child cgroup with the requested limits, move THIS process into it, and then execs the user's command.
yolo-entrypoint command
Command yolo-entrypoint is the in-jail bootstrap (PID-1 role): it generates every file a jail session needs (shims, launchers, per-agent configs, bashrc, mise config, CA bundle, helper scripts), spawns the socat port-forwarders and jail-daemon supervisor, then execs bash with the requested command.
Command yolo-entrypoint is the in-jail bootstrap (PID-1 role): it generates every file a jail session needs (shims, launchers, per-agent configs, bashrc, mise config, CA bundle, helper scripts), spawns the socat port-forwarders and jail-daemon supervisor, then execs bash with the requested command.
yolo-jaild command
Command yolo-jaild is the in-jail infrastructure daemon.
Command yolo-jaild is the in-jail infrastructure daemon.
yolo-journalctl command
Command yolo-journalctl is the in-jail client for the journal-bridge loophole: it forwards a journalctl invocation to the host, streams the output back, and exits with the host process's code.
Command yolo-journalctl is the in-jail client for the journal-bridge loophole: it forwards a journalctl invocation to the host, streams the output back, and exits with the host process's code.
yolo-ps command
Command yolo-ps is the in-jail client for the host-processes loophole.
Command yolo-ps is the in-jail client for the host-processes loophole.
yolo-serial command
Command yolo-serial is the in-jail client for the serial loophole.
Command yolo-serial is the in-jail client for the serial loophole.
internal
agentcfg
Package agentcfg is the pure, codec-agnostic composition engine behind yolo's generated-config pipeline (docs/plans/agent-settings-composition.md, §3.1 pipeline, §4 layers, §5 overlay).
Package agentcfg is the pure, codec-agnostic composition engine behind yolo's generated-config pipeline (docs/plans/agent-settings-composition.md, §3.1 pipeline, §4 layers, §5 overlay).
agentcfg/codec
Package codec is the decode/encode boundary of yolo's generated-config composition pipeline (docs/plans/agent-settings-composition.md §3.1 pipeline, §3.3 format-agnostic).
Package codec is the decode/encode boundary of yolo's generated-config composition pipeline (docs/plans/agent-settings-composition.md §3.1 pipeline, §3.3 format-agnostic).
agentcfg/luahook
Package luahook is the sandboxed Lua interpreter yolo runs a pack's derive.lua in — a PRODUCER of config values, never an effect (docs/reference/pack-system.md §7, docs/reference/providers.md).
Package luahook is the sandboxed Lua interpreter yolo runs a pack's derive.lua in — a PRODUCER of config values, never an effect (docs/reference/pack-system.md §7, docs/reference/providers.md).
agentcfg/manifest
Package manifest declares the per-surface schema behind yolo's generated-config composition pipeline (docs/plans/agent-settings-composition.md §1.1 surface inventory, §3.3 codecs, §4 layers/scope).
Package manifest declares the per-surface schema behind yolo's generated-config composition pipeline (docs/plans/agent-settings-composition.md §1.1 surface inventory, §3.3 codecs, §4 layers/scope).
agentenv
Package agentenv is the process-environment currency an agent's launch is composed in: Var (one assignment, or one REMOVAL) and Apply (the overlay that spells both halves onto an environ slice).
Package agentenv is the process-environment currency an agent's launch is composed in: Var (one assignment, or one REMOVAL) and Apply (the overlay that spells both halves onto an environ slice).
awsauth
Package awsauth turns a live host `aws sso login` into a short-lived, narrowed credential and answers for it.
Package awsauth turns a live host `aws sso login` into a short-lived, narrowed credential and answers for it.
awsauthdaemon
Package awsauthdaemon is the host `aws-auth` credential service: the daemon wrapper around internal/awsauth, spawned by the run pipeline as `yolo internal daemon aws-auth`.
Package awsauthdaemon is the host `aws-auth` credential service: the daemon wrapper around internal/awsauth, spawned by the run pipeline as `yolo internal daemon aws-auth`.
banner
Package banner renders the one-line startup banner that every `yolo` subcommand writes to stderr before it does anything, plus the pieces the run pipeline's launch line reuses.
Package banner renders the one-line startup banner that every `yolo` subcommand writes to stderr before it does anything, plus the pieces the run pipeline's launch line reuses.
broker
The `yolo broker {status,stop,restart,logs}` command group.
The `yolo broker {status,stop,restart,logs}` command group.
capture
inner.go is the CAPTURE DRIVER — the process that actually runs a vendor installer and turns what it left behind into a tree the store can admit.
inner.go is the CAPTURE DRIVER — the process that actually runs a vendor installer and turns what it left behind into a tree the store can admit.
cgd
Package cgd is the cgroup-delegate daemon.
Package cgd is the cgroup-delegate daemon.
cli
Package cli is the yolo-jail CLI root.
Package cli is the yolo-jail CLI root.
cli/check
Package check implements the `yolo check` command.
Package check implements the `yolo check` command.
cli/run
Package run implements the `yolo run` command — the container-startup command and the heaviest module in the CLI.
Package run implements the `yolo run` command — the container-startup command and the heaviest module in the CLI.
cli/stores
Package stores implements `yolo stores` — the READ-ONLY inventory of every store yolo can see on this machine, and the bounded sample ledger that makes growth measurable at all (docs/design/disk-levers-and-backfill.md §5.5, OQ-BF9).
Package stores implements `yolo stores` — the READ-ONLY inventory of every store yolo can see on this machine, and the bounded sample ledger that makes growth measurable at all (docs/design/disk-levers-and-backfill.md §5.5, OQ-BF9).
config
Package config provides yolo-jail.jsonc parsing, merging, validation, env_sources resolution, and the config-snapshot diff.
Package config provides yolo-jail.jsonc parsing, merging, validation, env_sources resolution, and the config-snapshot diff.
containerbuilder
Package containerbuilder provides the on-demand container-based Linux builder for the macOS container runtimes.
Package containerbuilder provides the on-demand container-based Linux builder for the macOS container runtimes.
crossaudit
Package crossaudit is the host-side SINK for svcendpoint's connection-level boundary-crossing records: it decides where they land, renders them, and bounds them on disk.
Package crossaudit is the host-side SINK for svcendpoint's connection-level boundary-crossing records: it decides where they land, renders them, and bounds them on disk.
darwinpkg
Package darwinpkg provides NATIVE materialization of the config `packages:` for a notch with no baked image — macos-user today, Linux `guest` next (env-manager Phase 7.2).
Package darwinpkg provides NATIVE materialization of the config `packages:` for a notch with no baked image — macos-user today, Linux `guest` next (env-manager Phase 7.2).
depcheck
Package depcheck is the shared host-dependency checker (env-manager plan Phase 6, OQ-8).
Package depcheck is the shared host-dependency checker (env-manager plan Phase 6, OQ-8).
entrypoint
Package entrypoint generates the in-jail PID-1 bootstrap content — shims, .bashrc, the six agents' config files, managed-MCP sidecars, mise config.toml, MCP wrappers, and the bootstrap/venv-precreate/cglimit/ journalctl/yolo-ps/yolo-wrapper script bodies.
Package entrypoint generates the in-jail PID-1 bootstrap content — shims, .bashrc, the six agents' config files, managed-MCP sidecars, mise config.toml, MCP wrappers, and the bootstrap/venv-precreate/cglimit/ journalctl/yolo-ps/yolo-wrapper script bodies.
execx
Package execx codifies the subprocess / process-liveness incident history from the Python code in Go types, so idiomatic-Go habits can't reintroduce the bugs the Python comments record (§3 internal/execx, and the tri-state standing review item).
Package execx codifies the subprocess / process-liveness incident history from the Python code in Go types, so idiomatic-Go habits can't reintroduce the bugs the Python comments record (§3 internal/execx, and the tri-state standing review item).
flakebundle
Package flakebundle owns the GENERATIONS of the staged flake bundle: the directory a from-source `just install` writes, that every launch mounts into the jail as its yolo binaries.
Package flakebundle owns the GENERATIONS of the staged flake bundle: the directory a from-source `just install` writes, that every launch mounts into the jail as its yolo binaries.
frameproto
Package frameproto is the frame protocol v1 spoken between a jail-side client and a host-side loophole daemon.
Package frameproto is the frame protocol v1 spoken between a jail-side client and a host-side loophole daemon.
hostcas
Package hostcas decides whether a launch ALIASES a host content-addressed cache into the jail, instead of letting the jail pool a second copy of the same bytes — lever L9 of docs/design/disk-levers-and-backfill.md, ruled there as OQ-BF10 on 2026-09-08.
Package hostcas decides whether a launch ALIASES a host content-addressed cache into the jail, instead of letting the jail pool a second copy of the same bytes — lever L9 of docs/design/disk-levers-and-backfill.md, ruled there as OQ-BF10 on 2026-09-08.
hostmigrate
Package hostmigrate retires host-side artifacts left behind by the pre-Go (Python) yolo-jail distribution, so `go install ./cmd/yolo` can land its binary.
Package hostmigrate retires host-side artifacts left behind by the pre-Go (Python) yolo-jail distribution, so `go install ./cmd/yolo` can land its binary.
hostprocesses
Package hostprocesses is the allowlisted host-process viewer daemon.
Package hostprocesses is the allowlisted host-process viewer daemon.
hostservice
Package hostservice is the server side of the loophole frame protocol.
Package hostservice is the server side of the loophole frame protocol.
hostskills
Package hostskills delivers a pack's skills into a REAL home, which is a different problem from delivering them into a jail.
Package hostskills delivers a pack's skills into a REAL home, which is a different problem from delivering them into a jail.
hostwrap
Package hostwrap generates and resolves the HOST launch wrappers described in docs/reference/host-agent-environment.md §5.1.
Package hostwrap generates and resolves the HOST launch wrappers described in docs/reference/host-agent-environment.md §5.1.
image
Package image provides the container-image build/delivery pipeline — the command builders, the nix-stderr summarizer, the per-runtime load sentinel (LRU of store paths), the sha256-keyed content ref and cache path, and the layer-aware copy that delivers an image into a runtime (layercopy.go).
Package image provides the container-image build/delivery pipeline — the command builders, the nix-stderr summarizer, the per-runtime load sentinel (LRU of store paths), the sha256-keyed content ref and cache path, and the layer-aware copy that delivers an image into a runtime (layercopy.go).
jailcontent
Package jailcontent holds the jail CONTENT an agent reads once it is inside: the composed briefing, the staged skills tree, the loophole descriptions that go into the briefing, and the yolo-source-tree probe that gates a couple of them.
Package jailcontent holds the jail CONTENT an agent reads once it is inside: the composed briefing, the staged skills tree, the loophole descriptions that go into the briefing, and the yolo-source-tree probe that gates a couple of them.
jailcontent/builtinskills
Package builtinskills embeds the built-in agent Skills that yolo-jail stages into every selected agent's read-only skills mount.
Package builtinskills embeds the built-in agent Skills that yolo-jail stages into every selected agent's read-only skills mount.
journald
Package journald is the builtin journal-bridge daemon.
Package journald is the builtin journal-bridge daemon.
json5
Package json5 is a hand-written JSONC/JSON5 decoder compatible with pyjson5 semantics.
Package json5 is a hand-written JSONC/JSON5 decoder compatible with pyjson5 semantics.
jsonx
Package jsonx is a canonical JSON encoder/decoder byte-compatible with Python's json module for the forms yolo-jail relies on:
Package jsonx is a canonical JSON encoder/decoder byte-compatible with Python's json module for the forms yolo-jail relies on:
loopholedecl
Package loopholedecl is the loophole manifest SCHEMA — what a `manifest.jsonc` may say, plus the static validation of it, and nothing about what any of it MEANS at runtime.
Package loopholedecl is the loophole manifest SCHEMA — what a `manifest.jsonc` may say, plus the static validation of it, and nothing about what any of it MEANS at runtime.
loopholes
Package loopholes is the host-side registry that discovers, validates, and translates "loophole" manifests into container-runtime flags.
Package loopholes is the host-side registry that discovers, validates, and translates "loophole" manifests into container-runtime flags.
macosuser
Package macosuser is the native macOS backend that isolates an agent in a dedicated hidden macOS user hardened with an Apple Seatbelt (sandbox-exec) profile: no Linux container, no VM, no arch switch.
Package macosuser is the native macOS backend that isolates an agent in a dedicated hidden macOS user hardened with an Apple Seatbelt (sandbox-exec) profile: no Linux container, no VM, no arch switch.
nixdiag
Package nixdiag provides the shared nix build-failure classifier used by both the check and run slices — the nix-build-failure classifier, the dry-run "will be built" stderr parser (a tri-state: build / substitutable / inconclusive), the /etc/nix builders-config parser that decides whether an aarch64-linux builder is reachable, the credentials-freshness duration formatter, and the Linux-builder remedy.
Package nixdiag provides the shared nix build-failure classifier used by both the check and run slices — the nix-build-failure classifier, the dry-run "will be built" stderr parser (a tri-state: build / substitutable / inconclusive), the /etc/nix builders-config parser that decides whether an aarch64-linux builder is reachable, the credentials-freshness duration formatter, and the Linux-builder remedy.
oauthbroker
Package oauthbroker is the per-host Claude OAuth refresh daemon that serializes refreshes across jails so nobody burns the single-use refresh token.
Package oauthbroker is the per-host Claude OAuth refresh daemon that serializes refreshes across jails so nobody burns the single-use refresh token.
oauthterminator
Package oauthterminator is the in-jail TLS terminator for Claude OAuth.
Package oauthterminator is the in-jail TLS terminator for Claude OAuth.
openaiauth
Package openaiauth owns the provider-neutral transaction at the center of yolo's shared OpenAI subscription authentication.
Package openaiauth owns the provider-neutral transaction at the center of yolo's shared OpenAI subscription authentication.
openaiauthadapter
Package openaiauthadapter exposes the OpenAI token endpoint shape that Codex expects on jail loopback.
Package openaiauthadapter exposes the OpenAI token endpoint shape that Codex expects on jail loopback.
openaiauthhost
Package openaiauthhost prepares managed host Codex and Pi launches that use yolo's machine-wide OpenAI subscription credential service.
Package openaiauthhost prepares managed host Codex and Pi launches that use yolo's machine-wide OpenAI subscription credential service.
openauthclient
Package openauthclient is the framed client for yolo's machine-wide OpenAI credential service.
Package openauthclient is the framed client for yolo's machine-wide OpenAI credential service.
outfmt
Package outfmt holds the output-format vocabulary yolo's state-reporting commands share: the two format names, and the writer swap that produces a machine-readable document instead of a human report.
Package outfmt holds the output-format vocabulary yolo's state-reporting commands share: the two format names, and the writer swap that produces a machine-readable document instead of a human report.
packdecl
Package packdecl is the pack MANIFEST: what a pack declares about itself.
Package packdecl is the pack MANIFEST: what a pack declares about itself.
packload
Package packload discovers packs and turns their declarations into the things core acts on: mounts, writable dirs, host-file grants, surfaces, launch flags.
Package packload discovers packs and turns their declarations into the things core acts on: mounts, writable dirs, host-file grants, surfaces, launch flags.
packoverlay
Package packoverlay collects `config-overlay` contributions ACROSS packs and resolves each onto the surface identity it targets — the piece that was missing while the kind sat inert (docs/reference/pack-system.md §6 Option 2).
Package packoverlay collects `config-overlay` contributions ACROSS packs and resolves each onto the surface identity it targets — the piece that was missing while the kind sat inert (docs/reference/pack-system.md §6 Option 2).
packreg
Package packreg wires the embedded packs into packload.
Package packreg wires the embedded packs into packload.
packsrc
Package packsrc parses and resolves pack SOURCE addresses (C5).
Package packsrc parses and resolves pack SOURCE addresses (C5).
packstage
Package packstage stages a pack's file tree for delivery into a jail (C2).
Package packstage stages a pack's file tree for delivery into a jail (C2).
paths
Package paths provides the module-level constants used across the CLI.
Package paths provides the module-level constants used across the CLI.
perf
Package perf is the host-side timing-span collector behind `--timing` and `--verbose`.
Package perf is the host-side timing-span collector behind `--timing` and `--verbose`.
pluginpack
Package pluginpack recognizes an EXISTING agent plugin — a directory carrying a `.claude-plugin/plugin.json` manifest — sitting inside a yolo pack, so a user can pull one in as a pack instead of hand-translating it.
Package pluginpack recognizes an EXISTING agent plugin — a directory carrying a `.claude-plugin/plugin.json` manifest — sitting inside a yolo pack, so a user can pull one in as a pack instead of hand-translating it.
provision
Package provision produces the jail's PROVISIONING STAGE and owns the one literal that reports its failure.
Package provision produces the jail's PROVISIONING STAGE and owns the one literal that reports its failure.
prune
Package prune reclaims disk from yolo-jail storage.
Package prune reclaims disk from yolo-jail storage.
pytext
Package pytext reproduces Python's repr() for strings, which validation error messages embed via f-string "{x!r}" (e.g.
Package pytext reproduces Python's repr() for strings, which validation error messages embed via f-string "{x!r}" (e.g.
render
Package render is the one place a composed config surface is written to disk, parameterized by an explicit Target so the same renderer serves every confinement level.
Package render is the one place a composed config surface is written to disk, parameterized by an explicit Target so the same renderer serves every confinement level.
reporoot
Package reporoot locates the yolo-jail repo root (a directory containing flake.nix) for nix image builds.
Package reporoot locates the yolo-jail repo root (a directory containing flake.nix) for nix image builds.
richtext
Package richtext renders rich console markup ([bold], [red], [dim], …) either to ANSI escapes (color, on a TTY) or to plain text (piped / color off).
Package richtext renders rich console markup ([bold], [red], [dim], …) either to ANSI escapes (color, on a TTY) or to plain text (piped / color off).
runtime
Package runtime provides the container-runtime plumbing the ps command, prune, and storage lean on.
Package runtime provides the container-runtime plumbing the ps command, prune, and storage lean on.
shquote
Package shquote implements POSIX shell quoting (shlex.quote / shlex.join).
Package shquote implements POSIX shell quoting (shlex.quote / shlex.join).
storage
Package storage provides the host-side filesystem-state plumbing — the set-up that runs before any container starts, plus the pure host-state probes run() and check use (nix installer detection, timezone inheritance, workspace login-state sync).
Package storage provides the host-side filesystem-state plumbing — the set-up that runs before any container starts, plus the pure host-state probes run() and check use (nix installer detection, timezone inheritance, workspace login-state sync).
supervisor
Package supervisor is the in-jail daemon supervisor.
Package supervisor is the in-jail daemon supervisor.
svcendpoint
Package svcendpoint is the loophole framework's transport: a TCP connection to 127.0.0.1 that behaves like a 0600 Unix socket.
Package svcendpoint is the loophole framework's transport: a TCP connection to 127.0.0.1 that behaves like a 0600 Unix socket.
tomlx
Package tomlx provides TOML parsing parity for the load-bearing places the port needs it (go-port plan §3 internal/tomlx): mise.toml / mise.jail.toml venv discovery (feeds the venv-shadow mount set and a jail-made-venv rmtree), agents_md's pyproject.toml read, and codex's ~/.codex/config.toml (the one agent config that is TOML, not JSON).
Package tomlx provides TOML parsing parity for the load-bearing places the port needs it (go-port plan §3 internal/tomlx): mise.toml / mise.jail.toml venv discovery (feeds the venv-shadow mount set and a jail-made-venv rmtree), agents_md's pyproject.toml read, and codex's ~/.codex/config.toml (the one agent config that is TOML, not JSON).
treedigest
Package treedigest answers "are these two directory trees the same?" by CONTENT, in one canonical form that more than one subsystem needs to agree on.
Package treedigest answers "are these two directory trees the same?" by CONTENT, in one canonical form that more than one subsystem needs to agree on.
tty
Package tty is the single terminal-detection helper for every yolo command.
Package tty is the single terminal-detection helper for every yolo command.
ttyproxy
Package ttyproxy is the in-process TTY proxy that wraps `podman run` so ^Z suspends the PROXY (not the container), SIGWINCH resizes propagate, and Ctrl-C, window-close, and SIGTERM tear the jail down cleanly.
Package ttyproxy is the in-process TTY proxy that wraps `podman run` so ^Z suspends the PROXY (not the container), SIGWINCH resizes propagate, and Ctrl-C, window-close, and SIGTERM tear the jail down cleanly.
version
Package version provides version-string discovery and normalization.
Package version provides version-string discovery and normalization.
wirebridge
Package wirebridge is the translation half of the wire bridge (docs/reference/wire-bridge.md §4): it converts Anthropic Messages wire requests into OpenAI chat-completions requests and translates the answers back, so claude can ride a chat-completions-only provider such as cerebras.
Package wirebridge is the translation half of the wire bridge (docs/reference/wire-bridge.md §4): it converts Anthropic Messages wire requests into OpenAI chat-completions requests and translates the answers back, so claude can ride a chat-completions-only provider such as cerebras.
wirebridged
Package wirebridged is the `yolo-jaild wire-bridge` subcommand: the transport half of the wire bridge (docs/reference/wire-bridge.md §3-§5).
Package wirebridged is the `yolo-jaild wire-bridge` subcommand: the transport half of the wire bridge (docs/reference/wire-bridge.md §3-§5).
Package packs embeds the OFFICIAL packs into every yolo binary, so an installed binary carries them without a repo checkout.
Package packs embeds the OFFICIAL packs into every yolo binary, so an installed binary carries them without a repo checkout.
tools
build-wheels command
Command build-wheels builds per-platform PyPI wheels that wrap the Go host binaries.
Command build-wheels builds per-platform PyPI wheels that wrap the Go host binaries.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL