Status snapshot · 2 June 2026
Governed control plane for LLM agents and models — registry, guardrails, HITL, training orchestration, and promotion gates.
Forja is evolving from an agent governance runtime into a full model lifecycle forge: define agents and policies (Studio), validate with guardrails and human review (Runs, Approvals), orchestrate external fine-tuning (Azure ML), evaluate on canonical scenarios, and promote draft versions to production (Promotions).
docs/product-voice.md and karpathy.md referenced from READMEdata/executions.jsonldatasets/ and models/ registriesTrainingBackend strategy: mock and azure_ml/api/datasets, /api/models, /api/training/runsdata/training_runs/agents/<name>/examples/*.txtPOST /api/training/runs/{id}/evaluate — blocks promotion if guardrails fail/api/promotions — request, approve, reject; activates agent version in registryazure-ai-ml + azure-identity (DefaultAzureCredential)AZURE_ML_* workspace settings are setcore/src/forja_core/training/_azure_job_bundle/train.py/api and HTMX UI on port 8000cp .env.example .env docker compose up
Open http://localhost:8000. Default LLM_PROVIDER=mock works without API keys.
cp .env.example .env python -m venv venv source venv/bin/activate pip install -r core/requirements.txt pip install pytest pytest-asyncio ruff mypy freezegun cd core/src uvicorn forja_core.main:app --reload --host 0.0.0.0 --port 8000
Run from repo root with PYTHONPATH=core/src if needed:
PYTHONPATH=core/src uvicorn forja_core.main:app --reload --port 8000
source venv/bin/activate ./venv/bin/pytest tests/unit -q # unit ./venv/bin/pytest tests/integration -q # integration (slower) make lint # ruff + mypy (if tools on PATH)
incident_analyzer01_sip_registration_drop (may trigger Approvals)| Area | Endpoint |
|---|---|
| Health | GET /health |
| Invoke agent | POST /api/agents/{name}/invoke |
| Training run | POST /api/training/runs |
| Post-train eval | POST /api/training/runs/{id}/evaluate |
| Promotion | POST /api/promotions → .../approve |
train.py with real fine-tuning script