Vibeleaderboard
Index / tool
Visit github.com
Category
Developer Tools
Rank
No. 1573Tools index

Previous survey · No. 1509 ·

Pricing
Open Source
Type
TOOL
Use case
Agent Building
Interfaces
CLI · API · Web · SDK
GitHub
17 stars
Latest release
v0.2.0
Date

About

Charter is an open-source platform for running AI agents in production, defined via YAML and executed by workers in the user's own environment against a persistent control plane. It adds durable execution that survives crashes, human-approval gates on tool calls, spend/call budgets, lifecycle policies that pause or roll back misbehaving agents, and OpenTelemetry-based audit trails, while keeping model keys and data off the control plane.

What it does

Charter wraps LangChain's deepagents harness so an agent can stop mid-task, wait for a person, and pick up later on a different machine. You describe the agent, its tools and its limits in config files, and one command translates them into workflow definitions on BoundFlow, a separate orchestration server from the same authors. Your own Python processes then execute the agent, talk to MCP (Model Context Protocol) tool servers, and keep conversation checkpoints in a Postgres database you operate. The orchestration server sees tool names, counts and costs, never prompts or arguments.

Why it's ranked here

The engineering is careful where money and authority are at stake. Spend caps are enforced twice: once per call inside the worker and once as a running total carried across every pause, so a task stopped four times for approval cannot spend its budget five times. Token usage is read from the harness's own saved state rather than counted in memory, so subagent spend is not missed. Undeclared tools are refused, so a tool server shipping a new tool cannot quietly widen an agent's reach. Against that: it declares itself pre-alpha, is Apache 2.0 licensed, and does nothing without the BoundFlow server.

What's good

The design notes explain why each choice was made, including the traps: the underlying SDK names its tool failure metric a rate while summing a raw count, and Charter uses the accurate name. A rollback restores an older agent version while today's spending limits stay in force, because policy is deliberately left unversioned. One broken tool server quarantines only its own agent, not the whole process, with a retry after 60 seconds. Notifications are HMAC-SHA256 signed webhooks with Slack and Telegram body shapes, so there is no vendor integration to maintain. End-to-end tests run against a real control plane with only the model faked.

Tradeoffs

Everything depends on BoundFlow: without that server running, locally in Docker or through a hosted service still in early access, nothing executes. The package warns that the config format and command line can change between releases. Resumed work is at-least-once, so a tool call whose side effect landed just before a worker crash can run again. When one turn proposes several gated actions, only the first goes to a person and the rest wait for later rounds. A provider-billed call lost in a crash before its result is saved goes uncounted, which the authors bound to one call.

How to use it well

It fits a team already on LangChain that needs agents to touch real systems, such as issuing refunds or closing tickets, with a named person approving the risky calls and a hard dollar cap per task. Start with the local Docker setup and the bundled support-desk examples, then add one gated tool and a spending ceiling before anything else. Keep every version a lifecycle rule might roll back to in the worker's served list, and make gated tools idempotent. It is not an evaluation suite or a prompt-testing tool, and a team outside Python will fight the required dependencies.

Technical notes+

charter/compile.py maps YAML onto BoundFlow SDK types; WorkflowConfig sets resumable=True, commented as at-least-once. The per-run budget becomes BoundFlow's per-invocation cap, while charter/workflows/loop.py passes the remainder as a Budget after each gate. charter/policy.py carries Charter-only limits in RuntimePolicy.custom, reading both typed and dict shapes. charter/harness/metering.py swaps the checkpoint saver's class to read usage_metadata, deduplicating by message id. charter/harness/gates.py turns LangGraph interrupts into approvals; pending_action() returns only the first request. charter/worker.py quarantines per agent version, retrying after REQUARANTINE_SECONDS = 60. The charter/cli.py docstring still says only validate and apply exist.

Observed

License
Apache-2.0
Language
Python, requires 3.10 or later
Install surface
pip package boundflow-charter, with extras ui, otel, openai, google, bedrock, ollama, groq
Interfaces
charter CLI plus a browser console served by charter ui; config as YAML with JSON Schema export
Required dependencies
BoundFlow SDK and control plane, deepagents, LangGraph with Postgres checkpointing, MCP client
Model providers
Any provider LangChain's init_chat_model can build, including local Ollama; Anthropic installed by default
Notifications
Webhook, Slack and Telegram channels, optionally HMAC-SHA256 signed
Trace sinks
none, logging, jsonl, OpenTelemetry (otel)
Tests
pytest suite with a 180-second per-test timeout; end-to-end tests excluded by default and require a running control plane
Execution semantics
Resumable operations are at-least-once: a tool call can run again after a worker dies

Read from README.md, pyproject.toml, DESIGN.md, charter/cli.py, charter/worker.py, charter/compile.py, charter/policy.py, charter/harness/gates.py, charter/harness/metering.py, charter/workflows/loop.py, charter/config/worker.py.

What it can do

  • Define AI agents using YAML configuration

    YAML file → Agent definition

  • Execute agent workflows with durable execution that survives crashes

    Agent definition → Running agent process

  • Require human approval before executing tool calls

    Tool call request → Approval decision

  • Enforce spend and call budgets on agents

    Budget limits → Enforced usage caps

  • Apply lifecycle policies to pause or roll back misbehaving agents

    Agent behavior data → Pause or rollback action

  • Generate OpenTelemetry-based audit trails of agent activity

    Agent execution events → Audit trail/logs

Tags

ai-agentsagent-governancedurable-executionmcpself-hostedlangchainhuman-in-the-loopopentelemetry

Tech Stack

Python

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.