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
- 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
- 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)
- 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 = "mistralai/devstral-2512:free"
temperature = 1.0
api_key = "your_api_key_here"
api_base_url = "https://openrouter.ai/api/v1"# Windows (PowerShell)
$env:API_KEY = "your_api_key_here"
$env:API_BASE_URL = "https://openrouter.ai/api/v1"
# Linux / macOS
export API_KEY="your_api_key_here"
export API_BASE_URL="https://openrouter.ai/api/v1"simhacli
> /credentials[model]
name = "mistralai/devstral-2512: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 |
/model <name> |
Switch model (saves to project config) |
/approval <policy> |
Change approval policy |
/config |
Show current configuration |
/credentials |
View or update API key / base URL |
/tools |
List all available tools |
/mcp |
Show MCP server connection status |
/stats |
Show session statistics and token usage |
/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 |
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}")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
- PyPI: https://pypi.org/project/simhacli/
- GitHub: https://github.com/naidu199/SimhaCLI
- Developer: Narasimha Naidu Korrapati on LinkedIn
Made with β€οΈ by Narasimha Naidu Korrapati