SimhaCLI ๐ฆ โ AI Coding Agent that runs inside your terminal
Project description
๐ฆ SimhaCLI
AI-Powered Coding Agent for Your Terminal
Built by Narasimha Naidu Korrapati
Features โข Installation โข Configuration โข Commands โข Tools
๐ Overview
SimhaCLI is a powerful terminal-based AI coding agent that brings the intelligence of Large Language Models directly into your development workflow. It reads your code, executes tools, manages sessions, and streams its thinking โ all inside your terminal.
SimhaCLI๐ฆ starting refactor my auth module
โ ฆ ๐ฆ Simha is working... (2.1s)
๐ญ SimhaCLI thinking (1.3s) The user wants to refactor the auth module... โ
๐ญ thought for 1.3s
I'll read the existing auth module first and then suggest improvements.
SimhaCLI๐ฆ complete in 14.2s 8821 tokens (8120 prompt + 701 completion)
โจ Features
๐ค Intelligent Agentic Loop
- Multi-turn reasoning โ autonomously calls tools, reads results, and continues until the task is done
- Parallel tool execution โ runs multiple tool calls simultaneously with
asyncio.gather - Context compression โ auto-summarises history when the context window fills up
- Loop detection โ detects and breaks repetitive behaviour automatically
- Truncation recovery โ handles
finish_reason: lengthgracefully, continues or retries - Git context awareness โ system prompts include current branch, status, and recent commits
๐ File Attachments
- Attach files to prompts โ use
@attach file.txtor@attach path/to/file.py - Multiple file support โ attach multiple files in a single prompt
- Smart summary โ shows attachment count and total size
- Auto-inclusion โ file contents are automatically included in the model context
๐ญ Thinking Display
- Live reasoning โ streaming ๐ญ display shows what the model is thinking in grey italic text
- Running timer โ see how long the model has been reasoning
- Collapsed summary โ freezes as
๐ญ thought for X.Xswhen reasoning completes (models with extended thinking)
โฑ๏ธ Performance Visibility
- Live working spinner โ
โ ฆ ๐ฆ Simha is working... (10.1s)shows elapsed time - Total request timer โ complete time shown on every response
- Token tracking โ
complete in 12.4s 8375 tokens (8119 prompt + 256 completion)
๐ ๏ธ 16 Built-in Tools
| Category | Tools |
|---|---|
| ๐ Read | read_file, list_dir, glob, grep |
| โ๏ธ Write | write_file, edit_file |
| ๐ฅ๏ธ Shell | shell (40+ blocked dangerous commands) |
| ๐ Web | web_search, web_fetch |
| ๐พ Memory | todos (task management), memory (persistent key-value) |
| ๐ค Sub-agents | codebase_investigator, code_reviewer, test_generator, bug_fixer, refactorer |
๐ MCP (Model Context Protocol)
- Connect to any MCP server via stdio or HTTP/SSE transport
- Tools discovered automatically at startup
- Manage connections live with
/mcp - Pre-configured examples for GitHub, PostgreSQL, Supabase, and Playwright
- Vercel deployment uses CLI (
npm install -g vercel) โ no MCP needed
๐ Development Workflows
End-to-end automation with a single command or natural language:
| Action | Description |
|---|---|
fullstack |
GitHub โ Push โ Install โ Env โ Build โ README โ DB โ Deploy โ Tests |
github |
Create a GitHub repository |
push |
Commit and push code changes |
install_deps |
Auto-detect and install dependencies (npm, yarn, pip, cargo, etc.) |
env_setup |
Create .env file from template or with custom variables |
build |
Auto-detect and run build commands |
readme |
Generate README.md for the project |
database |
Set up PostgreSQL or Supabase database |
deploy |
Deploy to Vercel |
tests |
Run Playwright E2E tests |
Just ask in natural language:
- "Deploy my app to Vercel"
- "Create a GitHub repo and push my code"
- "Set up the database for my project"
- "Build and deploy my full stack app"
Works with MCP servers when configured, falls back to CLI tools automatically.
๐พ Session Management
- Save sessions to disk (
/save) and resume them later (/resume <id>) - Create mid-task checkpoints (
/checkpoint//restore <id>) - Undo the last file edit (
/undo)
๐ Safety & Approval
- Configurable approval policy โ from
on_requestto fully autonomousyolo - Shell command allowlist/blocklist
- Environment variable masking (API keys, tokens, secrets never leaked to the model)
- Tool permissions โ
/permissionscommand to manage tool access (allow/deny specific tools) - Allowed/denied tools โ configure
allowed_toolsanddenied_toolsin config.toml
๐ Project Initialization
/initcommand โ deeply analyzes project structure and generates:AGENTS.mdโ coding conventions and project guidelines for AI agentsSIMHACLI.mdโ SimhaCLI-specific project context and instructions
- Smart detection โ identifies languages, frameworks, and project patterns
- Context-aware โ future sessions automatically load these instruction files
๐ Installation
Prerequisites
- Python 3.10+
- An API key (OpenRouter, OpenAI, Gemini, or any OpenAI-compatible endpoint)
Install from PyPI (Recommended)
pip install simhacli
simhacli # interactive mode
simhacli "fix the bug in app.py" # single prompt
simhacli --help # show all options
Install from Source
git clone https://github.com/naidu199/SimhaCLI.git
cd SimhaCLI
pip install -e .
simhacli
โ๏ธ Configuration
SimhaCLI looks for configuration in two places (project overrides global):
| Location | Purpose |
|---|---|
~/.simhacli/config.toml |
Global defaults |
<project>/.simhacli/config.toml |
Per-project overrides |
Minimal config.toml
[model]
name = "openrouter/free"
temperature = 1.0
api_key = "your_api_key_here"
api_base_url = "https://openrouter.ai/api/v1"
Set credentials interactively
simhacli
> /credentials
Full config.toml Reference
[model]
name = "openrouter/free" # any OpenAI-compatible model
temperature = 1.0
api_key = "sk-..."
api_base_url = "https://openrouter.ai/api/v1"
max_turns = 72 # max agentic loop turns per request
max_tool_output_tokens = 50000 # truncate large tool outputs
approval = "on_request" # see Approval Policies below
hooks_enabled = true
developer_instructions = "Always prefer TypeScript over JavaScript."
user_instructions = "Be concise."
# Restrict which tools the agent can use
# allowed_tools = ["read_file", "write_file", "shell"]
[shell_environment]
ignore_default_excludes = false
exclude_patterns = ["*KEY*", "*TOKEN*", "*SECRET*"]
# Add MCP servers
[mcp_servers.filesystem]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
# HTTP/SSE transport
[mcp_servers.my_remote]
url = "http://localhost:8000/sse"
# Add lifecycle hooks
[[hooks]]
name = "format_on_write"
trigger = "after_tool"
command = "black {file}"
enabled = true
Approval Policies
| Policy | Behaviour |
|---|---|
on_request |
Ask before shell commands and file writes (default) |
always |
Ask before every tool call |
auto_approve |
Auto-approve everything |
auto_edit |
Auto-approve file edits, ask for shell |
on_failure |
Only ask if the tool fails |
yolo |
Never ask โ fully autonomous |
never |
Block all tool calls |
๐ฌ Commands
Type any of these during an interactive session:
| Command | Description |
|---|---|
/help |
Show all commands |
/exit / /quit |
Exit SimhaCLI |
/clear |
Clear conversation history |
/config |
Display current configuration |
/stats |
Show session statistics and token usage |
/tools |
List available tools |
/mcp |
Show MCP server connection status |
/model <name> |
Switch model (saves to project config) |
/approval <policy> |
Change approval policy |
/credentials / /creds |
View or update API key / base URL |
/permissions |
Manage tool access permissions (allow/deny/reset) |
/init |
Analyze project and generate AGENTS.md and SIMHACLI.md files |
/save |
Save current session to disk |
/sessions |
List all saved sessions |
/resume <id> |
Resume a previously saved session |
/checkpoint |
Create a checkpoint of the current session |
/restore <id> |
Restore a checkpoint |
/undo |
Undo the last file edit (interactive selective revert) |
/run <command> / !<cmd> |
Execute a terminal command directly |
/workflow <name> [args] |
Run development workflows (fullstack, github, push, etc.) |
/bot |
Show Telegram bot configuration and setup instructions |
๐ค Telegram Bot
Access SimhaCLI remotely from your phone via Telegram:
| Command | Description |
|---|---|
simhacli bot setup |
Interactive setup: configure bot token and user IDs |
simhacli bot start |
Start the Telegram bot (runs in foreground) |
simhacli bot status |
Show current bot configuration |
After setup, your bot will accept messages and commands directly in Telegram. Allowed users can chat with SimhaCLI via the bot.
๐ง Custom Tools
Drop a Python file into <project>/.simhacli/tool/ and SimhaCLI picks it up automatically:
from tools.base import Tool, ToolResult
from pydantic import Field
class MyTool(Tool):
name = "my_tool"
description = "Does something useful"
class Arguments(Tool.Arguments):
message: str = Field(description="Input message")
async def execute(self, args: Arguments) -> ToolResult:
return ToolResult.success_result(f"Got: {args.message}")
Adding Custom MCP Servers
-
Open
.simhacli/config.toml -
Add a new section following one of the patterns:
Python (recommended):
[mcp_servers.my_tool]
command = "uvx"
args = ["mcp-server-package-name"]
enabled = true
Node:
[mcp_servers.my_tool]
command = "npx"
args = ["-y", "@scope/server-name"]
enabled = true
- Restart SimhaCLI
- Browse more MCPs: https://github.com/modelcontextprotocol/servers
๐ฅ๏ธ CLI Options
simhacli [OPTIONS] [PROMPT]
Options:
--cwd PATH Set working directory
--model TEXT Override model name
--approval TEXT Override approval policy
--help Show this message and exit
๐ Changelog
v1.5.0 (April 1, 2026)
- Telegram Bot Integration: Access SimhaCLI remotely from your phone
simhacli bot setupโ interactive configuration of bot token and allowed userssimhacli bot startโ start the Telegram bot (runs in foreground)simhacli bot statusโ show current bot configuration/botcommand โ show bot setup instructions directly in SimhaCLI
- User Authentication: Telegram bot restricts access to allowed user IDs
- Real-time Bot Status: Visual indicators for bot configuration and readiness
- Improved Configuration Management: Better error handling and setup guidance
v1.4.0 (March 20, 2026)
-
Complete Command System Overhaul: New Command pattern with registry for better extensibility
-
New Commands:
/undoโ Undo file changes with interactive selective revert menu/run <command>/!<cmd>โ Execute terminal commands directly/workflow <name> [args]โ Run development workflows (fullstack, github, push, etc.)
-
Live Context Usage Display: See real-time token count vs context window in TUI
-
Enhanced Context Management: Actual token counting, pruning at 75%, improved compression at 75% threshold
-
Improved Undo: Interactive menu for selective file reversion with safety checks
-
Better Model Switching:
/modelnow preserves config file comments and updates system prompt -
Refactored Architecture: Cleaner separation with CommandHandler and command registry
-
Enhanced Error Messages: System prompts include context management feedback
v1.3.0 (March 18, 2026)
- Development Workflows: 10 end-to-end workflow actions (fullstack, github, push, install_deps, env_setup, build, readme, database, deploy, tests)
- Natural Language Routing: Agent automatically maps user requests to workflow actions
- Supabase MCP Support: Full Supabase integration alongside PostgreSQL
- Smart Auto-Detection: Package managers, build commands, and project types detected automatically
- MCP Setup Guide: Comprehensive
MCP_SETUP_GUIDE.mdwith step-by-step instructions - Preserved Config Comments: Changing model via
/modelno longer strips comments from config.toml - Enhanced Error Messages: All MCP errors now show setup instructions with config snippets
- Security Improvements: Placeholder values in configs, .gitignore protection for sensitive data
v1.2.0 (March 17, 2026)
- New
/initCommand: Deeply analyzes projects and generatesAGENTS.mdandSIMHACLI.mdinstruction files for better context-aware coding - New
/permissionsCommand: Manage tool access permissions directly from the CLI - File Attachment Support: Attach files to prompts using
@attach filesyntax - Git Context Integration: System prompts now include git context (branch, status) for enhanced understanding
- Enhanced Error Handling: Improved error handling and logging throughout the agent
- Tool Permission Status: TUI now displays tool permission status (allowed/denied)
v1.1.0 (January 27, 2026)
- Initial public release on PyPI
- 16 built-in tools for file operations, shell commands, web access, and sub-agents
- MCP (Model Context Protocol) support
- Session management with save/resume/checkpoint/restore
- Configurable approval policies
- Thinking display with live reasoning visualization
- Token tracking and performance metrics
๐ Links
- PyPI: https://pypi.org/project/simhacli/
- GitHub: https://github.com/naidu199/SimhaCLI
- Developer: Narasimha Naidu Korrapati on LinkedIn
- MCP Setup Guide: See
MCP_SETUP_GUIDE.mdfor detailed MCP configuration - Publishing Guide: See
PUBLISHING.mdfor PyPI deployment instructions
Made with โค๏ธ by Narasimha Naidu Korrapati
Project details
Release history Release notifications | RSS feed
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 simhacli-1.5.1.tar.gz.
File metadata
- Download URL: simhacli-1.5.1.tar.gz
- Upload date:
- Size: 130.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cd674c34c06491ec964c20fd0f27c6310ff5bd3aebb96af02b675cf2e80f110
|
|
| MD5 |
98eebbe4e5360cec9693e1f2a444dc16
|
|
| BLAKE2b-256 |
96cb3665297502c8f172841122b70c28d62b69f8baa79c444fc5e7076fe45faa
|
File details
Details for the file simhacli-1.5.1-py3-none-any.whl.
File metadata
- Download URL: simhacli-1.5.1-py3-none-any.whl
- Upload date:
- Size: 149.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50ae75f44277dcc9fa0254e0945a790ef539abb76ce8ea594bc64c7a81e287f2
|
|
| MD5 |
7aa115dfcda147e7ad40158642712748
|
|
| BLAKE2b-256 |
04d3d54d3096170d761e835d2cb766a72e57e9002f88048a4d4b95fd5ca79528
|