The control plane CLI for AI coding agents
Route Claude Code, Cursor, and Codex through TokenSaver — Zero Trust governance, MCP tools, and Flux IA observability on every run.
Free signup · 15 free models · 600+ model catalog (Pro) · stdlib-only · MCP + Trust Gateway · Python ≥ 3.10
Get started (60s) · Connect (CLI · API · MCP) · What you get · Agent graph · Control plane · Architecture · Agents · Docs · llms.txt
See TokenSaver in action
|
CLI → Claude Code Install → |
Agentic graph Agent-to-agent handoffs in Flux IA |
Sign up / Log in · Flux IA · Agentic graph · Observability guide
Most coding agents talk to LLM providers directly: no shared audit trail, no inline PII guard, no org-wide FinOps — and every teammate wires MCP by hand.
TokenSaver CLI is the open-source on-ramp to the TokenSaver control plane: one command routes your agent through governed pipelines (cache, compression, RAG, PII, quotas) with full observability in the console.
Platform governance, not a local-only proxy. Policies, RBAC, Agent Registry, and Flux IA live on platform.tokensaver.fr. The CLI configures your laptop; the platform enforces and traces every call.
The CLI is one way in. Same control plane via OpenAI/Anthropic-compatible APIs, Python SDK / REST, MCP tools, or Trust Gateway — see Connect to the control plane (mirrors console Docs → Build / Connect).
Who it's for:
- Developers shipping with Claude Code, Cursor, or Codex who want governance + observability without rewriting agent code
- Platform teams standardizing how agents connect to LLMs (OpenAI-compatible + Anthropic-compatible APIs, MCP tools, Trust Gateway)
- FinOps / security stakeholders who need PII filtering, quotas, and auditable runs — not just cheaper tokens
- Free-plan explorers —
tokensaver logincreates a workspace and API key in under a minute
Quick Start · Why TokenSaver · Command reference · Contributing
What you get
- 600+ models (Pro/BYOK) — full Agent Registry; Free plan includes 15 hosted models (GLM, DeepSeek, GPT-OSS, Llama, …) with no provider API key → models & Free plan
tokensaver route claude --launch— Claude settings, MCP tools (mcp.tokensaver.fr), Trust Gateway (gateway.tokensaver.fr), and thetokensaver-routerplugin in one shot- Governed pipelines — cache, compression, PII, RAG, and quotas follow your API key policies (runtime governance, not hard-coded in the CLI)
- Flux IA —
tokensaver flowslists recent runs;tokensaver flows --openjumps to the console dashboard - Business loops (ACP-9) —
tokensaver loop start|tick|end|statusto govern vibe-coding sessions → vibe-coding-loops.md - Agent Registry —
tokensaver approve/tokensaver usefor zero-trust model catalog (fixes 403 on quarantined models) - MCP slash commands —
/tokensaver-router:quota,:flows,:cache,:models, … inside Claude Code - Clean undo —
tokensaver unroute clauderestores backed-up config files - Zero runtime deps — stdlib only;
pip install tokensaver-cliand go
Companion library: tokensaver-sdk for POST /pipelines/run, chat sessions, and programmatic API access.
Why TokenSaver
| Direct provider API | Local proxy only | TokenSaver CLI | |
|---|---|---|---|
| Setup | Per-provider keys | Manual env / config | login + route claude |
| Governance | Provider defaults | Local rules | Platform policies + RBAC |
| PII / audit | DIY | Varies | Inline pipeline + traces |
| Observability | Provider dashboard | Local logs | Flux IA end-to-end |
| MCP | Wire yourself | Partial | Tools + Gateway pre-wired |
| FinOps | Per-account billing | None | Quotas, budgets, run detail |
| Model catalog | Open access | N/A | Agent Registry (zero-trust) |
TokenSaver adds a hosted trust layer (governance, registry, observability) while keeping the OSS CLI free and MIT-licensed.
Connect to the control plane
This repository ships the CLI on-ramp. Every path below hits the same SaaS control plane (governance + Flux IA):
| Path | When to use | Entry point |
|---|---|---|
| CLI | Claude Code / Cursor / Codex on your machine | tokensaver route … |
| LLM egress | OpenAI- or Anthropic-shaped SDKs, n8n, LangChain, LibreChat… | api.tokensaver.fr/openai/v1 or …/anthropic + ts_… |
| Python SDK / REST | Apps, RAG, sessions, policies | api.tokensaver.fr/api/v1 · tokensaver-sdk |
| MCP tools | Platform tools inside an agent host | mcp.tokensaver.fr/mcp |
| Trust Gateway | Govern third-party MCP servers | gateway.tokensaver.fr/mcp |
Deep dive (OSS): docs/connect-control-plane.md — matrix, recipes, “do not confuse egress vs MCP vs A2A”.
Product Docs: platform.tokensaver.fr → sidebar Docs → Build (choose a path) · Connect (n8n, LangChain, Cowork, …)
# Same control plane without routing an IDE — OpenAI-shaped client
export OPENAI_BASE_URL=https://api.tokensaver.fr/openai/v1
export OPENAI_API_KEY=ts_…
./examples/04-llm-egress.sh # optional auth check + Flux IA reminder
Architecture
Claude Code · Cursor · Codex · LangChain · n8n · MCP host · your app
│ │ │ │
│ CLI │ LLM egress │ SDK/REST │ MCP A / Gateway
└───────────┴──────────────┴─────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ TokenSaver control plane (SaaS · EU-ready) │
│ Cache → RAG → Compression → PII → LLM → Audit │
│ Agent Registry · FinOps · Flux IA │
└─────────────────────────────────────────────────────────┘
│
▼
LLM providers (OpenRouter · Anthropic · OpenAI · Mistral · …)
Optional local helper (this repo):
tokensaver CLI → writes settings / MCP / env for Claude · Cursor · Codex
SaaS endpoints (default after tokensaver login):
| Surface | URL |
|---|---|
| Control plane (console) | platform.tokensaver.fr — sign up · log in |
| API | api.tokensaver.fr |
| MCP tools | mcp.tokensaver.fr/mcp |
| Trust Gateway | gateway.tokensaver.fr/mcp |
| Flux IA (live pipeline runs) | platform.tokensaver.fr/en/{workspaceId}/dashboard?tab=flows — or tokensaver flows --open |
| Agentic graph (multi-agent audit) | platform.tokensaver.fr/en/{workspaceId}/execution-graph?period=7d |
Typical pipeline savings on the platform: ~45% fewer tokens (cache + compression + routing) — see tokensaver.fr.
Control plane & live observability
The CLI routes traffic; the TokenSaver control plane shows every governed run in real time.
| Goal | How |
|---|---|
| Create account / log in | platform.tokensaver.fr/en/signup or …/en/login — same email as tokensaver login |
| Flux IA — pipeline steps, cache, PII, LLM, MCP | After tokensaver login: tokensaver flows --open (opens your workspace Flux IA tab) |
| Agentic graph — agent-to-agent handoffs, tool runs, audit trail | Console sidebar → Agentic graph, or https://platform.tokensaver.fr/en/{workspaceId}/execution-graph?period=7d |
| Latest run deep link | tokensaver flows prints the URL with flowId=… when a recent run exists |
tokensaver login # saves ts_… key + workspace_id locally
tokensaver route claude --launch
# send a message in Claude Code, then:
tokensaver flows --open # Flux IA in the browser (real-time)
tokensaver whoami # email, plan, workspace id
Use the same email in the browser as tokensaver whoami. In the console sidebar: Flux IA for step-by-step runs, Agentic graph for the multi-agent canvas (as in the demo above).
Docs: Observability (this repo) · Product overview · Console
Get started (60 seconds)
# 1 — Install (stdlib only)
pip install -U tokensaver-cli
# 2 — Free signup or sign-in → ts_… key saved locally
tokensaver login
# 3 — Route Claude Code and launch
tokensaver route claude --launch
# 4 — Verify + open Flux IA
tokensaver doctor --claude
tokensaver flows --open
Credentials: ~/.config/tokensaver/credentials.json (0600).
TOKENSAVER_API_KEY overrides the file when set.
Self-host: append --local on commands (API :8000, MCP :8787/mcp, gateway :8788/mcp).
Agent compatibility
| Agent | tokensaver route |
Notes |
|---|---|---|
| Claude Code | ✅ --launch |
Full: settings + MCP + plugin + optional --with-fs |
| Cursor | ✅ | Writes .cursor/mcp.json + Override URL steps |
| OpenAI Codex | ✅ --launch |
Exports OPENAI_BASE_URL + key |
| Generic proxy | ✅ route proxy |
Prints env for any OpenAI-compatible client |
| MCP only | ✅ route mcp |
Tools + gateway entries without agent launch |
Claude Code flags: --scope user|project|local · --profile cheap|default|strong · --model provider/model · --with-fs · --no-plugin · --local
Undo: tokensaver unroute <claude|cursor|codex|proxy|mcp>
When to use · When to skip
Great fit if you…
- run Claude Code / Cursor daily and want one command to wire MCP + governance
- need Flux IA traces (tool calls, cache, PII steps) without building observability yourself
- want Free-tier exploration with a real control plane, not just a API key passthrough
Skip if you…
- need 100% offline / air-gapped with no SaaS (use
--localself-host) - only want local token compression with no platform
- cannot send prompts through a governed API (strict data residency without self-host)
Command map
Auth login · logout · whoami · keys list|create|revoke
Models models · use · profiles · approve · catalog
Observability flows · loop · status
Route route <claude|cursor|codex|proxy|mcp> · unroute …
Health doctor [--claude] [--local]
Auth & keys
| Command | Purpose |
|---|---|
tokensaver login |
Interactive signup / sign-in |
tokensaver login --email you@acme.com --signup -y |
Non-interactive signup |
tokensaver login --key ts_… |
Import existing key |
tokensaver login --local |
Self-host (localhost:8000) |
tokensaver logout |
Remove local credentials |
tokensaver whoami |
Email, plan, key prefix, Flux IA link |
tokensaver keys list |
List API keys (JWT required) |
tokensaver keys create --name CLI --use |
Create + set default key |
tokensaver keys revoke <id> |
Revoke a key |
Models & Agent Registry
| Command | Purpose |
|---|---|
tokensaver models |
Profiles + plan-filtered catalogue (15 on Free, 600+ on Pro) |
tokensaver use <cheap|default|strong|provider/model> |
Sticky model + approve + rewrite settings |
tokensaver approve [--current] |
Approve model in registry (zero-trust 403 fix) |
tokensaver catalog list|pending|approve <ref> |
Registry admin |
Free plan: 15 hosted OpenRouter models — see docs/models-and-free-plan.md. Default profile → openrouter/openai/gpt-oss-20b. Override: TOKENSAVER_PLAN=free.
Claude plugin slash commands
Installed by route claude → skill tokensaver-router:
| Slash | Action |
|---|---|
/tokensaver-router:welcome |
Orientation + console link |
/tokensaver-router:models |
List models + profiles |
/tokensaver-router:use |
Switch sticky model |
/tokensaver-router:flows |
Flux IA + recent runs (tokensaver flows) |
/tokensaver-router:loop |
BusinessLoop start/tick/end (ACP-9) |
/tokensaver-router:quota |
Usage (tokensaver quota) |
/tokensaver-router:cache |
Cache stats (MCP) |
/tokensaver-router:doctor |
Health checks |
/tokensaver-router:help |
Full slash catalogue |
Environment variables
export TOKENSAVER_API_KEY=ts_…
export TOKENSAVER_MODE=local # or --local on commands
export TOKENSAVER_API_URL=http://localhost:8000
export TOKENSAVER_MCP_URL=http://localhost:8787/mcp
export TOKENSAVER_GATEWAY_URL=http://localhost:8788/mcp
# Optional override — otherwise local mode reads CONSOLE_BASE_URL or apps/console/.env.local PORT
export TOKENSAVER_CONSOLE_URL=http://localhost:7337
export TOKENSAVER_NO_BANNER=1 # hide ASCII banner on CLI start
Documentation
| In this repo | Related |
|---|---|
| docs/connect-control-plane.md | Console Docs → Build / Connect |
| docs/quickstart.md | Product · Console / Flux IA |
| docs/models-and-free-plan.md | PyPI tokensaver-cli |
| docs/claude-code.md | Anthropic Claude Code |
| docs/open-models-glm.md | GLM 4.7 Flash — optional open model on Free |
| examples/ | PyPI tokensaver-sdk |
| docs/README.md | Console · Product |
Examples (shell):
./examples/01-login-and-route.sh # SaaS login + route
./examples/02-local-selfhost.sh # localhost stack
./examples/03-glm-open-model.sh # Free plan + GLM 4.7 Flash
./examples/04-llm-egress.sh # OpenAI-compatible egress (no IDE route)
LAUNCH_CLAUDE=1 ./examples/03-glm-open-model.sh # also launch claude
AI agents / LLMs: read llms.txt in this repo for a compact index.
TokenSaver for teams
The OSS CLI is built for individual developers: install, login, route your agent in minutes — free and MIT-licensed.
Running org-wide governance, SSO, centralized policies, and fleet FinOps across every team is what platform.tokensaver.fr and tokensaver.fr enterprise plans are for.
→ Request a demo · Early Adopter program
Contributing
Issues and stars welcome on this repo. Source of truth for releases is the private monorepo; this repository is a public mirror synced via scripts/sync-oss-cli.sh.
Releases: push packages/cli to main → CI auto-bumps patch (if needed), syncs the mirror, creates GitHub Release + PyPI. No manual version step.
See CONTRIBUTING.md · SECURITY.md · CHANGELOG.md
git clone https://github.com/tokensaver-ai/tokensaver-cli.git
cd tokensaver-cli
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]" && pytest -q
License
MIT — see LICENSE.
Release files for tokensaver-cli 0.3.40
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tokensaver_cli-0.3.40.tar.gz | 90.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tokensaver_cli-0.3.40-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 184.2 kB
Release files / tokensaver_cli-0.3.40.tar.gz
| Download URL | tokensaver_cli-0.3.40.tar.gz |
|---|---|
| Size | 90.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2240c753b9d9c64f63a1741945c4d518c3a937aa79d290f5d569476fa6bab939
|
|
BLAKE2b-256 checksum How to use checksums |
1f8fc29149bc757c52f55bd5a9632289ce774fbc993df4ee649b86ee11ed43ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / tokensaver_cli-0.3.40-py3-none-any.whl
| Download URL | tokensaver_cli-0.3.40-py3-none-any.whl |
|---|---|
| Size | 94.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dfe11752f065865d0f6c4abd8bec856542d1bb0c1dc1eb20fec265ff07af29d4
|
|
BLAKE2b-256 checksum How to use checksums |
edc7f776744e3618cf6f80bee9ae14f7c636a2550897f82474c36788a6219d05
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|