Metadata-Version: 2.4
Name: indusagi
Version: 0.2.1.1
Summary: A modern, extensible indus-agents for building autonomous agents with LLMs
Project-URL: Homepage, https://github.com/varunisrani/indus-agents
Project-URL: Documentation, https://github.com/varunisrani/indus-agents#readme
Project-URL: Repository, https://github.com/varunisrani/indus-agents
Project-URL: Issues, https://github.com/varunisrani/indus-agents/issues
Project-URL: Changelog, https://github.com/varunisrani/indus-agents/blob/main/CHANGELOG.md
Author-email: IndusAGI Team <team@indusagi.ai>
Maintainer-email: IndusAGI Team <team@indusagi.ai>
License: MIT
License-File: LICENSE
Keywords: agent,ai,anthropic,assistant,autonomous-agents,chatbot,framework,function-calling,llm,openai,tool-use
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
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: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.9
Requires-Dist: anthropic<1.0.0,>=0.35.0
Requires-Dist: httpx<1.0.0,>=0.25.0
Requires-Dist: openai<2.0.0,>=1.0.0
Requires-Dist: pydantic-settings<3.0.0,>=2.0.0
Requires-Dist: pydantic<3.0.0,>=2.0.0
Requires-Dist: python-dotenv<2.0.0,>=1.0.0
Requires-Dist: rich<14.0.0,>=13.0.0
Requires-Dist: typer<1.0.0,>=0.9.0
Provides-Extra: all
Requires-Dist: black<25.0.0,>=23.0.0; extra == 'all'
Requires-Dist: ipdb<1.0.0,>=0.13.0; extra == 'all'
Requires-Dist: ipython<9.0.0,>=8.0.0; extra == 'all'
Requires-Dist: mkdocs-material<10.0.0,>=9.0.0; extra == 'all'
Requires-Dist: mkdocs<2.0.0,>=1.5.0; extra == 'all'
Requires-Dist: mkdocstrings[python]<1.0.0,>=0.24.0; extra == 'all'
Requires-Dist: mypy<2.0.0,>=1.0.0; extra == 'all'
Requires-Dist: pre-commit<4.0.0,>=3.0.0; extra == 'all'
Requires-Dist: pytest-asyncio<1.0.0,>=0.21.0; extra == 'all'
Requires-Dist: pytest-cov<5.0.0,>=4.0.0; extra == 'all'
Requires-Dist: pytest-mock<4.0.0,>=3.12.0; extra == 'all'
Requires-Dist: pytest<8.0.0,>=7.0.0; extra == 'all'
Requires-Dist: ruff<1.0.0,>=0.1.0; extra == 'all'
Requires-Dist: textual<1.0.0,>=0.40.0; extra == 'all'
Provides-Extra: dev
Requires-Dist: black<25.0.0,>=23.0.0; extra == 'dev'
Requires-Dist: ipdb<1.0.0,>=0.13.0; extra == 'dev'
Requires-Dist: ipython<9.0.0,>=8.0.0; extra == 'dev'
Requires-Dist: mypy<2.0.0,>=1.0.0; extra == 'dev'
Requires-Dist: pre-commit<4.0.0,>=3.0.0; extra == 'dev'
Requires-Dist: pytest-asyncio<1.0.0,>=0.21.0; extra == 'dev'
Requires-Dist: pytest-cov<5.0.0,>=4.0.0; extra == 'dev'
Requires-Dist: pytest-mock<4.0.0,>=3.12.0; extra == 'dev'
Requires-Dist: pytest<8.0.0,>=7.0.0; extra == 'dev'
Requires-Dist: ruff<1.0.0,>=0.1.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-material<10.0.0,>=9.0.0; extra == 'docs'
Requires-Dist: mkdocs<2.0.0,>=1.5.0; extra == 'docs'
Requires-Dist: mkdocstrings[python]<1.0.0,>=0.24.0; extra == 'docs'
Provides-Extra: tui
Requires-Dist: textual<1.0.0,>=0.40.0; extra == 'tui'
Description-Content-Type: text/markdown

# indus-agents

