unleash your agent.
unleash is...
-
an agent CLI version manager.
nvmfor AI agents β claude code, codex, clanker code, antigravity, gemini, opencode, pi, hermes β with a rich TUI -
a compatibility layer that lets you start in claude code, then continue where you left off in codex.
-
a unified cli that brings all your code agents under the same signature. No more confusion about
claude -pvscodex run -
an enabler for more advanced features such as self-restart, auto-mode and more.
-
Made for the sandbox β Use ours, Bring your own, or take the risk
curl -fsSL unleash.software/install | bashor with docker:
docker run --rm -it marksverdhei/unleash(with auth tokens)
docker run -it --rm -e ANTHROPIC_API_KEY -e CLAUDE_CODE_OAUTH_TOKEN -e OPENAI_API_KEY -e GEMINI_API_KEY -e OPENROUTER_API_KEY marksverdhei/unleashSee Installation for build-from-source, platform details, and non-interactive mode.
unleash is best run in a sandbox. Bring your own or use ours β see the Docker + gVisor sandbox guide for more hardened containers with LAN isolation.
After install:
unleash # Launch TUI (profiles, versions, settings)
unleash claude # Start Claude with unleash features
unleash codex # Start Codex with unleash features
unleash clanker # Start Clanker Code with unleash features
unleash agy # Start Antigravity CLI with unleash features
unleash gemini # Start Gemini CLI with unleash features
unleash opencode # Start OpenCode with unleash features
unleash pi # Start Pi with unleash features
unleash hermes # Start Hermes Agent with unleash featuresRun the same install command again to update to the latest version.
Define any CLI agent in ~/.config/unleash/config.toml:
[[custom_agents]]
name = "aider"
binary = "aider"
description = "AI pair programming in your terminal"
github_repo = "paul-gauthier/aider"
[custom_agents.polyfill]
headless = { flag = "--message" }
session = { continue_strategy = { flag = "--restore-chat-history" }, resume_strategy = { flag = "--restore-chat-history" } }
fork = "unsupported"
model_flag = "--model" # required
yolo_flag = "--yes" # optionalAdd a matching profile at ~/.config/unleash/profiles/aider.toml (any built-in profile makes a fine starting template), then launch with unleash aider β full polyfill support and TUI integration. See Custom Agent CLIs for the full schema, polyfill strategy reference, and multi-agent examples.
unleash <profile> [unified flags] [-- agent-specific flags]The first argument is always a profile name. The eight default profiles (claude, codex, clanker, agy, gemini, opencode, pi, hermes) map to their respective agents. Custom profiles can target any agent with custom settings β see docs/custom-agents.md.
unleash claude -m opus -c # Continue last Claude session with Opus
unleash codex --safe # Run Codex with approval prompts
unleash clanker --name Cleo # Run Clanker as the Chloe character alias
unleash gemini -p "fix the tests" # Gemini headless mode
unleash hermes -m claude-sonnet-4 # Hermes with a model override
unleash work # Run a custom "work" profileThese flags work identically across all agents. unleash translates them into the correct native syntax.
| Flag | Short | Description | Default |
|---|---|---|---|
--safe |
Restore approval prompts (permissions bypassed by default) | off | |
--prompt <prompt> |
-p |
Run non-interactively with the given prompt | |
--model <model> |
-m |
Model to use for the session | |
--continue |
-c |
Continue the most recent session | |
--resume [id] |
-r |
Resume a session by ID, or open picker | |
--fork |
Fork the session (use with --continue or --resume) |
||
--auto |
-a |
Enable auto-mode (autonomous operation) |
Anything after -- is passed directly to the agent CLI unchanged:
unleash claude -m opus -- --effort max --verbose
# ^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^
# Profile Unified Passthrough (Claude-specific)| unleash | Claude | Codex | Clanker | Antigravity (agy) |
Gemini | OpenCode | Pi | Hermes |
|---|---|---|---|---|---|---|---|---|
-p <prompt> |
-p <prompt> |
exec <prompt> |
exec <prompt> |
-p <prompt> |
-p <prompt> |
run <prompt> |
-p <prompt> |
-z <prompt> |
-c |
--continue |
resume --last |
resume --last |
--continue |
--resume latest |
--continue |
--continue |
--continue |
-r [id] |
--resume [id] |
resume [id] |
resume [id] |
--conversation [id] |
--resume [id] |
-s <id> |
--session <id> |
--resume [id] |
--fork |
--fork-session |
fork subcommand |
fork subcommand |
(unsupported) | (unsupported) | --fork |
--fork |
--worktree |
| (default) | --dangerously-skip-permissions |
--dangerously-bypass-approvals-and-sandbox |
--dangerously-bypass-approvals-and-sandbox |
--dangerously-skip-permissions |
--yolo |
(no-op) | (no-op) | --yolo |
unleash # Launch TUI
unleash update # Update all agents (parallel progress bars)
unleash update --check # Check for updates without installing
unleash update codex # Update a specific agent
unleash update clanker # Build and atomically install the current Clanker fork
unleash version # Show installed versions
unleash version --list # List available versions
unleash auth # Check authentication status
unleash agents status # Show all agent versions and update status
unleash stream --harness claude-code # Normalize live harness JSONL from stdin
unleash serve claude --name work # Serve one headful instance through OpenAI `/v1`unleash stream exposes the same canonical live-event interface to shell and
non-Rust consumers. It currently adapts Claude Code stream-json and Codex
exec --json, preserves unknown frames, and emits a session_id join key on
every output event. See the live stream normalization guide
for the schema, attended/headless behavior, and upstream limitations.
unleash serve wraps one stateful agent behind /v1/models and
/v1/chat/completions. Its primary mode keeps the harness headful and projects
the same native session history to JSON/SSE; --headless is a resumed
per-turn fallback. Live model IDs combine instance name, model slug, and
harness. See the OpenAI-compatible gateway guide.
unleash manages versions for all eight built-in agent CLIs:
- Claude Code: Native binary (GCS) or npm install
- Codex: Prebuilt binary from GitHub releases, cargo build fallback
- Clanker Code: Fork-owned
clankerbranch source build with atomic install and revision receipt - Antigravity CLI (
agy): AUR helper (yay/paru) on Arch; download from antigravity.google elsewhere - Gemini CLI: npm install
- OpenCode: Built-in
opencode upgradecommand - Pi: npm install (
@earendil-works/pi-coding-agent; updating migrates off the deprecated@mariozechner/pi-coding-agent) - Hermes Agent: Official curl install script (always installs latest)
Version filtering:
- Blacklist mode (default for Claude): All versions allowed except known-bad ones
- Whitelist mode (default for Codex): Only verified versions allowed
- Version lists are maintained in
Cargo.tomland compiled into the binary
Clanker updates are source builds from the current head of the private
heiervang-technologies/clanker-code clanker branch. They require
authenticated Git access plus Rust/Cargo, and currently have no signed release
artifact or historical version picker. Unleash records the exact installed
commit and treats that receipt as valid only while its owned binary still
reports the recorded product version.
Features that unleash adds on top of the base agent CLIs:
- Self-restart: Restart the agent while preserving session state (
unleash-refresh) - Auto-mode: Autonomous operation via Stop hook + flag file system
- Plugin system: Custom functionality loaded via
--plugin-dir - MCP refresh: Detect MCP configuration changes and trigger reload
- Voice output: Multi-provider TTS for agent responses (VibeVoice, OpenAI, ElevenLabs)
- Profile system: Named configurations with per-agent settings, env vars, and themes
- Parallel updates: Update all agents simultaneously with progress visualization
- Skill synchronization: Sync custom agent skills and instruction sets across all harnesses (
unleash skills sync)
Load conversation history from any agent into any other. Browse all sessions with unleash sessions, then crossload with -x:
unleash claude -x codex:rust-eng # Load Codex session into Claude
unleash gemini -x claude:rice-chief # Load Claude session into Gemini
unleash claude -x # Interactive session picker| Source β Target | Status |
|---|---|
| Claude β Gemini | π’ Lossless |
| Gemini β Claude | π’ Lossless |
| Codex β Claude | π’ Lossless |
| Claude β Codex | π’ Lossless |
| OpenCode β Claude | π’ Lossless |
| Claude β OpenCode | π‘ Partial |
| Codex β Gemini | π’ Lossless |
| Gemini β Codex | π’ Lossless |
| OpenCode β Gemini | π‘ Partial |
| OpenCode β Codex | π‘ Partial |
| Gemini β OpenCode | π‘ Partial |
| Codex β OpenCode | π‘ Partial |
π’ Lossless Β· π‘ Partial Β· βͺ Pending β Full matrix
Pi / Hermes / Antigravity (agy) are wired but not in the headline matrix yet β see Additional CLIs.
Sync custom agent skills, custom commands, and references across all your harnesses. Define a skill once in Claude or OpenCode, and run everywhere:
unleash skills sync # Sync from source to all targets
unleash skills list # List active skills across harnesses
unleash skills status # Show the status matrixSee Skill Synchronization and the Fidelity Matrix for full details.
- Directory navigation and workspace management
- PTY terminal middleware for session scripting
Profiles are TOML files in ~/.config/unleash/profiles/. Each profile specifies an agent CLI, arguments, environment variables, and theme.
# ~/.config/unleash/profiles/work.toml
name = "work"
description = "Work profile with Claude"
agent_cli_path = "claude"
agent_args = []
theme = "blue"
[env]
ANTHROPIC_API_KEY = "sk-..."Per-agent overrides allow a single profile to customize behavior for different agents:
[agents.claude]
extra_args = ["--effort", "high"]
[agents.codex]
extra_args = ["--full-auto"]The TUI (unleash with no arguments) provides:
- Profile management: Create, edit, duplicate, search profiles
- Version management: Browse, install, and switch agent versions
- Settings: Auto-update toggles, theme selection, animations
Navigate with j/k or arrows, Enter to select, Esc to go back, ? for help.
All extended functionality is implemented as plugins in plugins/bundled/:
| Plugin | Description |
|---|---|
| auto-mode | Autonomous operation via Stop hook enforcement |
| mcp-refresh | Detect MCP config changes and notify for reload |
| process-restart | Self-restart with session preservation |
| hyprland-focus | Window transparency on Hyprland during agent work |
| omnihook | Unified hook handler with voice input integration |
| skillsync | Cross-CLI skill & prompt synchronization |
mkdir -p plugins/my-plugin// plugins/my-plugin/plugin.json
{
"name": "my-plugin",
"version": "1.0.0",
"description": "What it does",
"hooks": {
"Stop": "./hooks/stop.sh"
}
}See the plugin development guide for details.
curl -fsSL unleash.software/install | bashDownloads a prebuilt binary for your platform (Linux x86_64/aarch64, macOS x86_64/aarch64), installs to ~/.local/bin, and launches the interactive setup to pick your default agent.
For non-interactive installs (CI, scripts):
curl -fsSL unleash.software/install | bash -s -- --boring# One-time setup (installs gVisor, network isolation, pulls image)
sudo unleash sandbox setup
# Run an agent
unleash sandbox run claudeOr run the image directly:
docker run -it --rm -e ANTHROPIC_API_KEY marksverdhei/unleashAll 5 agent CLIs are pre-installed. See the Docker + gVisor sandbox guide for hardened setups with LAN isolation and named sandboxes.
For GPU workloads, use the CUDA variant with CUDA 12.8, PyTorch, and all agent CLIs:
docker run --gpus all -it --rm marksverdhei/unleash:cudaSee the Docker guide for Vast.ai deployment and compose overrides.
Requires Rust:
git clone https://github.com/heiervang-technologies/unleash.git
cd unleash
cargo build --release
./scripts/install.shOr force the installer to build from source instead of downloading:
BUILD_FROM_SOURCE=1 bash <(curl -fsSL unleash.software/install)The interactive splash / agent picker (the splash binary) links ratatui
and crossterm behind the default tui feature. In headless environments you
can build the unleash CLI without them:
cargo build --no-default-featuresThis drops the tui feature and the splash binary; the unleash CLI and all
of its subcommands (version management, crossload, search, sandbox, β¦) still
build and run. CI enforces this contract via cargo check --no-default-features
so it cannot silently regress.
| Platform | Binary | Method |
|---|---|---|
| Linux x86_64 | unleash-linux-x86_64 |
Static musl binary |
| Linux aarch64 | unleash-linux-aarch64 |
Static musl binary |
| macOS x86_64 | unleash-macos-x86_64 |
Native binary |
| macOS aarch64 | unleash-macos-aarch64 |
Native binary |
Linux binaries are statically linked (musl) β no glibc dependency. Works on any Linux including WSL, Alpine, and containers.
unleash itself has no dependencies beyond curl. Agent CLIs have their own:
| Agent | Install method | Requires |
|---|---|---|
| Claude Code | Native binary (GCS) | curl |
| Codex | Prebuilt binary (GitHub) | curl |
| Gemini CLI | npm | Node.js |
| OpenCode | Built-in upgrade / npm fallback | curl (or Node.js) |
If npm is missing when installing Gemini or OpenCode, unleash will offer to install Node.js via nvm.
Each agent CLI uses its own API key:
# Set keys as environment variables
export ANTHROPIC_API_KEY=sk-ant-...
export OPENAI_API_KEY=sk-...
export GEMINI_API_KEY=...
# Or use OAuth (Claude Code)
claude loginVerify with unleash auth or unleash auth --verbose.
unleash/
βββ src/ # Rust CLI & TUI
β βββ cli.rs # Argument parsing + polyfill flags
β βββ polyfill.rs # Unified flag β agent-specific translation
β βββ launcher.rs # Agent wrapper with restart/auto-mode
β βββ updater.rs # Parallel update orchestrator
β βββ progress.rs # Terminal progress bar renderer
β βββ agents.rs # Agent definitions + version management
β βββ config.rs # Profile + settings management
β βββ tui/ # Terminal UI (ratatui)
βββ plugins/bundled/ # Plugin extensions
βββ scripts/ # Install/uninstall scripts
βββ docs/ # Specs and guides
Contributions are very welcome! See CONTRIBUTING.md for guidelines.
- Getting Started
- CLI Reference
- Profiles
- Crossload Matrix
- Docker + gVisor Sandbox
- Plugins
- Configuration
Built by Heiervang Technologies
