One HOME per project
Each profile gets its own $HOME, credentials, history, and cache. Zero leakage between projects. Two Claude Code sessions on different providers — at the same time.
Open-source. MIT-licensed. Isolated profiles, provider switching, token-level cost tracking, sandboxed remote sessions, web dashboard — all in one Rust binary.
Claude Code wants ~/.claude. Codex wants ~/.codex. Each one assumes
it owns your machine. Two projects on different Anthropic accounts? Hope you like editing
environment variables. Want Claude Code to talk to MiniMax instead of Anthropic this week?
Same. And nobody is telling you what the month's tokens cost until the invoice lands.
Ringlet fixes that, with a unit small enough to stay out of your way: a profile.
Each profile gets its own $HOME, credentials, history, and cache. Zero leakage between projects. Two Claude Code sessions on different providers — at the same time.
Point Claude Code at MiniMax. Point Droid at a self-hosted gateway. Point Codex at Groq. The agent's own config never changes — Ringlet injects the right env vars at launch.
Native token counting across Anthropic, OpenAI, and MiniMax. Per-profile, per-day, per-model. CSV export. Import your existing ~/.claude usage log.
Spin up a daemon on a server, run ringlet profiles run … --remote from your laptop. PTY proxied over WebSocket. xterm.js in the browser. Sandboxed by default.
Each one links to a deeper page. Skim, dive in, or skip to install.
Every profile gets its own HOME directory, credentials, conversation history, and config. Project A's API key never leaks into project B — and you can run two Claude Code instances on different providers at the same time.
Read more →Bind any supported agent to Anthropic, OpenAI, MiniMax, OpenRouter, or any OpenAI-compatible gateway. Move Claude Code from Anthropic to MiniMax without touching the agent's own config.
Read more →Token + dollar accounting across every agent and every provider, in one SQLite ledger. `ringlet usage` aggregates the lot; `--export csv` dumps it for billing reconciliation.
Read more →API keys in the system keychain (Keychain, GNOME Keyring, WinCred). Remote agent sessions run inside bwrap (Linux) or sandbox-exec (macOS). Daemon binds to localhost with bearer-token auth.
Read more →
Four commands take you from a fresh install to a billing-clear month.
ringlet init detects the agents you already have and
imports any existing usage. profiles create spawns an
isolated workspace. profiles run launches the agent.
usage tells you what every minute cost.
ringlet init — detects Claude Code, Codex, Grok, Droid, OpenCoderinglet profiles create claude work --provider anthropicringlet profiles run work — launches in isolationringlet usage — tokens + cost, every profile$ ringlet init
✓ Detected: claude (v2.0.5), codex (v1.4.0), grok (v0.7.1)
✓ Imported 18,432 events from ~/.claude/usage.jsonl
→ Stored keychain entry: ringlet/anthropic/default
$ ringlet profiles list
NAME AGENT PROVIDER LAST USED
work claude anthropic 2 minutes ago
personal claude minimax yesterday
staging codex openai 3 days ago
$ ringlet profiles run work
→ exec claude (PROFILE=work, HOME=~/.ringlet/profiles/work)
→ ANTHROPIC_BASE_URL=https://api.anthropic.com
$ ringlet hooks add work --on tool-use \
--shell 'echo "$RINGLET_TOOL" >> ~/audit.log'
✓ Hook attached: work/tool-use → shell Anthropic-shaped or OpenAI-shaped, Ringlet handles the wire format and credential injection so you don't have to.
$claude Anthropic's official coding CLI. Ringlet pipes ANTHROPIC_BASE_URL + ANTHROPIC_API_KEY at run-time per profile.
anthropicminimaxopenrouter$codex OpenAI's repo-aware CLI. Ringlet injects OPENAI_API_KEY and a profile-specific cache directory.
openaiopenroutergroq$grok xAI's CLI. OpenAI-compatible — same provider matrix as Codex.
openaiopenroutercustom$droid Factory's coding agent. Claude-shaped: works wherever Claude Code works.
anthropicminimax$opencode Community-driven OSS coding agent. Same Claude-shaped wire format.
anthropicminimaxopenrouterBind a profile to any of these — Ringlet still tracks tokens locally, regardless of where the request goes.
anthropic api.anthropic.com Claude Sonnet · Opus · Haiku
Default for Claude Code, Droid, and OpenCode profiles.
openai api.openai.com GPT-5 · GPT-4o · o-series
Default for Codex CLI. Also routable from Grok via /v1/chat/completions shape.
minimax api.minimax.io MiniMax-Text-01 · M2
OpenAI-compatible. Useful as a cost-tier fallback for Claude-shaped agents.
openrouter openrouter.ai/api/v1 300+ models, one key
Pin a slug per profile; Ringlet still tracks tokens locally.
groq api.groq.com/openai/v1 Llama 3.3 · Qwen · Whisper
OpenAI-compatible. Cheap, fast inference for tool-light agents.
custom any base URL anything OpenAI- or Anthropic-shaped
Add your own provider via a TOML stanza — registry pick-up on next sync.
Multi-agent runners (Claude Squad, Conductor) and LLM gateways (LiteLLM, OpenRouter) are great. Ringlet sits one level above — managing the agent CLI, its credentials, and its provider in one unit.
| Capability | ringlet | Claude Squad | Conductor | LiteLLM | OpenRouter |
|---|---|---|---|---|---|
| Manages multiple agent CLIs | ● Claude Code, Codex, Grok, Droid, OpenCode | ● Claude Code, Codex, Gemini, Aider | ● Claude Code + Codex | ○ LLM proxy, not an agent manager | ○ model marketplace, not an agent manager |
| Isolated HOME / config per profile | ● Separate $HOME, history, credentials | ◐ git-worktree isolation only | ◐ git-worktree isolation only | ○ — | ○ — |
| Per-profile provider switching | ● Bind any agent to any provider | ○ Agent's default provider only | ○ Agent's default provider only | ● Central routing rules | ● Hosted marketplace |
| Token + cost accounting | ● Cross-agent, cross-provider, local | ○ — | ◐ Per-task | ● Per-key budgets | ● Hosted dashboard |
| Keychain-backed credentials | ● macOS Keychain · GNOME Keyring · WinCred | ○ Plain env vars | ○ Plain env vars | ◐ Env vars or vault | ○ API key in env |
| Browser-accessible remote sessions | ● WebSocket PTY · sandboxed | ○ Local terminal only | ● Local Mac app | ○ — | ○ — |
| Sandboxed execution | ● bwrap (Linux) · sandbox-exec (macOS) | ○ Inherits shell | ◐ git-worktree only | ○ — | ○ — |
| Event hooks (tool use / stop / notify) | ● Shell or webhook on any event | ○ — | ○ — | ◐ Pre/post-call callbacks | ○ — |
| Self-hosted | ● Single binary, no daemon ops | ● Local TUI | ● Local Mac app | ● Docker / Python | ○ Hosted only |
| License | ● MIT | ● AGPL-3.0 | ◐ Source-available | ● MIT | ◐ proprietary SaaS |
Ringlet is a single Rust binary. Install pulls down the right build
for your OS and architecture, drops it in ~/.local/bin,
and runs ringlet init. Under a minute, start to finish.
curl -fsSL https://raw.githubusercontent.com/neul-labs/ringlet/main/install.sh | sh
ringlet init # Or via Cargo
cargo install ringlet
# Or via Homebrew (coming)
brew install neul-labs/tap/ringlet Deep dives on profile isolation, cost routing, sandboxing, and what the multi-CLI agent stack actually looks like in 2026.
Two patterns for running multiple AI coding agents — parallel runs on git worktrees (Claude Squad, Conductor) and Ringlet's serial profile-switching. When each one is right, and how to use them together.
A step-by-step migration from per-project bash aliases — multiple ANTHROPIC_API_KEY exports, direnv files, wrapper scripts — to Ringlet's profile model. Before/after, including the parts that don't translate.
Where Ringlet stores your API keys and why — Apple Security.framework on macOS, GNOME Keyring or KWallet on Linux, Windows Credential Manager. The Rust keyring crate, file-backed fallback, and how to rotate.
Ringlet's hook system fires shell commands, scripts, or webhooks on every agent lifecycle event — tool use, stop, notify, cost-threshold. Use it for audit logs, Slack pages, or pre-flight checks on tool calls.
Ringlet is an open-source (MIT) CLI and daemon that orchestrates multiple AI coding agents — Claude Code, Codex CLI, Grok CLI, Droid, and OpenCode — behind isolated profiles. Each profile has its own HOME directory, credentials, conversation history, and provider binding. A single command (`ringlet profiles run my-project`) launches the right agent with the right model on the right credentials, with usage and cost tracked across all of them.
Ringlet is open source under MIT. One Rust binary, runs on your laptop or your server, ships with a web dashboard and a desktop app. Built for engineers who use more than one coding agent.