Files
opus-agent/README.md
T
Adriano Dal Pastro 5d78d865a4 fix: correct Docker setup, SDK async API, and docs
- Dockerfile: use explicit uvicorn command (uv run start fails without package mode)
- docker-compose: mount claude-auth volume to /root/.claude (worker runs as root)
- worker: update to Claude Code SDK async iterable API (query() returns iterator, not array)
- main.py: fix docs_url from /doc to /docs
- README: correct login instructions (exec not run --rm), add production URLs
- Add CLAUDE.md with full project documentation

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 20:35:44 +00:00

84 lines
1.9 KiB
Markdown

# OpusAgent
Servizio self-hosted per l'interazione programmatica con i modelli Anthropic
tramite Claude Code SDK, sfruttando un abbonamento Claude Pro/Max esistente.
## Architettura
Due container Docker:
- **fastapi-service** — API REST, autenticazione, coda richieste, rate limiting
- **claude-worker** — Processamento richieste via Claude Code SDK
## Setup
### Prerequisiti
- Docker e Docker Compose
- Un abbonamento Claude Pro/Max attivo
### Prima installazione
1. Copia e configura l'environment:
```bash
cp .env.example .env
# Edita .env: imposta API_KEY e le altre variabili
```
2. Avvia il sistema:
```bash
docker compose up -d
```
3. Autentica Claude Code nel worker (nel container attivo, non con `run --rm`):
```bash
docker compose exec claude-worker npx claude login
```
Le credenziali vengono salvate nel volume Docker `claude-auth` (mount: `/root/.claude`)
e persistono tra riavvii e rebuild. Si perdono solo con `docker compose down -v`.
4. Verifica:
```bash
curl -H "X-Api-Key: TUA_KEY" http://localhost:8000/api/health
```
## Sviluppo locale
```bash
uv sync --all-groups
cp .env.example .env
# Edita .env
uv run dev
```
## Test
```bash
uv run pytest -v
```
## API
Documentazione interattiva:
- Swagger UI: `https://opus-agent.tielogic.xyz/docs`
- ReDoc: `https://opus-agent.tielogic.xyz/redoc`
### Esempio d'uso
```bash
# Crea un argomento
curl -X POST http://localhost:8000/api/topics \
-H "X-Api-Key: TUA_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "coding", "system_prompt": "Sei un esperto sviluppatore."}'
# Invia una richiesta
curl -X POST http://localhost:8000/api/requests \
-H "X-Api-Key: TUA_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "Come implemento JWT in FastAPI?", "topic_id": "ID_TOPIC"}'
# Controlla il risultato
curl http://localhost:8000/api/requests/ID_RICHIESTA \
-H "X-Api-Key: TUA_KEY"
```