Skip to content

Releases: Scaffoldic/agentforge-py

AgentForge v0.2.4 — Live-fire MCP

03 Jun 07:23

Choose a tag to compare

AgentForge v0.2.4 — Live-fire MCP

The first live, Bedrock-backed MCP agent integration surfaced a
cluster of framework defects — from "the documented config does
nothing" to "every MCP tool name is rejected by the provider."
v0.2.4 fixes the whole cluster (eight bugs) and lands the one
enhancement that unblocks hosted MCP servers.

No breaking changes. Same 34 workspace packages as v0.2.3,
bumped to 0.2.4 with cross-package pins refreshed.


Highlights

  • MCP modules.protocols is actually wired now. Declaring an
    MCP server in agentforge.yaml previously validated but did
    nothing — no subprocess, no tools. The runtime now resolves
    modules.protocols, starts each handler, and merges its tools
    into the agent (bug-020 + bug-014). This path also fixed a
    latent gap where native agent.tools from config were never
    wired.

  • MCP tools work on every provider. Tool names are now joined
    with __ (e.g. filesystem__read_file) and validated against
    the ^[a-zA-Z0-9_-]{1,64}$ charset Bedrock / OpenAI / Anthropic
    all enforce, with a local, actionable error before the request
    leaves the process (bug-012 + bug-017). Dotted names used to
    fail remotely on the first LLM call.

  • pip install "agentforge-py[mcp]" delivers a working MCP
    runtime.
    The meta-package extras now chain each sister
    package's vendor-SDK extra, so the SDK actually installs
    (bug-015). An audit fixed 12 broken extra chains + [all].

  • Hosted MCP servers over HTTP (enh-001).
    MCPServer.from_http(...) + serve() now serve the MCP
    protocol over streamable-HTTP under uvicorn, not just stdio:

    server = MCPServer.from_http(tools=tools, host="0.0.0.0", port=8765)
    await server.serve()   # serves over HTTP instead of raising
  • Chat sessions create cleanly + terse config syntax works.
    POST /sessions no longer 500s on a fresh SQLite/Postgres/Redis
    store (bug-018), and the documented - faithfulness /
    - presidio: {…} shorthand for evaluators and guardrails is
    accepted (bug-019).


What's new

Added

  • MCP runtime wiringProtocolBridge contract +
    Agent(protocol_bridges=…) + build_protocols_from_config
    (feat-013). MCPBridge.attach_local_tools / MCPServer.set_tools.
  • agentforge_core.contracts.tool.validate_tool_name +
    ToolNameInvalidError
    — portable tool-name validation invoked
    by every provider at request-build time (bug-017).
  • ChatHistoryStore.create_session(...) — concrete, additive
    ABC method to register a session before its first turn (bug-018).
  • MCP server-side HTTP transport (enh-001)MCPServer.from_http
    • serve() over streamable-HTTP (StreamableHTTPSessionManager
      under uvicorn). starlette / uvicorn arrive via
      agentforge-mcp[mcp]. SSE server transport remains deferred.

Changed

  • 34 workspace packages bumped to 0.2.4; cross-package pins
    refreshed ~= 0.2.3~= 0.2.4.
  • MCP server from_stdio / from_http register tools at
    construction; register_tools() is idempotent (bug-013).
  • The MCP client HTTP transport moved off the SDK's deprecated
    streamablehttp_client to streamable_http_client.
  • agentforge-chat hard-deps aiosqlite (it was an optional
    extra despite an unconditional import).

Fixed

  • bug-020 / bug-014modules.protocols.mcp never instantiated;
    MCPBridge.from_config raised inside a running event loop.
  • bug-012 / bug-017 — MCP tool names used an illegal .
    separator; provider tool-name charset undocumented + unchecked.
  • bug-015agentforge-py extras didn't pull their vendor
    SDKs (12 chains + [all]; bedrock phantom extra; chat aiosqlite).
  • bug-019 — terse string / single-key-mapping config sugar for
    evaluators + guardrails raised ValidationError.
  • bug-018POST /sessions 500'd on a fresh SQL/Redis chat
    store.
  • bug-013MCPServer factories served an empty ListTools.
  • bug-008 — scaffolds recorded _template_version: 0.0.0+unknown
    (version looked up by import name, not distribution name).

