zymi-core

Frameworks & SDKs 💻 Rust ⚖️ MIT 🟡 Quiet lately
9 stars

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_KEY
Open project.yml, replace "your_username_here" with your actual Telegram username
zymi 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

Stars★ 9
Forks🍴 1
Open issues🐛 0
Last commit🕒 Jul 10, 2026
Created📅 Apr 2026
Language💻 Rust
License⚖️ MIT

🤖 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.