zymi-core
zymi-core is an auditable MCP backend for agents that turns declarative YAML pipelines into event-sourced, replayable, approval-gated tools. It solves the problem of ungoverned tool calls by providing a boundary-safe layer with human approvals and full audit trails. It is for developers building agent systems who need a governed, observable tool layer.
✨ Key features
- Declarative YAML pipelines with DAG steps, conditional branches, and ask steps.
- Event-sourced with hash-chained events; runs are replayable, resumable, and auditable.
- Approval-gated steps with interactive approve/deny forms in MCP hosts.
- Expose pipelines as MCP tools to any agent host via zymi mcp serve.
- Self-debuggable: agents can introspect runs and step I/O via observability tools.
- Four tool kinds: declarative HTTP/shell, Python @tool, MCP servers, builtins.
🎯 Use cases
- Run a Telegram agent with declarative wiring and approval-gated broadcasts.
- Expose internal pipelines as governed tools to Claude Code or Cursor.
- Build multi-step agent workflows with deterministic steps and human-in-the-loop approvals.
- Audit and replay past agent runs for compliance or debugging.
- Create a self-debugging agent that can explain its own failures.
📦 Installation
🧰 Requirements: Requires Python with uv installed; Unix-only for zymi mcp serve; API keys for Telegram/OpenAI in the demo.
uv tool install zymi-core # one-time; puts `zymi` on PATH globally
Don't have uv yet? curl -LsSf https://astral.sh/uv/install.sh | sh (macOS/Linux) or irm https://astral.sh/uv/install.ps1 | iex (Windows).
🚀 Usage
mkdir telegram-agent && cd telegram-agent
zymi init --example telegram
cp .env.example .env # edit TELEGRAM_BOT_TOKEN + OPENAI_API_KEYzymi fetch # uv sync — builds ./.venv from pyproject.toml
zymi serve chat # .env is auto-loaded; pipeline runs in ./.venv⚠️ Good to know
Async MCP tasks don't pause for approvals, cancellation is best-effort, arguments cross as strings, and zymi mcp serve is Unix-only for now.
❓ FAQ
How do I expose a pipeline as an MCP tool?
Add an expose: block with mcp: to the pipeline YAML, then run zymi mcp serve. The pipeline becomes a tool callable by any MCP host.
What are the approval channels?
Four channels: terminal, http, telegram, and mcp_elicitation (default under zymi mcp serve). They route human decisions back to the pipeline.
Can an agent debug its own runs?
Yes, with zymi mcp serve --expose-observability it gets read-only tools to list runs, get event traces, and read step I/O.
What is an ask step?
An ask step delegates a reasoning question to the pipeline caller instead of using a separate model. The run parks, asks, and resumes with the answer.
📊 Repository
🤖 Overview, features, install steps and FAQ were generated from the project's README on Sep 4, 2026. Always check the original source before running commands.