Bridle

When to use Bridle

What Bridle is for, what it replaces, and where to reach for something else.

Bridle is a harness, not a framework. Reach for it when you want an agent that runs like a program — deterministic control flow, typed values at every boundary, full visibility into every model turn.

Use Bridle when

  • You need typed outputs at every step. Each step validates against a Pydantic schema. Bad outputs get corrective feedback and a retry; persistent failures raise SchemaSatisfactionError, they do not corrupt downstream code.
  • The control flow is yours, not the model's. Branching, looping, retry policy, fallback chains, escalation — all expressed in Python. The model fills typed holes; the program decides what runs next.
  • You want to debug what happened. A trace records every call, model turn, tool call, retry, cache hit. Replay it, stream it, assert on it in tests.
  • You want caching, retries, timeouts, and mocks as composable wrappers. Wrap any call without rewriting it. Test by swapping the dispatch with mock.
  • Your agent is a Python function and you want to keep it that way. No DAG builder, no graph DSL, no string-templated prompt chains. Just functions calling primitives.

Reach for something else when

  • You need a multi-agent orchestration framework today. v0.1.0 is single-agent. Multi-agent coordination is on the v0.2.0 roadmap. Until then, compose agents by calling them as functions.
  • You need streaming. v0.1.0 is sync and non-streaming. Token-level streaming and async lands in v0.2.0.
  • You need a provider other than Anthropic. v0.1.0 ships an Anthropic adapter and a mock client. Other providers land with the model abstraction in v0.2.0.
  • You want the model to choose tools and replan freely without a typed contract. That is what raw tool-calling APIs do. Use the SDK directly. Bridle is for programs where the shape of each step is known upfront.

How Bridle compares

If you have used another agent framework, here is the rough mapping.

You're used toBridle equivalent
Building a graph of nodes and edgesWriting a Python function whose body calls step, branch, loop
String prompts that produce stringsPrompts that produce values typed by Pydantic schemas
A "router" or "supervisor" agentAn if/elif over branch results
Tool-calling loops you wrote yourselfA step with tools=[...] — the loop is built in
Bolted-on retry logicThe retry wrapper around any call
Logging by handThe trace, plus the log wrapper

Bridle does not replace your model SDK. It wraps it. You still bring an Anthropic key.

Next

On this page