Metadata-Version: 2.4
Name: coreouto
Version: 0.1.0
Summary: A minimal, extensible agent library for Python. Five philosophies: minimalism, extensibility, explicitness, fragmentation, conciseness.
Project-URL: Homepage, https://github.com/llaa33219/coreouto
Project-URL: Documentation, https://github.com/llaa33219/coreouto/tree/main/docs
Project-URL: Repository, https://github.com/llaa33219/coreouto
Project-URL: Issues, https://github.com/llaa33219/coreouto/issues
Author: coreouto authors
License-Expression: MIT
License-File: LICENSE
Keywords: agent,ai,llm,provider,tool-use
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
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 :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: pydantic>=2.0
Provides-Extra: all
Requires-Dist: anthropic>=0.18; extra == 'all'
Requires-Dist: google-generativeai>=0.3; extra == 'all'
Requires-Dist: openai>=1.0; extra == 'all'
Provides-Extra: anthropic
Requires-Dist: anthropic>=0.18; extra == 'anthropic'
Provides-Extra: dev
Requires-Dist: mypy>=1.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.21; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: ruff>=0.1; extra == 'dev'
Provides-Extra: google
Requires-Dist: google-generativeai>=0.3; extra == 'google'
Provides-Extra: openai
Requires-Dist: openai>=1.0; extra == 'openai'
Description-Content-Type: text/markdown

# coreouto

**A minimal, extensible agent library for Python.**

Built on five philosophies: **minimalism, extensibility, explicitness, fragmentation, conciseness.**

The whole library reduces to one idea: an agent is called with a message, runs an internal loop, and returns its response when the model wraps its final answer in `<finish>...</finish>` tags. Everything else — providers, tools, presets, hooks, multi-agent — is an opt-in extension.

```python
import os

import coreouto as co
from coreouto.providers.openai import OpenAIProvider

@co.register_tool("search")
def search(query: str) -> str:
    """Search the web for `query`."""
    return f"<results for {query}>"

co.register_provider("minimax", OpenAIProvider(
    api_key=os.environ["MINIMAX_API_KEY"],
    base_url="https://api.minimax.io/v1",
))

preset = co.register_agent_preset(
    "researcher", model="MiniMax-M3", provider="minimax",
    system_prompt="You are a research assistant.",
    tools=["search"],
)
response = co.Agent(preset.to_config()).call_sync("Find me recent news about fusion energy.")
print(response.content)
```

## Install

```bash
pip install coreouto
# with providers
pip install coreouto[openai]
pip install coreouto[anthropic]
pip install coreouto[google]
pip install coreouto[all]
```

## Documentation

See [`docs/`](./docs/) for the full documentation set:

- [Philosophy](./docs/philosophy.md) — the five principles
- [Quickstart](./docs/quickstart.md)
- [Agent](./docs/agent.md)
- [Providers](./docs/providers.md)
- [Tools](./docs/tools.md)
- [Presets](./docs/presets.md)
- [Hooks](./docs/hooks.md)
- [Multi-agent](./docs/multi-agent.md)

## License

MIT
