Releases: Scaffoldic/agentforge-py
AgentForge v0.2.4 — Live-fire MCP
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.protocolsis actually wired now. Declaring an
MCP server inagentforge.yamlpreviously 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 nativeagent.toolsfrom 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 /sessionsno 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 wiring —
ProtocolBridgecontract +
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_httpserve()over streamable-HTTP (StreamableHTTPSessionManager
under uvicorn).starlette/uvicornarrive 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_httpregister tools at
construction;register_tools()is idempotent (bug-013). - The MCP client HTTP transport moved off the SDK's deprecated
streamablehttp_clienttostreamable_http_client. agentforge-chathard-depsaiosqlite(it was an optional
extra despite an unconditional import).
Fixed
- bug-020 / bug-014 —
modules.protocols.mcpnever instantiated;
MCPBridge.from_configraised inside a running event loop. - bug-012 / bug-017 — MCP tool names used an illegal
.
separator; provider tool-name charset undocumented + unchecked. - bug-015 —
agentforge-pyextras 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 raisedValidationError. - bug-018 —
POST /sessions500'd on a fresh SQL/Redis chat
store. - bug-013 —
MCPServerfactories served an emptyListTools. - 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 SDKExisting scaffolded agent
cd my-agent
agentforge upgrade --to 0.2.4
uv syncNo 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.4on 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
CHANGELOG.md— curated notes.git log v0.2.3..v0.2.4 --oneline— every commit.- Compare view:
Scaffoldic/agentforge-py/compare/v0.2.3...v0.2.4. - PyPI:
pypi.org/project/agentforge-py/0.2.4.
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)
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 upgradeactually 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.3Managed files refresh; forked files are preserved; any new
managed files the upgraded template introduced get added. -
agentforge newnow 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-dotenvin
pyproject.toml,strategy: "react"inagentforge.yaml,
load_dotenv()inmain.py, the[project.scripts]entry,
and the updated README invocation.
What's new
Fixed — bug-007 (both halves)
- Part A —
agentforge newdoesn't persist scaffold answers.
Copier's_answers_filedirective is supposed to write
.agentforge-state/answers.ymlafter rendering, but doesn't
reliably for in-package templates.agentforge newnow writes
the file itself with_template_name+ the four resolved
template variables (project_name,project_slug,
llm_provider,description). - Part B —
agentforge upgradefailed 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-templatesseparate repo is a v0.4 target). v0.2.3
replacesrun_updatewith a custom in-package upgrade that
renders to a temp directory viarun_copyand 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.2to~= 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_ymltest_upgrade_refreshes_managed_filestest_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 syncFor 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
CHANGELOG.md— curated notes.git log v0.2.2..v0.2.3 --oneline— every commit.- Compare view:
Scaffoldic/agentforge-py/compare/v0.2.2...v0.2.3. - PyPI:
pypi.org/project/agentforge-py/0.2.3.
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
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-anthropicdeclares{tools, json_mode, caching, thinking, streaming};agentforge-openaideclares{tools, json_mode, streaming, vision}plustext-embedding-3-*
Matryoshka embeddings;agentforge-voyageandagentforge- ollamaship embedding clients;agentforge-litellmroutes a
single agent to 100+ underlying providers. -
GitHub Copilot joins the AI-assistant scaffold. Every
agentforge newnow ships.github/copilot-instructions.md
alongsideAGENTS.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. Postgrestsvector/ SQLite FTS5 / Neo4j fulltext /
SurrealDB BM25 analyser — every driver passes
run_hybrid_search_conformance(feat-022 + feat-025). RRF
fusion, configurable fromagentforge.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
underretrieval.reranker:and rerank top-N candidates. -
Sentence-window streaming guardrails.
safety_mode: "sentence-window"buffers per-token streams at sentence
boundaries, runsOutputValidator.check_outputon 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
upmigrations across
Postgres / SQLite / Neo4j / SurrealDB drivers + parameterised
migrations for dimension-sensitive vector schemas (feat-024).
agentforge db migratewalks 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'son_step/on_finishhook 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 viacache_control: ephemeralbreakpoints,
extended thinking viathinking={"type": "enabled", "budget_tokens": ...}, per-token streaming via
messages.stream().agentforge-openai— OpenAI chat.completions +
text-embedding-3-*embeddings. Declares
{tools, json_mode, streaming}(+visionforgpt-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— wrapslitellm.acompletionso a
single agent routes to 100+ underlying providers.
Conservatively declares only{tools}.agentforge-ollama— local Ollama daemon via
ollama.AsyncClient. Declares{tools, streaming}.
OllamaEmbeddingClientrequires explicitdimensions=
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.mdas a
one-line pointer to the canonicalAGENTS.md. Joins the
existingCLAUDE.mdand.cursorrulespointer files;
inject_shared_scaffoldpicks 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.
RerankerABC +RerankResult+RetrievalConfig.reranker:
config block +build_retriever_from_configwiring.
Drivers:agentforge-reranker-sentence-transformers(local),
agentforge-reranker-cohere,agentforge-reranker-voyage,
agentforge-reranker-mixedbread. - feat-022 — BM25 + vector hybrid search.
VectorStore.lexical_searchABC + 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
usesto_tsvector+ts_rank_cd+ GIN index. SQLite uses
FTS5 + BM25 ranking. Both drivers pass
run_hybrid_search_conformanceagainst the in-memory
baseline. - feat-023 — GraphRAG hybrid retrieval.
GraphExpansion
value +Retriever(graph_expansion=…)kwarg +
RetrievalConfig.graph_expansion:config block. Composes
cleanly withmode="hybrid"andreranker=…. - feat-024 — Schema migrations framework.
MigratorABC +
agentforge db migrateCLI 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.
Neo4jVectorStoreships vector search over Neo4j native
vector indexes; SurrealDB'slexical_searchswitches from
the in-memory BM25 fallback to the native BM25 analyser. - feat-013 v0.2 — production MCP runner. Live
MCPStdioRunnerMCPHTTPRunnerover the upstream MCP SDK. Replaces the v0.1
FakeMCPRunnerfor production use; tests still inject the
fake.
- feat-014 v0.2 + v0.3 — production A2A runner + discovery +
streaming.A2AHTTPRunneroverhttpx+ agent registry- per-token streaming + run_id / budget header propagation.
- feat-009 v0.2 — vendor observability sister packages.
agentforge-langfuse—LangfuseHookover 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-slackadapter (SlackChatAdapter).
Provider-aware tokeniser landed for token-budget truncation. - feat-020 v0.3 polish — sentence-window streaming
guardrails.ChatSessionConfig.safety_modeLiteral expanded
with"sentence-window";_stream_per_tokendispatches on
the mode and runsOutputValidator.check_outputon each
completed sentence before emitting downstream.
"stream-then-redact"accepted by the schema as an alias
for now; true regex-inlinestream-then-redactdeferred 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. Matchingstrategy.iterationOTel spans.
Changed
- All workspace members bumped to
0.2.0per ADR-0015.
Every__version__constant in tree updated to match. agentforge.providersresolver category picks up five
new registrations at import time:anthropic,openai,
ollama,litellm(plus existingbedrock).
agentforge.embeddingspicks upopenai,voyage,
ollama(plus existingbedrock).- CI workflow split per-OS.
.github/workflows/ci.yml
becameci-linux.yml(per-PR gate),ci-windows.yml+
ci-mac.yml(workflow_dispatchonly). Cuts ~⅔ of per-PR
CI minutes; trigger Windows / macOS runs manually before
cutting a release. - **`ChatSession...
AgentForge v0.1.0 — Foundation
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 inagentforge.yaml. - Full persistence stack. SQLite + Postgres + Neo4j +
SurrealDB drivers behindMemoryStore+VectorStore+
GraphStore, plus anInMemoryStoredefault and RAG
primitives. - Operational CLI.
agentforge run/eval/debug/
db {migrate,backup,restore,purge,query}/health/
config {validate,show,schema}/list modules/add/
remove/swapmodule /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
Agentorchestrator (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 inagentforge.strategies. - LLM + embedding providers (feat-003):
LLMClient+
EmbeddingClientABCs +agentforge-bedrockshipped. - Tools system (feat-004):
@tooldecorator + four
default tools +FakeTool. - Persistence (feat-005):
MemoryStoreABC +sqlite,
postgres,neo4j,surrealdbdrivers +VectorStore+
GraphStore+ RAG primitives. - Evaluators (feat-006):
Coverage/
FormatCompliance/RegressionVsBaseline/Consistency
deterministic graders +agentforge-eval-gevalwith
Correctness/Faithfulness/Groundedness/
Hallucination/Relevance/HelpfulnessLLM 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_finishhooks- error isolation + JSON log format +
agentforge-otel
withOpenTelemetryHook+ framework root span.
- error isolation + JSON log format +
- Module discovery + full module CLI (feat-010):
entry-point auto-load,Resolver.list_installed,
agentforge list / add / remove / swap module. - Scaffolding (feat-011):
agentforge newwith six
starter templates rendered via Copier;upgradewith
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 configCLI. - MCP integration (feat-013):
agentforge-mcppackage —
MCPServerClient(stdio + HTTP/SSE),MCPServerexposer,
MCPBridge.from_config. - A2A protocol (feat-014):
agentforge-a2apackage —
agent_call(target, payload)client +A2AServer+
A2ABridge.from_config; bearer + mTLS auth; canonical
AuthPolicyinagentforge-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-testingpackage
(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.deleteon the ABC;__step/__eval/
__run/__pipelinereserved categories. - Safety guardrails (feat-018):
InputValidator/
OutputValidator/ToolCallGateABCs +GuardrailEngine- four built-in basics + four vendor sister packages (LLM
Guard, Presidio, NeMo Guardrails, Llama Guard).
- four built-in basics + four vendor sister packages (LLM
- Developer experience (feat-019): three-section
managed/custom file format;inject_shared_scaffoldpost-
render hook copies_shared/into every new scaffold; 16
runbooks +AGENTS.md+CLAUDE.md+.cursorrules
shipped day-one;agentforge docsCLI. - 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-httppackage — FastAPI REST +
WebSocket + SSE + bearer auth + cross-owner 403 + rate
limiting.
Changed
- Coordinated release train per ADR-0015. Every workspace
package bumps to0.1.0in lockstep. - Release-notes scaffolding (PR #29) — every future tag
uses.claude/templates/release-notes.mdwalked through
.claude/checklists/pre-release.md. Statusfield reconciliation (PR #28) — every shipped
canonical spec carries an honestStatusline.
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.tomlruns on every PR. EnvBearerAuth(token_env_var)is a v0.1 placeholder
shipped inagentforgeandagentforge-chat-http.
Production deployments are expected to implement
AuthPolicyagainst 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.0on 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... |