LazyBridge is the Python framework for composable LLM workflows.
Functions, agents, deterministic plans, humans and external systems all compose through one tool interface — with validation, checkpointing and tracing built in.
One abstraction, not five
Most agent frameworks split your system into chains, graphs, tools, agents, routers, and executors. LazyBridge collapses them into one recursive model: everything is a tool.
See how it composes →Fail at build time, not at 3am
Deterministic plans catch duplicate steps, broken references, type drift, and invalid sentinels before the first LLM call runs.
See validation →Nested systems stay traceable
Agents can call plans, plans can call agents, and sub-agents can become tools — while sessions, event logs, costs, and OpenTelemetry spans roll up automatically.
See Session →Under the hood
From a one-liner to governed multi-agent pipelines — one composition model throughout.
Same mental model: from a one-line agent to nested, checkpointed pipelines.
from lazybridge import Agent, LLMEngine, Plan, Step, Session, from_step
search = Agent(engine=LLMEngine("gpt-5.4-mini"), name="search")
summarise = Agent(engine=LLMEngine("gemini-2.5-pro"), name="summarise")
writer = Agent(engine=LLMEngine("claude-sonnet-4-6"), name="write")
research = Agent(
engine=Plan(Step("search"), Step("summarise")),
tools=[search, summarise], name="research",
)
article = Agent(
engine=Plan(Step("research"),
Step("write", context=from_step("research"))),
tools=[research, writer], session=Session(),
)
print(article("AI agents in 2026").text())
from lazybridge import Agent, AgentPool, LLMEngine, conclude
pool = AgentPool()
researcher = Agent(engine=LLMEngine("claude-sonnet-4-6", max_tool_calls_per_turn=1),
name="researcher", tools=[pool.as_tool(), conclude])
writer = Agent(engine=LLMEngine("claude-sonnet-4-6", max_tool_calls_per_turn=1),
name="writer", tools=[pool.as_tool(), conclude])
pool.register(researcher, writer) # register after construction
# one pool = one local action space; researcher and writer self-organise
# inside it. researcher may route("writer", ...); any agent may conclude(...)
print(researcher("Brief me on 2026 AI trends.").text())
The LazyBridge ecosystem
Not an agent framework — a composition runtime. Three focused packages, one mental model.
LazyBridge
The composition runtime. Build agents and pipelines where functions, plans, humans, and other agents all share one tool interface.
LazyPulse
Turn workflows into always-on governed services. Receive events from Telegram, Gmail, or webhooks, run policy, request review, and keep an audit trail.
LazyTools
Connector clients, reusable tool providers, and safety wrappers for bringing external systems into LazyBridge without bloating the core.
From workflow to governed service.
LazyPulse runs LazyBridge agents on inboxes, webhooks and schedules, applies policy before risky actions, escalates to human review and logs every decision.
What's new
Key releases and milestones across the LazyBridge ecosystem.
-
ReplanEngine — the adaptive replan loop, with checkpoint/resume
The dynamic counterpart to
Plan: instead of a fixed DAG, a planner agent (built withoutput=PlanRound) decides the work one round at a time.ReplanEnginedispatches the tasks it emits — agents, plain functions, or pool routes alike — runningparallel=Truesiblings concurrently, then feeds the results back for the next round. Workers can be plain functions, so it works on a simple agent too. Passstore=+checkpoint_key=and it checkpoints after every round, so a crash resumes from the right round instead of redoing completed work — same single-writer semantics asPlan. ReplanEngine guide → · Dynamic re-planning recipe → -
Code Support Agent — delegate to Claude Code & Codex
LazyTools adds a Code Support Agent connector that puts Claude Code and Codex behind a LazyBridge agent — each in two modes: CLI (the CLI is the agent: one call, one delegated task) or MCP (the CLI exposes its own tools for your agent to orchestrate).
build_cli_collaboration()makes the two collaborate — Claude Code analyses, Codex critiques, a synthesizer plans, an executor implements — as a single tool. See the guide → -
Pool chains — dynamic workflows from bounded local action spaces
AgentPoolisn't just a routing registry — it's a bounded local action space: the set of specialists an agent may reach directly via a singleroute(agent_name, task)tool. Give a chosen agent access to a second pool and it becomes a gateway that links one local world to the next, composing a pool chain. The builder defines the local worlds and transition points; the runtime path emerges from agent decisions. WherePlanis the static workflow runtime (topology known up front),AgentPoolis the dynamic one — andconclude(…)lets a terminal agent end the whole chain. Pair withLLMEngine(max_tool_calls_per_turn=1)for a single, traceable path. Dynamic graph → · Pool chains → -
First framework to support Claude Opus 4.8
LazyBridge ships
claude-opus-4-8support on day one — adaptive thinking, no-sampling mode, updated thinking-token extraction (SDK ≥ 0.105), and tier cascade (top → opus-4-8,expensive → opus-4-7). -
LazyPulse v0.2.0 — cron triggers & PulsePolicy
Schedule agents on cron expressions with timezone support.
PulsePolicygates every action on sender trust level before the worker runs, with concurrency-safe compare-and-swap scheduling. -
LazyBridge v0.9 — one framework becomes three
v0.9 marks the point where a single monolithic package was split into three focused libraries: LazyBridge (the composition runtime), LazyPulse (always-on governed services), and LazyTools (connector clients and safety wrappers). Each package ships and versions independently, so teams only install what they need.
Native adapters for the leading providers — plus any model via LiteLLM or LM Studio