← Back to all products

Agent Forge Core

$297

Multi-agent runtime you can deploy: a LangGraph supervisor/worker graph with a CrewAI adapter, a FastAPI service (SSE streaming, per-tenant API keys, human approval endpoint), guardrails, OpenTelemetry tracing with cost tracking, a Postgres checkpointer, YAML golden-case evals, Docker/Kubernetes/Terraform deploy files, and CI.

3 filespythonv1.0.0
DockerMarkdownPythonTerraformJSONYAMLTOMLFastAPILLMOpenAI

Product Preview

Try the interactive reader and demo tools below, or get the full product with all content unlocked.

Interactive Reader (Free Preview) Download Free Sample

File Structure 3 files

agent-forge-core/ ├── free_sample ├── interactive └── preview

Documentation Preview README excerpt

Agent Forge Core

A production-minded runtime for multi-agent LLM apps in Python: supervisor/worker orchestration, guardrails

(injection, PII, budgets, tool allowlists, human approval), OpenTelemetry tracing, per-run cost tracking, a

multi-tenant FastAPI service with SSE streaming, checkpointed resume, and a golden-set eval harness.

Everything runs offline against a deterministic MockLLM, so tests and CI need no API keys and no network.

LangGraph, Postgres and CrewAI are optional extras; the default install uses a built-in executor and SQLite.

Quickstart


python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
pytest                                   # 41 tests, offline
python examples/quickstart.py            # run + approval pause/resume
agent-forge evals evals/golden.yaml --rubric evals/judge_rubric.yaml

Serve the API:


export AGENT_FORGE_ADMIN_TOKEN=change-me AGENT_FORGE_API_KEY_PEPPER=change-me-too
agent-forge serve &                      # http://127.0.0.1:8000
python examples/api_client.py

Real model: implement the 1-method LLM protocol or use HTTPChatLLM (OpenAI-compatible; set base URL, key, model).

Extras: .[langgraph], .[postgres], .[otlp], .[crewai]. Dependencies are pinned in pyproject.toml.

Layout

src/agent_forge (package) - tests/ - evals/ - deploy/ (Docker, compose, k8s, terraform skeleton) -

guide/ (ARCHITECTURE, GUARDRAILS, EVALS, RUNBOOK) - examples/.

What it is not

Not a hosted service, not a prompt library, not a security guarantee. The injection detector is a first layer

(see guide/GUARDRAILS.md). Price table values are placeholders. Deploy files are starting points to adapt.

License: MIT with a no-resale-as-template clause (see LICENSE).

Code Sample .py preview

src/agent_forge/api.py """FastAPI service: per-tenant API keys, blocking + SSE runs, human approval. POST /v1/runs run to completion (or until approval needed) POST /v1/runs/stream same, as Server-Sent Events GET /v1/runs/{id} status / final answer / pending approval POST /v1/runs/{id}/approval approve or reject a paused tool call POST /v1/admin/tenants create tenant + first API key (admin token) GET /healthz liveness (no auth) Auth: ``X-API-Key: afk_...`` (or ``Authorization: Bearer afk_...``). Keys are stored only as HMAC hashes. Runs are tenant-scoped: another tenant's run id returns 404, never 403 (no existence oracle). """ from __future__ import annotations import hmac import json from typing import Any, Iterator from fastapi import Depends, FastAPI, Header, HTTPException, Request from fastapi.responses import JSONResponse, StreamingResponse from pydantic import BaseModel, Field from .config import Settings from .errors import (AgentForgeError, ApprovalNotPending, AuthError, BudgetExceeded, GuardrailViolation, NotFound, PromptInjectionBlocked, ToolNotAllowed) from .runtime import AgentRuntime from .store import Tenant _STATUS = {AuthError: 401, NotFound: 404, ApprovalNotPending: 409, BudgetExceeded: 402, PromptInjectionBlocked: 422, ToolNotAllowed: 403, GuardrailViolation: 422} class RunRequest(BaseModel): task: str = Field(min_length=1, max_length=20000) class ApprovalRequest(BaseModel): approved: bool note: str = Field(default="", max_length=2000) class TenantRequest(BaseModel): id: str = Field(pattern=r"^[a-z0-9][a-z0-9_-]{1,62}$") name: str = "" allowed_tools: list[str] = [] approval_tools: list[str] = [] token_budget: int = Field(default=0, ge=0) usd_budget: float = Field(default=0.0, ge=0) # ... 88 more lines ...
Buy Now — $297 Back to Products