Launch Claude Code through inferroute — typed less, routed smarter
Project description
ir — Claude Code through inferroute
Tiny launcher: one command (ir) spawns claude with the model you pick
and your inferroute key, so you don't have to set env vars every time.
Your normal claude is never touched — ir only configures the
subprocess it spawns.
You choose the model per session — there's no auto-routing. Optionally, an on-device recorder logs your choices privately (see Local recording).
Install
pipx install inferroute
ir login
That's it. ir login saves your API key to ~/.config/inferroute/credentials
(mode 600) and verifies it against the inferroute API. Update any time with
pipx upgrade inferroute.
Sign up for a key at https://inferroute.ai if you don't have one.
Commands
ir open the model picker, then launch (same as `ir choose`)
ir --model NAME pin a model — short alias or canonical id; any claude flag passes through
ir choose interactive picker — pick a model, then launch
ir anthropic escape hatch — plain Claude, your own setup
ir status personal usage view (TUI)
ir login save / refresh your inferroute API key
ir help one-screen explainer
ir add recording turn on private on-device recording (see below)
ir data show what's been recorded (counts, models, size)
ir data export DIR copy the metadata layer · ir data wipe delete it all
ir remove recording stop recording
NAME is a short alias (minimax, minimax-m3, kimi, glm) or any
canonical id (e.g. claude-opus-4-8), which passes through verbatim.
Every command bakes in --dangerously-skip-permissions, which is the
right default for an agentic workflow. If you want the prompts back,
just use plain claude.
What does each command do under the hood?
ir --model NAME → ANTHROPIC_BASE_URL=<recorder daemon if running, \\
else https://api.inferroute.ai> \\
ANTHROPIC_AUTH_TOKEN=$saved_key \\
exec claude --dangerously-skip-permissions \\
--model <resolved-id>
ir anthropic → exec claude --dangerously-skip-permissions
(no env mutation — pure pass-through)
The env vars are scoped to the spawned claude process. Your shell
doesn't see them. When the local recorder daemon is running it sits in front
of api.inferroute.ai — it records locally, then forwards there (the cloud
still does its own backend fallbacks).
Local recording (optional)
ir add recording runs a small daemon on localhost:5005 that records — on
this machine only — which model you pick per task and how the turn went, so
you (or a future personal router) can learn your preferences. It is never
uploaded; we never see it.
- Default is
full— choices, outcomes, and prompt text. The prompt text is what actually lets it learn your preferences, and it never leaves this machine. Pickminimalat install for choices + outcomes only (no prompt text), which is lighter but can't train a personal router. - Inspect it any time with
ir data show, copy the metadata layer withir data export DIR(never raw prompt text), or delete everything withir data wipe. - It lives under
~/.inferroute. Remove the daemon withir remove recording(--purgealso deletes the recorded data).
Where your config lives
| Path | Contents |
|---|---|
~/.config/inferroute/credentials |
Your inferroute API key + base URL (mode 600). Edit by hand or re-run ir login. |
Privacy
The CLI talks to:
https://api.inferroute.aifor your traffic (everything exceptir anthropic)https://inferroute.aionly onir help— to print the signup URL
It does not phone home, no telemetry. If you enable ir add recording,
that data is written only to ~/.inferroute on your machine and is never
uploaded — inspect or delete it any time with ir data show / ir data wipe.
Whatever your claude --model … sends to whatever upstream is on you.
ir anthropic is literally exec claude plus one flag — the inferroute
service sees nothing.
Source
https://github.com/InferRoute/inferroute
Issues / feature requests / PRs welcome.
License
MIT — see LICENSE.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file inferroute-0.3.1.tar.gz.
File metadata
- Download URL: inferroute-0.3.1.tar.gz
- Upload date:
- Size: 49.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
318f49e0929f7a04ed344bd962c00c18edf32f76a08d41a4956391d81d606f63
|
|
| MD5 |
404a6ef3dadf4b2f6f026038bb57f235
|
|
| BLAKE2b-256 |
98a6de548f6ede50b2f91ece5b8fe5f2a2713ec86f76f6ca4960a56aa3afe708
|
Provenance
The following attestation bundles were made for inferroute-0.3.1.tar.gz:
Publisher:
release.yml on InferRoute/inferroute
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
inferroute-0.3.1.tar.gz -
Subject digest:
318f49e0929f7a04ed344bd962c00c18edf32f76a08d41a4956391d81d606f63 - Sigstore transparency entry: 1723304536
- Sigstore integration time:
-
Permalink:
InferRoute/inferroute@39e1d0029864220e3e113dde046a353c399043b5 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/InferRoute
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@39e1d0029864220e3e113dde046a353c399043b5 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file inferroute-0.3.1-py3-none-any.whl.
File metadata
- Download URL: inferroute-0.3.1-py3-none-any.whl
- Upload date:
- Size: 58.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47790aeba43b451fc54993bec44f6aaf773c8b37194569dc1a9573e85476ce3d
|
|
| MD5 |
7dc5a556f8eb68f837b8a24a5a50d259
|
|
| BLAKE2b-256 |
dec56cec452e09af3acd1c3f78764527a662e992128e78d7ec99e8f8e58b1388
|
Provenance
The following attestation bundles were made for inferroute-0.3.1-py3-none-any.whl:
Publisher:
release.yml on InferRoute/inferroute
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
inferroute-0.3.1-py3-none-any.whl -
Subject digest:
47790aeba43b451fc54993bec44f6aaf773c8b37194569dc1a9573e85476ce3d - Sigstore transparency entry: 1723304625
- Sigstore integration time:
-
Permalink:
InferRoute/inferroute@39e1d0029864220e3e113dde046a353c399043b5 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/InferRoute
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@39e1d0029864220e3e113dde046a353c399043b5 -
Trigger Event:
workflow_dispatch
-
Statement type: