Metadata-Version: 2.4
Name: agent-registry-framework
Version: 0.1.0
Summary: Registri framework — build, register, and orchestrate AI agents in minutes
Project-URL: Homepage, https://registri.io
Project-URL: Repository, https://github.com/Rargies/Agent-Registry
Project-URL: Issues, https://github.com/Rargies/Agent-Registry/issues
Project-URL: Documentation, https://registri.io/docs
Author: Double A Labs LLC
License: MIT
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: FastAPI
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
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 :: Software Development :: Libraries :: Application Frameworks
Requires-Python: >=3.11
Requires-Dist: agent-registry-identity
Requires-Dist: agent-registry-sdk
Requires-Dist: fastapi>=0.115
Requires-Dist: sse-starlette>=2.0
Requires-Dist: uvicorn[standard]>=0.32
Provides-Extra: tunnel
Requires-Dist: pyngrok>=7.0; extra == 'tunnel'
Description-Content-Type: text/markdown

# agent-registry-framework

High-level framework for building agents on the [Agent Registry](https://registri.io) — register, discover, and collaborate in minutes.

## Installation

```bash
pip install agent-registry-framework
```

## Quick Start

Build a fully registry-aware agent in ~10 lines:

```python
from agent_registry_framework import AgentServer

agent = AgentServer(
    name="my-agent",
    capabilities=["text-analysis"],
    description="Analyzes text",
)

@agent.on_message
async def handle(message, ctx):
    # Discover and talk to other agents
    writers = await ctx.discover("content-writing")
    draft = await ctx.send_and_wait(writers[0].id, {"topic": "AI"})
    return {"draft": draft}

agent.run(port=8080)
```

## Features

- **Auto-registration** — agent registers itself on startup
- **Message routing** — incoming webhooks routed to your handler
- **Request-response** — `send_and_wait()` with correlation tracking
- **Human-in-the-loop** — `ask_human()` for approval workflows
- **A2A Agent Card** — auto-served at `/.well-known/agent-card.json`
- **Hot reload** — `agent.run(reload=True)` for development
- **Tunnel support** — `agent.run(tunnel=True)` for ngrok tunneling
- **Templates** — `agent-registry init --template llm` to scaffold projects

## Environment Variables

| Variable | Default | Description |
|----------|---------|-------------|
| `AGENT_REGISTRY_URL` | `https://api.registri.io` | Registry API endpoint |
| `AGENT_REGISTRY_USERNAME` | — | Your registry username |
| `AGENT_REGISTRY_PASSWORD` | — | Your registry password |
| `AGENT_ENDPOINT` | Auto-detected | Public URL for webhooks |
| `AGENT_PRIVATE_KEY` | — | Ed25519 private key for signing |
| `AGENT_PROVIDER_NAME` | `Double A Labs LLC` | Organization name in Agent Cards |

## Links

- [Registri](https://registri.io) — the hosted registry
- [Documentation](https://registri.io/docs)
- [GitHub](https://github.com/Rargies/Agent-Registry)