Full per-bug detail in CHANGELOG.md and the
docs/bugs/bug-0NN-*.md reports.


Breaking changes

None.


Upgrade guide

Fresh install

pip install "agentforge-py[bedrock]==0.2.4"
# MCP consumers:
pip install "agentforge-py[mcp]==0.2.4"   # now actually pulls the mcp SDK

Existing scaffolded agent

cd my-agent
agentforge upgrade --to 0.2.4
uv sync

No config changes are required. Agents already using
modules.protocols.mcp start working without edits (the config was
previously a no-op). Dotted MCP/tool names that happened to work on
Anthropic-direct should be renamed to the [a-zA-Z0-9_-] charset —
the framework now flags them locally with a suggested rewrite.


Coordinated release train

Per ADR-0015, every release bumps every in-scope workspace package
to the same version. v0.2.4 ships the same 34 packages as v0.2.3 at
0.2.4 with cross-package pins refreshed. The MCP / chat / core /
provider packages carry the substantive changes above; the rest are
version-bump-only.


Cross-language status

  • Python: released as v0.2.4 on PyPI.
  • TypeScript: not yet started (Python-first per ADR-0002;
    TypeScript targets parity by 0.4).

Acknowledgements

Thanks to kjoshi — designer, implementer, reviewer, and the
downstream integrator whose live Bedrock + MCP agent surfaced this
entire cluster. Generated with Claude
Code
(Anthropic) as the primary AI
co-author per the Co-Authored-By: commit trailers.


Full changelog


What's next

v0.3 backlog unchanged — see docs/roadmap.md.
Deferred from this train: SSE MCP server transport (enh-001
phase 2, pending the upstream SDK's SSE server adapter) and
server-side expose runtime-wiring (auto-serving the agent's own
tools as an MCP server from inside the agent runtime).

AgentForge v0.2.3 — Upgrade-flow fix (bug-007)

21 May 13:42

Choose a tag to compare

AgentForge v0.2.3 — Upgrade-flow fix

v0.2.2 fixed the scaffold path so fresh agentforge new agents
work end-to-end. But existing v0.2.x agents had no way to pull
those fixes — agentforge upgrade was non-functional. v0.2.3
fixes the upgrade path itself.

No new features. No breaking changes. Same 34 workspace
packages, same shipped surface as v0.2.2.


Highlights

  • agentforge upgrade actually works now. Existing agents
    scaffolded under v0.2.1 / v0.2.2 can pull the latest template
    fixes into their managed files via a single command:

    cd my-agent
    agentforge upgrade --to 0.2.3

    Managed files refresh; forked files are preserved; any new
    managed files the upgraded template introduced get added.

  • agentforge new now persists .agentforge-state/answers.yml.
    Previously empty / missing on every fresh scaffold — which is
    why upgrade was unreachable in the first place.

  • End-to-end validated against agents/code-reviewer/. An
    agent scaffolded under buggy v0.2.1 templates was upgraded to
    v0.2.3 cleanly. All six v0.2.2 scaffold fixes propagated:
    agentforge-anthropic[anthropic] + python-dotenv in
    pyproject.toml, strategy: "react" in agentforge.yaml,
    load_dotenv() in main.py, the [project.scripts] entry,
    and the updated README invocation.


What's new

Fixed — bug-007 (both halves)

  • Part A — agentforge new doesn't persist scaffold answers.
    Copier's _answers_file directive is supposed to write
    .agentforge-state/answers.yml after rendering, but doesn't
    reliably for in-package templates. agentforge new now writes
    the file itself with _template_name + the four resolved
    template variables (project_name, project_slug,
    llm_provider, description).
  • Part B — agentforge upgrade failed with "Template not
    found".
    The previous implementation called Copier's
    run_update, which expects the template source to be a
    VCS-versioned git repo. AgentForge's templates live inside the
    framework package (v0.2 compromise; the spec-aligned
    agentforge-templates separate repo is a v0.4 target). v0.2.3
    replaces run_update with a custom in-package upgrade that
    renders to a temp directory via run_copy and copies each
    non-forked managed file in place. Forked entries (set via
    agentforge fork) are preserved; new template files are
    added; the shared scaffold (_shared/ — runbooks +
    AGENTS.md / CLAUDE.md / .cursorrules / Copilot
    instructions) is re-injected so it tracks the new framework
    version.

Changed

  • 34 workspace packages bumped to 0.2.3. Cross-package
    pins refreshed from ~= 0.2.2 to ~= 0.2.3.

Added

  • docs/bugs/bug-007-upgrade-non-functional.md — full
    reproduction + root cause analysis + fix description.
  • Three regression tests in
    packages/agentforge/tests/unit/test_scaffold_state.py:
    • test_new_writes_answers_yml
    • test_upgrade_refreshes_managed_files
    • test_upgrade_preserves_forked_files

Breaking changes

None.


Upgrade guide

From v0.2.2 — fresh install

pip install "agentforge-py[anthropic]==0.2.3"

From v0.2.2 — existing scaffolded agent

cd my-agent
agentforge upgrade --to 0.2.3
uv sync

For agents scaffolded under v0.2.1 or earlier that pre-date
the bug-007 fix: .agentforge-state/answers.yml is missing.
Hand-write it before upgrade:

# .agentforge-state/answers.yml
_template_name: minimal   # or whichever template the agent was scaffolded from
_template_version: 0.2.1
project_name: My Agent
project_slug: my-agent
llm_provider: anthropic   # or bedrock / openai
description: An AgentForge agent.

Then agentforge upgrade --to 0.2.3 works as documented.


Coordinated release train

Per ADR-0015, every release bumps every in-scope workspace
package to the same version. v0.2.3 ships the same 34 packages
as v0.2.2 at 0.2.3 with cross-package pins refreshed.


Acknowledgements

Thanks to kjoshi — designer, implementer, reviewer.
Generated with Claude Code
(Anthropic) as the primary AI co-author per the
Co-Authored-By: commit trailers.


Full changelog


What's next

v0.3 backlog unchanged — see
docs/roadmap.md. v0.4 candidate: the
spec-aligned agentforge-templates separate-repo migration that
restores Copier's three-way merge for managed files (today's
v0.2.3 upgrade overwrites managed files wholesale instead of
merging — relies on the agentforge fork flag to preserve
user-edited files).

v0.2.0 — Drivers

15 May 02:53

Choose a tag to compare

AgentForge v0.2.0 — Drivers

The second coordinated release. v0.2 is the "complete the v0.1
surface" tag
: every locked ABC from v0.1 (LLMClient,
EmbeddingClient, VectorStore, GraphStore, Reranker,
Migrator, chat history) now has at least one shipped driver in
tree, the production protocol runners for MCP and A2A are live,
vendor observability backends ship, and the deferred v0.2 follow-
ups have all landed. ADR-0015 coordinated release train: every
workspace member bumps to 0.2.0.


Highlights

  • 5 first-party LLM provider sister packages. Pick your
    provider with a single string-id swap — no caller code change.

    from agentforge import Agent
    
    async with Agent(model="anthropic:claude-sonnet-4-7") as agent:
        print((await agent.run("Hi")).output)
    # or "openai:gpt-4o", "litellm:groq/llama-3.3-70b",
    # "ollama:llama3.1", "bedrock:us.anthropic.claude-sonnet-4-5-…"

    agentforge-anthropic declares {tools, json_mode, caching, thinking, streaming}; agentforge-openai declares {tools, json_mode, streaming, vision} plus text-embedding-3-*
    Matryoshka embeddings; agentforge-voyage and agentforge- ollama ship embedding clients; agentforge-litellm routes a
    single agent to 100+ underlying providers.

  • GitHub Copilot joins the AI-assistant scaffold. Every
    agentforge new now ships .github/copilot-instructions.md
    alongside AGENTS.md / CLAUDE.md / .cursorrules — so
    Copilot users get the same framework-aware idioms as Claude
    Code / Cursor / Aider users.

  • GraphRAG retrieval. Retriever(graph_expansion=…) composes
    with vector / hybrid / reranker (feat-023). Combine a Neo4j
    knowledge graph with a vector store and the retriever expands
    query hits along graph edges before ranking.

  • Native hybrid (BM25 + vector) on every shipped vector
    store.
    Postgres tsvector / SQLite FTS5 / Neo4j fulltext /
    SurrealDB BM25 analyser — every driver passes
    run_hybrid_search_conformance (feat-022 + feat-025). RRF
    fusion, configurable from agentforge.yaml > retrieval:.

  • Reranker contract + 4 vendor sister packages.
    agentforge-reranker-sentence-transformers (local CrossEncoder),
    agentforge-reranker-cohere, agentforge-reranker-voyage,
    agentforge-reranker-mixedbread (feat-021). Wire from YAML
    under retrieval.reranker: and rerank top-N candidates.

  • Sentence-window streaming guardrails. safety_mode: "sentence-window" buffers per-token streams at sentence
    boundaries, runs OutputValidator.check_output on each
    sentence, and only emits validated chunks downstream.
    Tradeoff: small latency hit at sentence boundaries; gain:
    PII or unsafe content never reaches the client unredacted
    (feat-020 v0.3 polish).

  • Schema migrations framework. Forward up migrations across
    Postgres / SQLite / Neo4j / SurrealDB drivers + parameterised
    migrations for dimension-sensitive vector schemas (feat-024).
    agentforge db migrate walks the migrations directory.

  • Production protocol runners. MCP stdio + HTTP/SSE runner
    (feat-013 v0.2) and A2A HTTP + per-token streaming +
    discovery (feat-014 v0.2 + v0.3) — both swap in for the v0.1
    fake runners with no caller code change.

  • Vendor observability backends. agentforge-langfuse,
    agentforge-phoenix, agentforge-evidently, agentforge- statsd — pick the dashboard you already operate; the
    framework's on_step / on_finish hook fan-out plus v0.3
    polish (child spans, A2A trace propagation, content-based PII
    redaction) feeds it (feat-009 v0.2 + v0.3).

  • 34 workspace members, every one at 0.2.0. ADR-0015
    coordinated release train; every __version__ constant in
    tree matches.


What's new

Added

  • feat-003 v0.2 — first-party LLM provider sister packages.
    Five new Tier-3 modules following the Runner-Protocol +
    lazy-SDK-import pattern:
    • agentforge-anthropic — Anthropic native Messages API.
      Declares {tools, json_mode, caching, thinking, streaming}.
      Caching via cache_control: ephemeral breakpoints,
      extended thinking via thinking={"type": "enabled", "budget_tokens": ...}, per-token streaming via
      messages.stream().
    • agentforge-openai — OpenAI chat.completions +
      text-embedding-3-* embeddings. Declares
      {tools, json_mode, streaming} (+vision for gpt-4o*).
      Matryoshka dimension override on embeddings.
    • agentforge-voyage — Voyage AI embeddings
      (voyage-3-*, voyage-code-3, voyage-multimodal-3).
      Declares {matryoshka, multimodal} where applicable.
    • agentforge-litellm — wraps litellm.acompletion so a
      single agent routes to 100+ underlying providers.
      Conservatively declares only {tools}.
    • agentforge-ollama — local Ollama daemon via
      ollama.AsyncClient. Declares {tools, streaming}.
      OllamaEmbeddingClient requires explicit dimensions=
      since Ollama's API doesn't expose model→dim mapping.
  • feat-019 v0.2 — GitHub Copilot support. Every scaffolded
    agent now ships .github/copilot-instructions.md as a
    one-line pointer to the canonical AGENTS.md. Joins the
    existing CLAUDE.md and .cursorrules pointer files;
    inject_shared_scaffold picks the new file up automatically
    via _shared/.github/copilot-instructions.md. Unit test in
    test_new_cmd.py::test_scaffold_ships_ai_assistant_instructions
    guards against future drift.
  • feat-019 v0.2 polish — 5 new runbooks auto-discovered by
    agentforge docs: 17-add-reranker.md,
    18-add-hybrid-search.md, 19-add-graphrag.md,
    20-apply-schema-migrations.md,
    21-use-streaming-guardrails.md.
  • feat-021 — Reranker abstraction + 4 vendor sister packages.
    Reranker ABC + RerankResult + RetrievalConfig.reranker:
    config block + build_retriever_from_config wiring.
    Drivers: agentforge-reranker-sentence-transformers (local),
    agentforge-reranker-cohere, agentforge-reranker-voyage,
    agentforge-reranker-mixedbread.
  • feat-022 — BM25 + vector hybrid search.
    VectorStore.lexical_search ABC + BM25 reference impl +
    Retriever(mode="hybrid") with RRF fusion + agentforge.yaml
    retrieval.mode: hybrid + retrieval.rrf_k: knob.
  • feat-022 v0.2 follow-up — native lexical paths. Postgres
    uses to_tsvector + ts_rank_cd + GIN index. SQLite uses
    FTS5 + BM25 ranking. Both drivers pass
    run_hybrid_search_conformance against the in-memory
    baseline.
  • feat-023 — GraphRAG hybrid retrieval. GraphExpansion
    value + Retriever(graph_expansion=…) kwarg +
    RetrievalConfig.graph_expansion: config block. Composes
    cleanly with mode="hybrid" and reranker=….
  • feat-024 — Schema migrations framework. Migrator ABC +
    agentforge db migrate CLI command + per-driver
    implementations (Postgres / SQLite / Neo4j / SurrealDB). Down
    migrations deferred to v0.3.
  • feat-024 v0.3 polish — parameterised migrations.
    Migration files accept template parameters (vector
    dimensions, table names) so the same migration drives
    embeddings of different sizes without divergence.
  • feat-025 — Neo4jVectorStore + SurrealDB native lexical.
    Neo4jVectorStore ships vector search over Neo4j native
    vector indexes; SurrealDB's lexical_search switches from
    the in-memory BM25 fallback to the native BM25 analyser.
  • feat-013 v0.2 — production MCP runner. Live MCPStdioRunner
    • MCPHTTPRunner over the upstream MCP SDK. Replaces the v0.1
      FakeMCPRunner for production use; tests still inject the
      fake.
  • feat-014 v0.2 + v0.3 — production A2A runner + discovery +
    streaming.
    A2AHTTPRunner over httpx + agent registry
    • per-token streaming + run_id / budget header propagation.
  • feat-009 v0.2 — vendor observability sister packages.
    • agentforge-langfuseLangfuseHook over Langfuse SDK.
    • agentforge-phoenix — Arize Phoenix OTel collector wiring.
    • agentforge-evidently — drift / quality reports via
      Evidently (local JSON; Cloud dashboards deferred to v0.3).
    • agentforge-statsd — counter / timer fan-out for StatsD /
      DogStatsD daemons.
  • feat-009 v0.3 — OTel polish. Child spans for strategy
    iterations (ReAct / Plan-Execute / ToT / MultiAgent), A2A
    trace-context propagation, and content-based PII redaction
    in span attributes.
  • feat-020 v0.2 follow-up — chat history backends + Slack.
    agentforge-chat-history-postgres (asyncpg), agentforge- chat-history-redis (hiredis + cross-process session lock),
    agentforge-chat-slack adapter (SlackChatAdapter).
    Provider-aware tokeniser landed for token-budget truncation.
  • feat-020 v0.3 polish — sentence-window streaming
    guardrails.
    ChatSessionConfig.safety_mode Literal expanded
    with "sentence-window"; _stream_per_token dispatches on
    the mode and runs OutputValidator.check_output on each
    completed sentence before emitting downstream.
    "stream-then-redact" accepted by the schema as an alias
    for now; true regex-inline stream-then-redact deferred to
    v0.3+.
  • feat-002 + feat-009 v0.3 polish — strategy streams +
    iteration spans.
    PlanExecute.stream() / ToT.stream() /
    MultiAgent.stream() overrides land per-phase / per-depth
    / per-agent events. Matching strategy.iteration OTel spans.

