How Ringlet works.
Ringlet sits one level above your agent CLI. The unit is a profile: (agent + provider + credentials + isolated HOME). Ringlet launches the agent with the right environment, tracks its token spend locally, and — for remote work — runs it in a sandbox behind a localhost-only daemon you drive from a browser.
The profile is the unit
Every agent CLI assumes it owns a dotdirectory — ~/.claude, ~/.codex —
and its own provider default. A Ringlet profile wraps that assumption in a box:
an isolated $HOME, its own credentials, its own conversation history, its own MCP
config, and a bound provider. Two Claude Code profiles never see each other's state.
Provider injection happens at launch
Ringlet never rewrites the agent's own config. When you run a profile, it sets HOME,
looks up the bound provider, injects that provider's base-URL and credentials as environment
variables, and execs the agent unchanged. That's how an Anthropic-shaped agent like Claude Code
can talk to MiniMax or your own gateway without touching a config file.
Credentials live in the OS keychain
Keys go into the system keychain — macOS Keychain, GNOME Keyring / KWallet via the Secret
Service API, Windows Credential Manager — not plain-text dotfiles. On a headless box with no
keychain, they fall back to ~/.config/ringlet/credentials.toml at mode 0600.
The daemon is optional and local
The CLI works with no daemon. A local daemon runs only when you want the web dashboard or a
remote session — it binds to 127.0.0.1:8765, requires a bearer token, and never
exposes a public endpoint. The Vue 3 dashboard renders agent PTYs with xterm.js.
Remote sessions are sandboxed
Run ringlet daemon --stay-alive on a server and ringlet profiles run … --remote
from your laptop. The daemon starts the agent inside a sandbox — bwrap on Linux,
sandbox-exec on macOS — and proxies the PTY over an authenticated WebSocket. The
agent never gets shell access to your laptop.
From install to audited spend, in four commands
- ringlet init Ringlet detects the agent CLIs you already have (Claude Code, Codex, Grok, Droid, OpenCode) and imports any existing usage logs.
- Create a profile ringlet profiles create claude work --provider anthropic creates an isolated HOME, stores credentials in the OS keychain, and binds a provider.
- Run the agent ringlet profiles run work sets HOME plus the provider base-URL and credentials, then execs the agent unchanged.
- Audit the spend ringlet usage aggregates token and dollar cost across every profile and provider from a local SQLite ledger.
ringlet init
ringlet profiles create claude work --provider anthropic
ringlet profiles run work
ringlet usage Go deeper: all features · security & sandboxing · providers · use cases · glossary