██╗ ██╗██╗ ██╗ ██╗██████╗ ██████╗
██║ ██╔╝██║ ╚██╗ ██╔╝██╔══██╗██╔═══██╗
█████╔╝ ██║ ╚████╔╝ ██████╔╝██║ ██║
██╔═██╗ ██║ ╚██╔╝ ██╔══██╗██║ ██║
██║ ██╗███████╗██║ ██║ ██║╚██████╔╝
╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝
AI pair programming in your terminal.
Klyro talks to your code. You talk to Klyro.
Works with GPT-4o, Claude, Gemini, DeepSeek, Ollama, Grok, Groq, Mistral — and 100+ more.
Quick Start · Features · Models · Commands · Config · Changelog
⚡ Quick Start
pip install klyro
Optional features are installed explicitly:
pip install "klyro[voice]" # microphone transcription
pip install "klyro[tui]" # experimental full terminal UI
pip install "klyro[playwright]" # browser automation
# Run with your API key set
klyro
# Or specify a model directly
klyro --model gpt-4o
klyro --model ollama/llama3.2
klyro --model gemini/gemini-2.5-flash
Windows: If
klyrois not recognized, either runpython -m klyroor add your Scripts folder to PATH:python -c "import sysconfig; print(sysconfig.get_path('scripts', 'nt_user'))"
Install from source:
git clone https://github.com/RavindraTirlangi/Klyro.git
cd Klyro
pip install -e .
✨ Features
🧠 Supported Models
Klyro discovers models from the provider currently in use instead of shipping a fixed model catalogue:
- OpenRouter: models allowed by the authenticated account's preferences, privacy settings, and guardrails.
- Ollama: models installed on the local machine.
- Other providers: current text/chat models registered by LiteLLM.
Run /model to see the current provider's models, then switch with the exact
identifier shown. Optional personal aliases can be configured with --alias.
💬 Slash Commands
Klyro provides 43 built-in slash commands to manage your files, models, git repository, and session:
📁 File & Context Management
| Command | Description |
|---|---|
/add <file> |
Add one or more files to the chat context so the AI can read and edit them |
/drop <file> |
Remove files from the active chat context to free up tokens |
/read-only <file> |
Add files as read-only (AI can reference them but won't modify them) |
/ls |
List all files in your project and indicate which are added to the chat |
/clear |
Clear the conversation history to start fresh |
/reset |
Drop all files and clear chat history to start completely fresh |
/tokens |
Report token counts and how much context window is left |
/diff |
Show a diff of all local changes made in the active session |
/map |
Print out the current repository map (symbols, functions, files structure) |
/map-refresh |
Force a manual refresh of the repository map |
/context |
Enter context mode to view surrounding code context |
🛠️ Coding, Testing & Shell
| Command | Description |
|---|---|
/code [prompt] |
Switch to code editing mode (or run a one-off code edit prompt) |
/ask [prompt] |
Switch to question/explain mode (or ask a one-off question without editing files) |
/architect [prompt] |
Switch to planning mode to design changes using two different models |
/chat-mode <mode> |
Switch the active chat mode (code, ask, architect, or context) |
/ok |
Shortcut for /code Ok, please go ahead and make those changes. |
/run <cmd> |
Run a shell command and optionally add its output to the chat |
/test <cmd> |
Run a test command and feed any errors/failures back to the AI for fixes |
/lint |
Run linter/fixer on all in-chat or dirty files |
/editor |
Open your configured external terminal editor (like vim or nano) to write a prompt |
🧠 Model Configuration
| Command | Description |
|---|---|
/model [name] |
With no name, list models available from the current provider; with a name, switch the main LLM |
/model search <query> |
Search models available from the current provider |
/editor-model <name> |
Switch the model used specifically for writing file edits |
/weak-model <name> |
Switch the model used for minor background tasks (e.g. summaries) |
/reasoning-effort <l/m/h> |
Set the reasoning depth (low, medium, high) for reasoning models |
/think-tokens <limit> |
Set the maximum thinking token budget for reasoning models (0 to disable) |
🐙 Git Integration
| Command | Description |
|---|---|
/git <command> |
Run any git command directly from the session |
/commit [message] |
Commit any unsaved edits made outside of Klyro |
/undo |
Undo/revert the last git commit made by Klyro |
🎙️ Session & Input Helpers
| Command | Description |
|---|---|
/multiline-mode |
Toggle multiline mode (swaps Enter and Alt+Enter behavior) |
/paste |
Paste text or clipboard images into the chat session |
/copy |
Copy the last assistant response to your clipboard |
/copy-context |
Copy the entire active chat context as Markdown |
/voice |
Speak your prompt using your microphone (dictation) |
/web <url> |
Scrape a webpage, convert it to Markdown, and add it to the chat |
/export [file] |
Export your full chat session history to a Markdown file |
/stats |
Show model details, last message cost, and total session cost |
/help <question> |
Ask interactive help questions about using Klyro |
/settings |
Print out all active settings and config parameters |
/load <file> |
Load and execute a list of Klyro commands from a text file |
/save <file> |
Save active files list as a set of /add commands to reconstruct session |
/report |
Report a problem by opening a GitHub Issue |
/exit |
Exit the Klyro application |
⌨️ Keyboard Shortcuts
Klyro provides Emacs-style keybindings for prompt editing and history navigation:
Prompt Editing & Navigation
Ctrl + A: Move cursor to the start of the line.Ctrl + E: Move cursor to the end of the line.Ctrl + B: Move cursor back one character.Ctrl + F: Move cursor forward one character.Ctrl + D: Delete the character under the cursor.Ctrl + K: Cut/delete from the cursor to the end of the line.Ctrl + Y: Paste (yank) text that was previously cut.Ctrl + L: Clear the terminal screen.
History Navigation
Ctrl + R: Search backwards through your sent message history.Ctrl + P/Ctrl + Up: Scroll back to previous history entries.Ctrl + N/Ctrl + Down: Scroll forward to next history entries.Up Arrow: Move cursor up one line inside a multiline message.Down Arrow: Move cursor down one line inside a multiline message.
Multiline & Cancellation
Alt + Enter(orCtrl + J) : Submit message in multiline mode.{on a line by itself : Start a bracket-based multiline prompt.}on a line by itself : Submit a bracket-based multiline prompt.Ctrl + C: Abort the current prompt or cancel an interactive question (returns to prompt).
⚙️ Configuration
Create .klyro.conf.yml in your project root:
model: ollama/llama3.2 # default model
dark-mode: true
auto-commits: true
Or use environment variables:
# Cloud providers
export OPENAI_API_KEY=sk-...
export ANTHROPIC_API_KEY=sk-ant-...
export GEMINI_API_KEY=...
export DEEPSEEK_API_KEY=...
export MISTRAL_API_KEY=...
export XAI_API_KEY=...
export GROQ_API_KEY=...
export OPENROUTER_API_KEY=sk-or-...
# Local
export OLLAMA_API_BASE=http://localhost:11434
📦 Release
Tagged releases automatically publish to PyPI via GitHub Actions:
git tag vX.Y.Z
git push origin vX.Y.Z
Publishing is gated by tests, package validation, and a clean wheel install/startup/uninstall smoke test.
See CHANGELOG.md for full version history.
📄 License
Apache License 2.0 — see LICENSE for details.
Metadata
Release files for klyro 1.0.8
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 |
|---|---|---|---|---|
| klyro-1.0.8.tar.gz | 1.3 MB | With provenance | Details for klyro-1.0.8.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| klyro-1.0.8-py3-none-any.whl | Python 3 | none | any | Details for klyro-1.0.8-py3-none-any.whl |
Total release size: 1.7 MB
Release files / klyro-1.0.8.tar.gz
| Download URL | klyro-1.0.8.tar.gz |
|---|---|
| Size | 1.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f20dbfb9b3d3ead889336e9b2f56dcf9ed01e11ab7fbf2c3fa3150a83a1b8c4
|
|
BLAKE2b-256 checksum How to use checksums |
35283450a61e895e6bde5433c863ce3699c8dbdafc8f8c4b0cb00ac129723c33
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Jul 31, 2026.
Transparency logRelease files / klyro-1.0.8-py3-none-any.whl
| Download URL | klyro-1.0.8-py3-none-any.whl |
|---|---|
| Size | 394.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3c5991df6f2ca12a640848e819041d4e25258867c743acd3e1ae4237fdeca222
|
|
BLAKE2b-256 checksum How to use checksums |
2ef0f67b1287b7ae8fc2c8c12e7dd41f64c36fcf2f9b6ad2cc136085274ad7da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Jul 31, 2026.
Transparency logSecurity for klyro 1.0.8
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
All 2 files in this release have been uploaded with provenance metadata.
Attestation for klyro-1.0.8.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 Jul 31, 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.