indusagi
A terminal-first AI coding-agent framework for Python. A zero-SDK LLM
gateway, a pure-FSM agent runtime, a built-in tool suite, MCP interop, a
multi-agent crew layer, and a Textual terminal UI — all in one importable
package with a py.typed marker and no heavy dependencies in the core.
pip install indusagi
For the interactive terminal UI and MCP server mounting, install the extras:
pip install "indusagi[mcp,tui]"
The core (gateway, runtime, tools, print/wire CLI modes) needs only httpx,
pydantic, wcwidth, python-ulid, and regex. The tui extra adds Textual,
Pygments, and markdown-it-py; the mcp extra adds the official mcp SDK.
Requires Python 3.11+.
Use it as a library
import asyncio
from indusagi.agent import Agent
async def main():
agent = Agent(model="claude-sonnet-4-5") # reads ANTHROPIC_API_KEY from env
reply = await agent.prompt("say hello in five words")
print(reply)
asyncio.run(main())
Or talk to the model gateway directly (zero provider SDKs, just httpx wire connectors):
from indusagi.llmgateway import complete, get_card
reply = await complete("claude-sonnet-4-5", conversation, options)
card = get_card("claude-sonnet-4-5") # context window, pricing, etc.
Every subsystem is importable on its own:
import indusagi.runtime # the agent FSM, sessions, compaction
import indusagi.capabilities # the built-in tool suite
import indusagi.interop # MCP client/server bridge
import indusagi.swarm # file-backed multi-agent crews
import indusagi.smithy # the agent-builder
Use it as a CLI
The package installs the pindusagi console script:
pindusagi --help # usage
pindusagi --version # indusagi 0.1.2
pindusagi -p "explain this repo" # one-shot: print the answer and exit
pindusagi --json # NDJSON wire protocol over stdio (for hosts)
pindusagi # interactive Textual TUI (needs the [tui] extra)
pindusagi auth login # OAuth + PKCE login
pindusagi auth status # show stored credentials
Flags include --model/-m, --interactive/-i, --cwd, --system,
--no-tools, and repeatable --mcp <server>. With a prompt and no TTY it
answers once and exits; attended with no prompt it opens the interactive loop.
API keys come from the usual provider env vars (ANTHROPIC_API_KEY,
OPENAI_API_KEY, …); state lives under ~/.pindusagi/ (override with
INDUSAGI_HOME).
The TUI provides streaming markdown, structured diffs and tool cards, twelve dialogs (model / session / theme / login / …), a footer with token/cost/context stats, Esc to abort a run, and Ctrl-C to exit.
What's inside
indusagi/
├── llmgateway/ # zero-SDK LLM provider gateway (httpx wire connectors)
├── runtime/ # pure-FSM agent runtime: reducer, conductor, sessions
├── capabilities/ # built-in tool suite over Fs/Shell seams
├── interop/ # MCP bridge (official `mcp` SDK)
├── connectors/ # Composio SaaS connectors
├── swarm/ # file-backed multi-agent crew layer
├── smithy/ # agent-builder meta-tool
├── tracing/ # observability: segments, sinks, redaction, sampling
├── shell_app/ # CLI: print / NDJSON wire / REPL runners, OAuth login
├── tui/ # terminal primitives: keys, width, fuzzy, keybindings
├── react_ink/ # Textual widgets (markdown stream, diff view, dialogs)
├── ui_bridge/ # runtime ↔ TUI projection + interactive Textual app
└── ai/ agent/ mcp/ memory # high-level facades over the core
849 models across 24 providers ship in the catalog (indusagi.llmgateway):
Anthropic, OpenAI, Google, Bedrock, NVIDIA, Kimi, Ollama, OpenRouter, and more.
Supported providers
API keys are read from the standard env vars. Anthropic, OpenAI, Google (Generative AI + Vertex), Azure OpenAI, NVIDIA, Kimi, and Ollama have first-party wire connectors; hundreds more models route through the OpenAI-compatible connector. OAuth login is supported for Anthropic and OpenAI.
Development
python3.11 -m venv .venv
.venv/bin/pip install -e ".[dev,mcp,tui]"
.venv/bin/pytest # 1,349 tests; network-free (mock connector, respx, Textual Pilot)
The package ships py.typed, the model-catalog data, and the agent-builder
knowledge pack inside the wheel.
License
MIT. See NOTICE and CREDITS.md.
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 indusagi-0.1.2.tar.gz.
File metadata
- Download URL: indusagi-0.1.2.tar.gz
- Upload date:
- Size: 806.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fcdebaf871bcd03df9f2311bc83aa4afa1fa8ef59851837304ea139d0714e254
|
|
| MD5 |
11fc34ac9554aa6f68465838bc92d78b
|
|
| BLAKE2b-256 |
cb588f5e28cf50faba0ebb5297c00957265cace3e30f1c8e98c1ae78c6c3e5c4
|
File details
Details for the file indusagi-0.1.2-py3-none-any.whl.
File metadata
- Download URL: indusagi-0.1.2-py3-none-any.whl
- Upload date:
- Size: 861.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f83286066fca9a7f2440962bede9ac118a473c5d17cb46993abb75853aac9834
|
|
| MD5 |
135bcb1c84da76c2465fdbd8e2de2440
|
|
| BLAKE2b-256 |
4dc3f3e5dd42a9a0ff47b8206816e56bc8f356b25c03ecd730a06f37908ec0bf
|