Skip to main content

Klyro is AI pair programming in your terminal

Project description

 ██╗  ██╗██╗  ██╗   ██╗██████╗  ██████╗
 ██║ ██╔╝██║  ╚██╗ ██╔╝██╔══██╗██╔═══██╗
 █████╔╝ ██║   ╚████╔╝ ██████╔╝██║   ██║
 ██╔═██╗ ██║    ╚██╔╝  ██╔══██╗██║   ██║
 ██║  ██╗███████╗██║   ██║  ██║╚██████╔╝
 ╚═╝  ╚═╝╚══════╝╚═╝   ╚═╝  ╚═╝ ╚═════╝

AI pair programming in your terminal.

PyPI version Python License Version Changelog


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
# 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 klyro is not recognized, either run python -m klyro or 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

🤖 Smart Model Detection

Auto-detects your environment at startup:

  • Local Ollama running? Uses it instantly — no API key needed
  • Cloud keys set? Picks the best available model
  • Nothing configured? Guides you through OpenRouter setup (free tier available)

🗺️ Repository Intelligence

Understands your entire codebase:

  • Builds a repo map using tree-sitter AST analysis
  • Identifies relevant files automatically
  • Manages context to stay within token limits

✏️ Precise Code Editing

Applies changes surgically:

  • Whole-file and diff-based editing modes
  • Auto-lints after every edit and feeds errors back
  • Built-in git integration with descriptive auto-commits

🔀 Model Switching On-the-Fly

Switch any time without restarting:

/model flash        → Gemini 2.5 Flash
/model r1           → DeepSeek R1
/model groq-llama   → Groq (ultra-fast)
/model list         → see all options

🧠 Supported Models

Switch models inside Klyro using /model <alias>:

ProviderAliasModel
Anthropicclaude / sonnetclaude-sonnet-4-6 ⭐ latest
opusclaude-opus-4-7 — most capable
haikuclaude-haiku-4-5 — fastest
OpenAI4ogpt-4o ⭐ recommended
4o-minigpt-4o-mini — cheapest
o1 / o3-minireasoning models
Googlegeminigemini-2.5-pro ⭐ recommended
flashgemini-2.5-flash — fast & cheap
flash-litegemini-2.5-flash-lite
DeepSeekdeepseekdeepseek-chat (v3)
r1deepseek-reasoner — best reasoning
Mistralmistralmistral-large-latest
codestralcodestral-latest — code specialist
pixtralpixtral-large — vision
Ollama (local)llama / llama3.2ollama/llama3.2 — no API key
qwenollama/qwen2.5-coder
phi4ollama/phi4
devstralollama/devstral — code expert
xAIgrok / grok3xai/grok-3-beta
grok3-minixai/grok-3-mini-beta
Groqgroq-llamallama-3.3-70b-versatile — ultra-fast
groq-mixtralmixtral-8x7b-32768
groq-gemmagemma2-9b-it
OpenRouter (free)llama-freellama-3.1-8b-instruct:free
deepseek-freedeepseek-r1-0528:free
gemma-freegemma-3-27b-it:free
qwen-freeqwen3-235b-a22b:free
AWS Bedrockbedrock-claudeanthropic.claude-3-5-sonnet-v2
Azure OpenAIazure-gpt4oazure/gpt-4o
Coherecommandcohere/command-r-plus

Run /model list inside Klyro to see all 90+ aliases.


💬 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> Switch the main LLM mid-session — run /model list to browse all 90+ aliases
/models <query> Search for supported models matching a query string
/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 (or Ctrl + 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 v1.0.3
git push origin v1.0.3

See CHANGELOG.md for full version history.


📄 License

Apache License 2.0 — see LICENSE for details.


Made with ❤️ · PyPI · GitHub · Changelog

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

klyro-1.0.5.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

klyro-1.0.5-py3-none-any.whl (391.7 kB view details)

Uploaded Python 3

File details

Details for the file klyro-1.0.5.tar.gz.

File metadata

  • Download URL: klyro-1.0.5.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for klyro-1.0.5.tar.gz
Algorithm Hash digest
SHA256 dca15e9f358a7b356e680b8cfe8a19cca04149d02c807df82efffd0b096ce461
MD5 82bf313c69db30b5dc0907a56d738e6c
BLAKE2b-256 8a7ce695c62d11c3cb2b507c2f2dd905dd6745da70d166e8a19c5cb0a02e7f05

See more details on using hashes here.

Provenance

The following attestation bundles were made for klyro-1.0.5.tar.gz:

Publisher: publish.yml on RavindraTirlangi/Klyro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file klyro-1.0.5-py3-none-any.whl.

File metadata

  • Download URL: klyro-1.0.5-py3-none-any.whl
  • Upload date:
  • Size: 391.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for klyro-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 dd75a9bec7895ccab3bf0924da7a5de796a268b0f5150739654db1e130f5f06e
MD5 e0b10721821ad6ccf3d38168c8c02240
BLAKE2b-256 9bfb7e6eeac094a1f09c9e200f4ac48c7f5c4240eff1c4c40a6711dd91424e3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for klyro-1.0.5-py3-none-any.whl:

Publisher: publish.yml on RavindraTirlangi/Klyro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page