Metadata-Version: 2.4
Name: indusagi
Version: 0.1.1
Summary: Indusagi — a terminal-first AI coding agent framework. Python rebuild.
Project-URL: Homepage, https://github.com/varunisrani/indusagi-ts
Project-URL: Repository, https://github.com/varunisrani/indusagi-ts
Project-URL: Issues, https://github.com/varunisrani/indusagi-ts/issues
Author: Varun Israni
Author-email: IndusAGI Team <team@indusagi.ai>
License-Expression: MIT
License-File: CREDITS.md
License-File: NOTICE
Keywords: agent,ai,cli,framework,llm,mcp,tui
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: httpx>=0.27
Requires-Dist: pydantic>=2.7
Requires-Dist: python-ulid>=2.7
Requires-Dist: regex>=2024.4.16
Requires-Dist: wcwidth>=0.2.13
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: respx>=0.21; extra == 'dev'
Provides-Extra: mcp
Requires-Dist: mcp>=1.0; extra == 'mcp'
Provides-Extra: tui
Requires-Dist: markdown-it-py>=3.0; extra == 'tui'
Requires-Dist: pygments>=2.18; extra == 'tui'
Requires-Dist: textual>=0.80; extra == 'tui'
Description-Content-Type: text/markdown

# 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.

```bash
pip install indusagi
```

For the interactive terminal UI and MCP server mounting, install the extras:

```bash
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

```python
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):

```python
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:

```python
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 `indusagi` console script:

```bash
indusagi --help                      # usage
indusagi --version                   # indusagi 0.1.1
indusagi -p "explain this repo"      # one-shot: print the answer and exit
indusagi --json                      # NDJSON wire protocol over stdio (for hosts)
indusagi                             # interactive Textual TUI (needs the [tui] extra)
indusagi auth login                  # OAuth + PKCE login
indusagi 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

```bash
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](NOTICE) and [CREDITS.md](CREDITS.md).
