Built by Narasimha Naidu Korrapati
Features β’ Installation β’ Configuration β’ Commands β’ Tools
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)
- 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
- 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
- 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)
- 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)
| 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 |
- 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
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.
- Save sessions to disk (
/save) and resume them later (/resume <id>) - Create mid-task checkpoints (
/checkpoint//restore <id>) - Undo the last file edit (
/undo)
- 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
/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
- Python 3.10+
- An API key (OpenRouter, OpenAI, Gemini, or any OpenAI-compatible endpoint)
pip install simhaclisimhacli # interactive mode
simhacli "fix the bug in app.py" # single prompt
simhacli --help # show all optionsgit clone https://github.com/naidu199/SimhaCLI.git
cd SimhaCLI
pip install -e .
simhacliSimhaCLI looks for configuration in two places (project overrides global):
| Location | Purpose |
|---|---|
~/.simhacli/config.toml |
Global defaults |
<project>/.simhacli/config.toml |
Per-project overrides |
[model]
name = "openrouter/free"
temperature = 1.0
api_key = "your_api_key_here"
api_base_url = "https://openrouter.ai/api/v1"simhacli
> /credentials[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| 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 |
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.) |
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}")-
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 = trueNode:
[mcp_servers.my_tool]
command = "npx"
args = ["-y", "@scope/server-name"]
enabled = true- Restart SimhaCLI
- Browse more MCPs: https://github.com/modelcontextprotocol/servers
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
-
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
- 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
- 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)
- 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
- 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