[![PyPI version](https://badge.fury.io/py/indusagi.svg)](https://pypi.org/project/indusagi/)
[![Python versions](https://img.shields.io/pypi/pyversions/indusagi.svg)](https://pypi.org/project/indusagi/)
[![License](https://img.shields.io/pypi/l/indusagi.svg)](https://github.com/varunisrani/indus-agents/blob/main/LICENSE)

A modern, extensible framework for building LLM-powered agents with tools, memory, and multi-agent orchestration. Built with Python and a clean, modular architecture.

## Features

- Clean architecture with clear separation of concerns
- Type safety via Pydantic models
- Tool calling loop with built-in dev tools
- Multi-provider support: OpenAI, Anthropic, Groq, Ollama
- Multi-agent orchestration (Agency + Orchestrator)
- Conversation memory and tool usage logging
- Rich CLI and optional TUI

## Quick Start

### Installation

#### Using uv (recommended)

```bash
pip install uv
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
uv pip install indusagi
```

#### Using pip

```bash
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
pip install indusagi
```

#### Development install

```bash
git clone https://github.com/varunisrani/indus-agents.git
cd indus-agents
uv pip install -e ".[dev]"
```

### Basic usage

```python
from indusagi import Agent, AgentConfig

agent = Agent(
    name="Helper",
    role="Helpful assistant",
    config=AgentConfig(model="gpt-5-mini", temperature=0.7),
)

response = agent.process("What is 2 + 2?")
print(response)
```

### Using tools

```python
from typing import ClassVar
from indusagi import Agent, AgentConfig
from indusagi.tools import BaseTool, registry


class AddTool(BaseTool):
    name: ClassVar[str] = "add"
    description: ClassVar[str] = "Add two numbers"
    a: int
    b: int

    def execute(self) -> str:
        return str(self.a + self.b)


registry.register(AddTool)

agent = Agent(
    name="Calculator",
    role="Math helper",
    config=AgentConfig(model="gpt-5-mini"),
)

response = agent.process_with_tools(
    "Add 12 and 30",
    tools=registry.schemas,
    tool_executor=registry,
)
print(response)
```

### Configuration

Copy `.env.example` to `.env` and fill in your keys. Example:

```env
OPENAI_API_KEY=your-openai-api-key-here
ANTHROPIC_API_KEY=your-anthropic-api-key-here
GROQ_API_KEY=your-groq-api-key-here
OLLAMA_API_KEY=your-ollama-api-key-here

LLM_PROVIDER=groq
GROQ_MODEL=moonshotai/kimi-k2-instruct-0905
OLLAMA_MODEL=glm-4.7

DEFAULT_MODEL=gpt-5-mini
DEFAULT_TEMPERATURE=1
MAX_TOKENS=6000
```

## CLI Commands

```bash
indusagi run "Tell me a joke"
indusagi interactive
indusagi list-tools
indusagi test-connection
indusagi list-agents
indusagi create-agent --output ./agents
indusagi tui
indusagi agency-demo
indusagi version
```

## Project Structure

```text
indus-agents/
  src/indusagi/
    agent.py
    agency.py
    orchestrator.py
    memory.py
    tools.py
    tools/
    providers/
    presets/
    templates/
    tui/
    utils/
    cli.py
  example_agents/
    example_agency*.py
    example_agency_improved_*_prompts/
  example-html-website-create-by-agents/
    <static html demos>
  useful-resource/
    Agency-Code/
    Mini-Agent/
    claude-agent-sdk/
  .env.example
  agents.md
  pyproject.toml
  README.md
  CHANGELOG.md
  CONTRIBUTING.md
  LICENSE
```

## Examples and Demos

- `example_agents/` contains the demo scripts and prompt folders used by the agency examples.
- `example-html-website-create-by-agents/` contains static HTML/CSS/JS demo sites generated by agents.

## Archived or Reference Projects

- `useful-resource/` contains archived or reference subprojects (not part of the core package).

## Development

```bash
uv pip install -e ".[dev]"
pre-commit install
ruff check src
ruff format src
python -m build
```

## Contributing

Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.

## Support

- Issues: https://github.com/varunisrani/indus-agents/issues
- Discussions: https://github.com/varunisrani/indus-agents/discussions
- Email: team@indusagi.ai

## License

This project is licensed under the MIT License. See [LICENSE](LICENSE).

## Acknowledgments

- Built with Typer for the CLI
- Styled with Rich for terminal output
- Validated with Pydantic models

## Citation

```bibtex
@software{indusagi,
  title = {indus-agents},
  author = {IndusAGI Team},
  year = {2025},
  url = {https://github.com/varunisrani/indus-agents}
}
```
