kunji
Bring your own key. Every AI model in one clean, professional terminal.
Kunji (कुंजी) means "key" in Hindi. · Website
┌─ kunji chat ─────────────────────────────────────────────────┐
│ Provider Model Key Budget State │
│────────────────────────────────────────────────────────────────│
│ Anthropic claude-sonnet keychain $0.38 / $2 READY │
└────────────────────────────────────────────────────────────────┘
enter send · alt+enter newline · / commands · ctrl+d quit
› explain recursion in one line
A function that solves a problem by calling itself on a smaller
piece of it, until it reaches a case simple enough to answer.
claude-sonnet · 18 in · 31 out · $0.0005 · 1.2s
› /model groq:llama-3.3-70b-versatile
✓ Switched to groq:llama-3.3-70b-versatile conversation kept
Kunji is a terminal app for chatting with any AI model using your own API keys. You pay each provider directly. Kunji never sees your bill, your keys or your prompts.
Why kunji
- One tool, every provider. OpenAI, Anthropic, Google Gemini, Groq, OpenRouter, DeepSeek, Mistral, xAI, Together, Ollama (local), plus any OpenAI-compatible server.
- Switch models mid-conversation with
/model— the conversation carries over. - Live cost meter. Every reply shows tokens and cost.
/costandkunji usageshow totals, in your currency. - Daily budgets. Warns at 80%, blocks at 100%, per provider or overall.
- Compare mode. One prompt, several models, side by side — fastest and cheapest highlighted.
- Automatic fallback. Rate-limited or down? Kunji retries on your next model.
- Keys in your OS keychain (Windows Credential Manager, macOS Keychain, Secret Service), never in a plain-text file.
- Pipes.
npm test 2>&1 | kunji ask "why is this failing?" - Saved prompts.
kunji @commitwrites a commit message from your staged changes;@explain,@review,@fix,@summarize,@translate— or make your own. - Chat history. Every chat is saved on your computer. Continue with
kunji chat -c, search withkunji history search. - Attach files.
/file app.pyin chat, orkunji ask -f app.py "what does this do?". - Menu or commands. Run
kunjifor an arrow-key menu that stays open until you exit; every action is also a command for scripts. - Looks professional. Minimal monochrome design, responsive to any terminal size.
Install
Requires Python 3.11+.
pip install kunji
If pip isn't found or shows an error, run it through Python instead:
| System | Command |
|---|---|
| Windows | python -m pip install kunji (or py -m pip install kunji) |
| macOS | python3 -m pip install kunji |
| Linux | python3 -m pip install --user kunji (if it says "externally managed", use pipx install kunji) |
No Python on Windows? Download kunji-windows-x64.exe from the
latest release and run it from a terminal.
Linux: kunji-linux-x64.
Update later with pip install -U kunji. If the kunji command isn't found after installing,
python -m kunji always works.
winget, Scoop and Homebrew packages are on the roadmap.
Quick start
kunji # opens the menu: add a provider, then start a chat
Prefer commands? kunji keys add, then kunji chat.
Free and local? Install Ollama, then kunji keys add ollama.
Commands
| Command | What it does |
|---|---|
kunji |
Interactive menu (stays open until you choose Exit) |
kunji chat |
Chat (-m provider:model, -s "system prompt", -c continue last, --resume <id>) |
kunji ask "…" |
One-shot answer. Reads piped input. -f file to attach, --raw for scripts |
kunji @name "…" |
Run a saved prompt, e.g. kunji @commit, git diff | kunji @review |
kunji prompts |
List prompts; add, edit, show, remove your own |
kunji history |
Saved chats; search, show, export, delete |
kunji compare "…" -m a -m b |
Same prompt to several models, side by side |
kunji keys add [provider] |
Add or replace a key (verified, then saved to the keychain) |
kunji keys list / test / remove |
Manage keys (always masked) |
kunji models [provider] |
Live model list with prices |
kunji use provider:model |
Set your default model |
kunji providers |
Supported providers; providers add for custom servers |
kunji usage |
Tokens and cost per model (stored locally only) |
kunji budget set <provider|all> <amount> |
Daily spending limit |
kunji config show / set / path |
Settings |
kunji doctor |
Check Python, config, keychain and providers |
In chat
| Input | Action |
|---|---|
/model provider:model |
Switch model (tab completes) |
/models [filter] |
List models of the current provider |
/cost |
Session and today's cost |
/file path |
Attach a text file to your next message (tab completes paths) |
@name text |
Use a saved prompt, e.g. @explain this error |
/prompts · /history |
List saved prompts · recent chats |
/system … |
Set the system prompt |
/retry · /new · /save [file] |
Regenerate · new conversation · export markdown |
enter · alt+enter / ctrl+j |
Send · new line |
ctrl+c · ctrl+d |
Stop the reply · quit |
Providers
| ID | Provider | Key env variable |
|---|---|---|
openai |
OpenAI | OPENAI_API_KEY |
anthropic |
Anthropic | ANTHROPIC_API_KEY |
gemini |
Google Gemini | GEMINI_API_KEY / GOOGLE_API_KEY |
groq |
Groq | GROQ_API_KEY |
openrouter |
OpenRouter | OPENROUTER_API_KEY |
deepseek |
DeepSeek | DEEPSEEK_API_KEY |
mistral |
Mistral | MISTRAL_API_KEY |
xai |
xAI | XAI_API_KEY |
together |
Together AI | TOGETHER_API_KEY |
ollama |
Ollama (local) | none |
Any OpenAI-compatible server (LM Studio, vLLM, LiteLLM proxy…):
kunji providers add lmstudio --base-url http://localhost:1234/v1 --no-key
Security and privacy
- API keys are stored only in your operating system's credential store, or read from environment variables. They are sent only to the provider they belong to.
- Kunji's config file never contains keys. Errors are scrubbed so keys never appear on screen.
- Usage and cost history stay on your machine (
kunji config path). - Network calls kunji makes on its own: the public model price list (OpenRouter, plus this
repo's
catalog/pricing.json) and the PyPI version check. Neither sends anything about you. Turn them off withkunji config set network.catalog falseandkunji config set updates.check false. - Found a vulnerability? Please follow SECURITY.md.
Details: docs/PRIVACY.md.
Configuration
kunji config set display.currency INR
kunji config set display.usd_rate 84 # your conversion rate
kunji budget set all 200 # ₹200/day across every provider
kunji config set fallback '["groq:llama-3.3-70b-versatile", "ollama:qwen2.5"]'
All options: docs/CONFIG.md. Every command with examples: docs/COMMANDS.md.
Free and Pro
Everything that runs on your machine is free and open source, forever — chat, switching, keys, cost meter, budgets, compare, fallback, pipes. A future optional Pro plan will add cloud features that need a server (sync across devices, shared team keys with per-person budgets, a smart router). See ROADMAP.md.
Contributing
Bug reports, ideas and pull requests are welcome — start with CONTRIBUTING.md. Architecture overview: docs/ARCHITECTURE.md.
License
Apache-2.0. "kunji" and the kunji logo are not covered by the license; please use a different name for forks.
Metadata
Release files for kunji 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| kunji-0.1.2.tar.gz | 68.8 kB | With provenance | Details for kunji-0.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| kunji-0.1.2-py3-none-any.whl | Python 3 | none | any | Details for kunji-0.1.2-py3-none-any.whl |
Total release size: 139.3 kB
Release files / kunji-0.1.2.tar.gz
| Download URL | kunji-0.1.2.tar.gz |
|---|---|
| Size | 68.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7b3285927107005eb585598f5fb798e1c5d677d4227a26c037d4dc0e22c726db
|
|
BLAKE2b-256 checksum How to use checksums |
2c4123f10cc0d2bd7f070395fd47b82d9e49139fb3cb3234ebb7825eebc44a12
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.
Transparency logRelease files / kunji-0.1.2-py3-none-any.whl
| Download URL | kunji-0.1.2-py3-none-any.whl |
|---|---|
| Size | 70.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1d158447b21f3ad2d67f87dc1f7b2ed12275c5f66d64ff02cc4417c98c4f1cdb
|
|
BLAKE2b-256 checksum How to use checksums |
2fdd5ded6613e567905d9c2c0b62349ee60f5f809c210d0b369a28e5ea9c44a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.
Transparency logSecurity for kunji 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for kunji-0.1.2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.