Current collected state Current
Observed since 21 Oct, 09:44 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Production-grade AI agent framework — the Next.js for AI agents
Production-grade AI agent framework — the Next.js for AI agents. Python SDK.
AgentForge owns the agent loop — LLM calls, tool execution, state checkpointing, crash recovery, cost governance, rollback, and full run tracing. You write tools and prompts. Everything else is handled.
Also available as a TypeScript package:
@ahzan-agentforge/core
pip install ahzan-agentforge
With LLM providers:
pip install ahzan-agentforge[anthropic] # Anthropic Claude
pip install ahzan-agentforge[openai] # OpenAI GPT
pip install ahzan-agentforge[all] # All providers + Redis
import asyncio
from agentforge import define_agent, define_tool, create_llm
from pydantic import BaseModel
class OrderInput(BaseModel):
order_id: str
class OrderOutput(BaseModel):
id: str
status: str
total: float
get_order = define_tool(
name="get_order",
description="Fetch order details by ID",
input_schema=OrderInput,
output_schema=OrderOutput,
execute=lambda inp: OrderOutput(id=inp.order_id, status="shipped", total=49.99),
)
agent = define_agent(
name="support-agent",
tools=[get_order],
llm=create_llm(provider="openai", model="gpt-4o"),
max_steps=15,
system_prompt="You are a customer support agent. Look up orders and help customers.",
)
async def main():
result = await agent.run(task="Order #4521 arrived damaged")
print(result.status) # 'completed'
print(result.output)
asyncio.run(main())
agent.stream()from agentforge import create_llm
llm = create_llm(provider="anthropic", model="claude-sonnet-4-20250514")
llm = create_llm(provider="openai", model="gpt-4o")
llm = create_llm(provider="ollama", model="llama3.1") # local, zero cost
async for event in agent.stream(task="Help customer"):
if event.type == "llm_token":
print(event.content, end="", flush=True)
elif event.type == "tool_start":
print(f"\nCalling {event.tool_name}...")
elif event.type == "done":
print(f"\nResult: {event.result.output}")
from agentforge import pipeline, parallel, supervisor, debate
result = await pipeline([researcher, writer, editor], task="Write a report")
result = await supervisor(manager, {"researcher": researcher, "writer": writer}, task="Complete project")
result = await parallel([agent1, agent2], task="Analyze data", merge_fn=merge_results)
result = await debate([optimist, pessimist], task="Evaluate proposal", judge=judge)
from agentforge import create_mock_llm, create_test_harness
harness = create_test_harness(
agent=my_agent_config,
llm=create_mock_llm(responses=[
{"tool_calls": [{"name": "get_order", "input": {"order_id": "4521"}}]},
{"text": "Order found and ticket created."},
]),
)
result = await harness.run(task="Handle order issue")
assert result.status == "completed"
assert len(result.tool_calls("get_order")) == 1
| TypeScript | Python |
|---|---|
defineAgent() | define_agent() |
defineTool() | define_tool() |
createLLM() | create_llm() |
createMockLLM() | create_mock_llm() |
createTestHarness() | create_test_harness() |
agent.run() | agent.run() |
agent.stream() | agent.stream() |
| Zod schemas | Pydantic models |
camelCase | snake_case |
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.1 | 13 Mar 2026 | 9 |
This describes our collected data; it is not a security assessment.
Observed since 21 Oct, 09:44 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:f1f0909a2ead2ac4d9bbd5e8aeb41f348bb63a7894438d07a15de281fde1a52c