# 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" ```