Changed

  • All workspace members bumped to 0.2.0 per ADR-0015.
    Every __version__ constant in tree updated to match.
  • agentforge.providers resolver category picks up five
    new registrations at import time: anthropic, openai,
    ollama, litellm (plus existing bedrock).
    agentforge.embeddings picks up openai, voyage,
    ollama (plus existing bedrock).
  • CI workflow split per-OS. .github/workflows/ci.yml
    became ci-linux.yml (per-PR gate), ci-windows.yml +
    ci-mac.yml (workflow_dispatch only). Cuts ~⅔ of per-PR
    CI minutes; trigger Windows / macOS runs manually before
    cutting a release.
  • **`ChatSession...
Read more

AgentForge v0.1.0 — Foundation

12 May 10:20

Choose a tag to compare

AgentForge v0.1.0 — Foundation

The first tagged release of AgentForge. v0.1.0 ships the entire
locked-contract surface, every reasoning loop, persistence,
findings, evaluators, observability, guardrails, protocols
(MCP + A2A), pipelines, chat, scaffolding, testing, and the
operational CLI — across 18 coordinated workspace packages.


Highlights

  • Three-line agent from a fresh scaffold. agentforge new smoke --template minimal && cd smoke && agentforge run "Hi"
    produces output against a real LLM. Six starter templates
    (minimal, code-reviewer, patch-bot, docs-qa, triage,
    research) ship in-wheel.
  • Locked contracts. Agent, Tool, MemoryStore,
    VectorStore, GraphStore, LLMClient, EmbeddingClient,
    Evaluator, Finding, FindingRenderer, ReasoningStrategy,
    Task, ChatHistoryStore, HistoryTruncationStrategy,
    AuthPolicy, InputValidator / OutputValidator /
    ToolCallGate — every framework ABC is frozen behind ADR-0007.
    Modules implement them; the runtime never reaches around.
  • Four reasoning loops, all stable from v0.1. ReActLoop
    (default), PlanExecuteLoop, TreeOfThoughts,
    MultiAgentSupervisor — pick by name in agentforge.yaml.
  • Full persistence stack. SQLite + Postgres + Neo4j +
    SurrealDB drivers behind MemoryStore + VectorStore +
    GraphStore, plus an InMemoryStore default and RAG
    primitives.
  • Operational CLI. agentforge run / eval / debug /
    db {migrate,backup,restore,purge,query} / health /
    config {validate,show,schema} / list modules / add /
    remove / swap module / new / upgrade / fork /
    unfork / status / docs. Exit codes locked
    (0/1/2/3/4/5).
from agentforge import Agent

async with Agent(model="bedrock:us.anthropic.claude-sonnet-4-5-20250929") as agent:
    result = await agent.run("Say hello in three words.")
    print(result.output)

What's new

Added

  • Agent orchestrator (agentforge-core + agentforge)
    with locked constructor surface (feat-001). async with
    lifecycle; record_runs=, input_validators=,
    output_validators=, tool_gates=, guardrail_policy=,
    pipeline= kwargs.
  • Reasoning strategies (feat-002): ReActLoop,
    PlanExecuteLoop, TreeOfThoughts, MultiAgentSupervisor
    all in agentforge.strategies.
  • LLM + embedding providers (feat-003): LLMClient +
    EmbeddingClient ABCs + agentforge-bedrock shipped.
  • Tools system (feat-004): @tool decorator + four
    default tools + FakeTool.
  • Persistence (feat-005): MemoryStore ABC + sqlite,
    postgres, neo4j, surrealdb drivers + VectorStore +
    GraphStore + RAG primitives.
  • Evaluators (feat-006): Coverage /
    FormatCompliance / RegressionVsBaseline / Consistency
    deterministic graders + agentforge-eval-geval with
    Correctness / Faithfulness / Groundedness /
    Hallucination / Relevance / Helpfulness LLM judges.
  • Production rails (feat-007): BudgetPolicy,
    RunContext + run_id / parent_run_id,
    idempotency_key_for, RunIdFilter, FallbackChain.
  • Findings + renderers (feat-008): SimpleFinding,
    PatchFinding, NarrativeFinding, MultiSpanFinding +
    RendererRegistry + scorecard / patch-applier / markdown /
    span-table renderers.
  • Observability (feat-009): on_step / on_finish hooks
    • error isolation + JSON log format + agentforge-otel
      with OpenTelemetryHook + framework root span.
  • Module discovery + full module CLI (feat-010):
    entry-point auto-load, Resolver.list_installed,
    agentforge list / add / remove / swap module.
  • Scaffolding (feat-011): agentforge new with six
    starter templates rendered via Copier; upgrade with
    three-way merge; fork / unfork / status.
  • Configuration system (feat-012): agentforge.yaml
    schema, env var interpolation, layered env files,
    dotted-path overrides, AGENTFORGE_CONFIG /
    AGENTFORGE_LOG_LEVEL, module-side schema integration,
    agentforge config CLI.
  • MCP integration (feat-013): agentforge-mcp package —
    MCPServerClient (stdio + HTTP/SSE), MCPServer exposer,
    MCPBridge.from_config.
  • A2A protocol (feat-014): agentforge-a2a package —
    agent_call(target, payload) client + A2AServer +
    A2ABridge.from_config; bearer + mTLS auth; canonical
    AuthPolicy in agentforge-core.
  • Pipeline + Task ABC (feat-015): agentforge.pipeline.Pipeline
    engine with DAG validation, asyncio.Semaphore
    parallelism, per-task timeouts, continue/fail modes;
    PipelineFindingsTool; Agent(pipeline=) wiring.
  • Testing framework (feat-016): agentforge.testing
    namespace (MockLLMClient, FakeTool, agent_factory,
    pytest fixtures, record_llm); agentforge-testing package
    (GoldenSetRunner, assert_snapshot, analyze_recording).
  • CLI runtime (feat-017): agentforge run (+ --replay
    / --record), eval (JSONL + JUnit), debug (REPL),
    db {migrate,backup,restore,purge,query}, health.
    MemoryStore.delete on the ABC; __step / __eval /
    __run / __pipeline reserved categories.
  • Safety guardrails (feat-018): InputValidator /
    OutputValidator / ToolCallGate ABCs + GuardrailEngine
    • four built-in basics + four vendor sister packages (LLM
      Guard, Presidio, NeMo Guardrails, Llama Guard).
  • Developer experience (feat-019): three-section
    managed/custom file format; inject_shared_scaffold post-
    render hook copies _shared/ into every new scaffold; 16
    runbooks + AGENTS.md + CLAUDE.md + .cursorrules
    shipped day-one; agentforge docs CLI.
  • Chat agents (feat-020 v0.1 scope): agentforge-chat
    package — ChatSession + InMemoryChatHistory +
    SqliteChatHistory + four truncation strategies
    (sliding-window / token-budget / summarise-oldest /
    hybrid); agentforge-chat-http package — FastAPI REST +
    WebSocket + SSE + bearer auth + cross-owner 403 + rate
    limiting.

Changed

  • Coordinated release train per ADR-0015. Every workspace
    package bumps to 0.1.0 in lockstep.
  • Release-notes scaffolding (PR #29) — every future tag
    uses .claude/templates/release-notes.md walked through
    .claude/checklists/pre-release.md.
  • Status field reconciliation (PR #28) — every shipped
    canonical spec carries an honest Status line.

Deprecated

  • agentforge_chat_http.BearerAuthPolicy — kept as an
    alias for the canonical
    agentforge_core.contracts.auth.AuthPolicy. New code should
    import the canonical name directly. Alias removal slated for
    v0.3.

Removed

  • Nothing.

Fixed

  • Nothing release-blocking; ongoing fix-while-feature work is
    captured per-PR.

Security

  • Bandit clean across every package; bandit -c pyproject.toml runs on every PR.
  • EnvBearerAuth(token_env_var) is a v0.1 placeholder
    shipped in agentforge and agentforge-chat-http.
    Production deployments are expected to implement
    AuthPolicy against a real identity provider.

Breaking changes

None. v0.1.0 is the first tag; there is no prior public
surface to break.


Migration guide

Not applicable for the first release.


Coordinated release train

Per ADR-0015, every framework release bumps every in-scope
workspace package to the same minor version simultaneously.
The release train cut on 2026-05-12 bumps every in-scope
package to 0.1.0:

Package Version Surface change
agentforge-core 0.1.0 Locked contract surface — every ABC, value type, production-rails primitive, config schema, resolver, testing harness.
agentforge 0.1.0 Runtime: Agent, four reasoning loops, in-memory store, tools system, configuration loader, recording / replay, pipeline runtime, CLI, scaffolding + six templates + 16 runbooks.
agentforge-bedrock 0.1.0 First-party LLMClient against AWS Bedrock.
agentforge-memory-sqlite 0.1.0 MemoryStore + VectorStore over SQLite via aiosqlite.
agentforge-memory-postgres 0.1.0 MemoryStore + VectorStore over Postgres via asyncpg.
agentforge-memory-neo4j 0.1.0 GraphStore + MemoryStore over Neo4j.
agentforge-memory-surrealdb 0.1.0 GraphStore + MemoryStore over SurrealDB.
agentforge-eval-geval 0.1.0 LLM-judge engine + 6 named graders.
agentforge-otel 0.1.0 OpenTelemetryHook + framework root span.
agentforge-testing 0.1.0 GoldenSetRunner, assert_snapshot, analyze_recording.
agentforge-guard-llmguard 0.1.0 LLM Guard vendor wrapper.
agentforge-guard-presidio 0.1.0 Presidio vendor wrapper.
agentforge-guard-nemo 0.1.0 NeMo Guardrails vendor wrapper.
agentforge-guard-llamaguard 0.1.0 Llama Guard vendor wrapper.
agentforge-mcp 0.1.0 MCP client + server + bridge. Production runner pending live integration test (slated for v0.2).
agentforge-chat 0.1.0 ChatSession + in-memory + SQLite history + four truncation strategies.
agentforge-chat-http 0.1.0 FastAPI server (REST + WS + SSE + bearer auth).
agentforge-a2a 0.1.0 A2A client + server + bridge + bearer / mTLS auth. Production runner pending live integration test (slated for v0.2).

Cross-language status

Per ADR-0002, Python ships first during 0.x; TypeScript catches
up to parity by v0.4.

  • Python: released as 0.1.0 on PyPI.
  • TypeScript: not yet started. The typescript/agentforge-ts/
    workspace is empty. TS parity to Python's v0.2 surface is
    slated for v0.4.

Install / upgrade

# Hello-world install
pip install "agentforge[bedrock]==0.1.0"

# Or, from a fresh scaffold
pip install agentforge==0.1.0
agentforge new my-agent --template minimal
cd my-agent
agentforge run "Hi"

Shipped features

Spec What landed in v0.1.0
[feat-001](../features/fe...
Read more