The Problem with Code
Every AI agent framework today asks you to write code. Python, TypeScript, whatever — you're defining behavior imperatively. That means:
- Not reviewable. You can't glance at a 200-line Python script and know what the agent does.
- Not shareable. Sharing an agent means sharing a dependency tree, a virtualenv, and hope.
- Not portable. Code is tied to a runtime. A LangChain agent doesn't run in the browser or on a phone.
- Not auditable. You can't diff two versions of an agent and see what changed in its behavior.
Why TOML
A TOML file is a declaration of intent. It says what the agent should do, not how. The framework handles the how.
# This is a complete agent [agent] provider = "anthropic" model = "claude-sonnet-4-5-20250929" tools = ["shell", "knowledge_ingest", "knowledge_query"] [agent.execution] max_steps = 30 [[middleware]] type = "limits" max_turns = 15
What You Get
- Reviewable: Open the file. Read it. You know exactly what the agent does.
- Shareable: Attach the TOML to a Slack message. That's it.
- Portable: The same config runs on CLI, dashboard, VS Code, iOS, Android.
- Auditable:
git diffshows exactly what changed in agent behavior. - Versionable: Configs live in git alongside your code. Rollback is trivial.
The Tradeoff
Config-driven means you can't express arbitrary logic. If you need a custom routing algorithm or a bespoke tool, you need to write Rust code and compile it into the framework. The config system handles 90% of use cases. The Rust API handles the rest.
That's by design. The config is the product. The code is the platform.