# πŸ”¨ Forja **Forja de agentes IA** β€” plataforma de gobernanza genΓ©rica para agentes de cualquier tipo. CatalogaciΓ³n y versionado (estilo Git) de definiciones, polΓ­ticas y guardrails; ejecuciΓ³n controlada con runtime stateful, Human-in-the-Loop y observabilidad completa. Úsala como plano de control en cualquier proyecto que necesite agentes gobernados. ## Arquitectura Forja es un **ΓΊnico servicio** (FastAPI en :8000) que expone: - API REST completa bajo `/api` (agentes, polΓ­ticas, ejecuciones, aprobaciones, violaciones, datasets, models, training runs, promotions). - UI embebida de **una sola pΓ‘gina** (HTMX + Tailwind + Jinja) que recorre el ciclo de vida completo en seis etapas: **Define β†’ Run β†’ Approve β†’ Train β†’ Promote β†’ Audit**. Cada panel se refresca solo tras cada acciΓ³n; las rutas antiguas (`/agents`, `/run`, ...) redirigen a su etapa. ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ forja-core :8000 β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ UI HTMX (navegador humano) β”‚ API REST (/api/*) β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ Strategy factories (LLM / Guardrails / Registry) β”‚ β”‚ LangGraph runtime + SQLite checkpoints (HITL real) β”‚ β”‚ Persistencia: YAML versionado + JSONL + SQLite β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` DocumentaciΓ³n viva: - [`ARCHITECTURE.md`](ARCHITECTURE.md) β€” decisiones tΓ©cnicas. - [`docs/explicacion.md`](docs/explicacion.md) β€” explicaciΓ³n didΓ‘ctica completa. - [`docs/componentes.md`](docs/componentes.md) β€” referencia de cableado a bajo nivel. - [`docs/futuro.md`](docs/futuro.md) β€” roadmap. ## Quickstart ```bash cp .env.example .env docker compose up ``` Abre [http://localhost:8000](http://localhost:8000). Funciona out-of-the-box (`LLM_PROVIDER=mock`, sin API keys). Si quieres usar Azure OpenAI real, edita `.env`. ## Demo guiada: el ciclo completo en 6 clicks Todo ocurre en `http://localhost:8000`, de arriba abajo, sin escribir nada: 1. **β–Ά Run demo incident** (etapa 02) β€” lanza un incidente HSS pregrabado por el pipeline gobernado. La acciΓ³n propuesta tiene risk 5 β†’ la ejecuciΓ³n se pausa en el approval gate. 2. **Approve all** (etapa 03) β€” el grafo se reanuda desde su checkpoint y la ejecuciΓ³n completa (aparece en la etapa 06 β€” Audit). 3. **Submit training run** (etapa 04) β€” el formulario viene pre-rellenado con el dataset `incident_sft`, el modelo `gpt4o_lora_base` y la versiΓ³n candidata `v3` (draft). Con `TRAINING_BACKEND=mock` termina al instante. 4. **Run evaluation** (etapa 04) β€” ejecuta los escenarios canΓ³nicos del agente (`agents//examples/`) sobre la candidata `v3`; pasa si no hay violaciones bloqueantes. 5. **Request promotion** (etapa 04) β€” crea la peticiΓ³n de gobernanza, que aparece en la etapa 05. 6. **Approve promotion** (etapa 05) β€” `v3` pasa a `active` en el registry; compruΓ©balo en los chips de versiΓ³n de la etapa 01. ## Capacidades implementadas | Feature | UbicaciΓ³n | |---|---| | Agent / Policy / Dataset / Model Registry | `core/src/forja_core/registry/` (base genΓ©rica `yaml_store.py`) | | Versionado Git-like (YAML) | `agents/`, `policies/`, `datasets/`, `models/` | | Guardrails runtime (strategy) | `core/src/forja_core/guardrails/` | | LangGraph + HITL + checkpoints | `core/src/forja_core/runtime/` | | Observabilidad (trace + structlog) | `core/src/forja_core/observability/` | | LLM abstraction (+fallback opcional) | `core/src/forja_core/llm/` | | Training backends (mock / Azure ML) | `core/src/forja_core/training/` | | EvaluaciΓ³n post-training (escenarios) | `core/src/forja_core/evaluation/` | | PromociΓ³n gobernada draft β†’ active | `core/src/forja_core/api/promotions.py` | | UI embebida (HTMX) | `core/src/forja_core/web/` (ruta raΓ­z) | | API REST completa | bajo `/api` en forja-core :8000 | ## Variables de entorno Ver [`.env.example`](.env.example). ### Azure ML training Set `TRAINING_BACKEND=azure_ml` and fill `AZURE_ML_*` workspace settings. Forja submits an Azure ML **command job** via `azure-ai-ml` using `DefaultAzureCredential` (Azure CLI, managed identity, etc.). Replace the bundled script in `core/src/forja_core/training/_azure_job_bundle/` or override `AZURE_ML_COMMAND` for your fine-tuning pipeline. Without workspace config, the backend stays in **stub mode** for local development. ## Roadmap Ver [`docs/futuro.md`](docs/futuro.md). ## Estructura del repositorio ``` forja/ β”œβ”€β”€ core/ servicio FastAPI ΓΊnico (API + UI HTMX embebida) β”œβ”€β”€ agents/ definiciones de agentes (YAML versionados) β”œβ”€β”€ policies/ polΓ­ticas de guardrails (YAML versionados) β”œβ”€β”€ datasets/ datasets para fine-tuning (YAML versionados) β”œβ”€β”€ models/ modelos base / destino de entrenamiento (YAML versionados) β”œβ”€β”€ data/ runtime state (gitignored) β”œβ”€β”€ tests/ └── docs/ (explicacion.md, componentes.md, futuro.md, ARCHITECTURE.md) ``` ## Development - Implementation guidelines: [`karpathy.md`](karpathy.md) - UI copy and language: [`docs/product-voice.md`](docs/product-voice.md) (English only in the web app) ## Tests ```bash make install make test # solo unit make test-all # unit + integration make lint # ruff + mypy make smoke # docker-compose + curl health ``` ## Licencia MIT (a confirmar).