Governed medium-code platform for production-grade multi-agent systems
Project description
Zeroth
A governed medium-code platform for building, running, and deploying production-grade multi-agent systems as standalone API services.
Zeroth treats an agentic application as an explicit executable graph rather than an opaque prompt chain. Every node boundary is typed, every executable unit runs inside a governed sandbox, memory is attachable and shareable, and audits are recorded per node. The result is a system you can reason about, govern, and deploy with confidence.
Why Zeroth?
Most agent frameworks prioritize getting something working quickly. Zeroth prioritizes getting something working correctly — with governance, auditability, and operational control built in from day one.
| What Zeroth is | What Zeroth is not |
|---|---|
| A medium-code platform for governed agentic backends | A generic no-code automation tool |
| A graph-based runtime for typed multi-agent systems | A chat UI builder |
| A controlled execution platform for code-backed workflows | A prompt playground |
| A deployment environment that ships workflows as API services | An ungoverned autonomous agent sandbox |
Key Concepts
Graphs
A graph is your application. It defines how agents, executable units, and approval steps connect and interact. Graphs can be cyclic, support branching conditions, and are executed asynchronously.
Three Node Types
Zeroth keeps its primitives minimal. Every graph is composed from just three node types:
- Agent — an AI-powered node backed by an LLM provider, with optional tool attachments and memory connectors
- Executable Unit — a sandboxed unit of work (Python code, shell scripts, commands, or full projects) that handles transformations, integrations, routing, and any deterministic processing
- Human Approval — a pause point where a human must review and approve before execution continues
Contracts
Node inputs and outputs are defined by contracts — Pydantic-based schemas that are validated at every node boundary. This means type errors are caught at the edge between nodes, not buried deep inside a run.
Memory
Agents can optionally attach memory connectors for persistent state. Multiple agents can share the same connector instance (and therefore share memory), or each agent can have its own. Memory types include key-value, thread-scoped, and run-ephemeral stores.
Threads and Runs
A run is a single execution of a graph. A thread groups related runs together for conversation continuity. Stateful agents resume their context across runs through a stable thread_id, so agents can maintain long-running conversations without treating every invocation as stateless.
Governance
Zeroth enforces governance at multiple layers:
- Policy — capability-based rules controlling what agents can do (network access, file writes, memory access, secret usage)
- Guardrails — rate limiting, quota enforcement, and dead-letter queues for failed operations
- Audit — per-node event tracking with secret redaction, timeline assembly, and evidence summaries
- Approvals — human-in-the-loop gates with decision tracking
- Secrets — resolved from secure providers and automatically redacted from logs
Architecture Overview
┌──────────────────────────────────────────────────────┐
│ Service Layer │
│ (FastAPI async API wrapper) │
├──────────────────────────────────────────────────────┤
│ Orchestrator │
│ (graph traversal, node dispatch, branching) │
├────────────┬────────────┬────────────┬───────────────┤
│ Agent │ Executable │ Human │ Conditions │
│ Runtime │ Units │ Approvals │ & Branching │
├────────────┴────────────┴────────────┴───────────────┤
│ Contracts │ Mappings │ Memory │ Policy │
├──────────────────────────────────────────────────────┤
│ Audit │ Guardrails │ Secrets │ Observability │
├──────────────────────────────────────────────────────┤
│ Storage (SQLite + Redis) │ Identity & Auth │
└──────────────────────────────────────────────────────┘
Zeroth is implemented as a modular monolith — all subsystems live in a single deployable unit but are cleanly separated by domain.
Getting Started
Prerequisites
- Python 3.12+
- uv — fast Python package manager
- Docker (for sandboxed executable unit execution)
- Redis (for distributed runtime state; optional for local development)
Installation
# Clone the repository
git clone https://github.com/rrrozhd/zeroth.git
cd zeroth
# Install dependencies
uv sync
# Verify installation
uv run python -c "import zeroth; print('Zeroth is ready')"
Running Tests
# Run the full test suite
uv run pytest -v
# Run tests for a specific module
uv run pytest tests/graph/ -v
uv run pytest tests/contracts/ -v
Linting and Formatting
# Check for lint errors
uv run ruff check src/
# Auto-format code
uv run ruff format src/
Project Structure
src/zeroth/
├── agent_runtime/ # Agent execution, LLM providers, tool attachments
├── approvals/ # Human approval workflows and decision tracking
├── audit/ # Per-node event tracking, redaction, evidence
├── conditions/ # Branch evaluation and traversal logging
├── contracts/ # Pydantic-based schema registration and versioning
├── deployments/ # Immutable graph snapshots and version management
├── dispatch/ # Durable run dispatch and worker supervision
├── execution_units/ # Sandboxed code execution (Docker, Python, shell)
├── graph/ # Workflow DAG structure and persistence
├── guardrails/ # Rate limiting, quotas, dead-letter queues
├── identity/ # Authentication, principals, roles, scoping
├── mappings/ # Data flow definitions between graph nodes
├── memory/ # Persistent agent memory connectors
├── observability/ # Metrics, correlation IDs, structured logging
├── orchestrator/ # Core workflow execution engine
├── policy/ # Capability-based access control
├── runs/ # Run and thread state persistence
├── secrets/ # Secret resolution and redaction
├── service/ # FastAPI HTTP API and bootstrap
└── storage/ # SQLite, Redis, migrations, encryption
Executable Unit Modes
Zeroth supports three ways to define executable units:
| Mode | Description | Use Case |
|---|---|---|
| Native Unit | Code written directly in the platform | Quick transformations, lightweight logic |
| Wrapped Command | Existing script, binary, or command with a manifest | Integrating existing tools without rewriting them |
| Project Unit | Uploaded project/archive with build + run manifest | Complex workloads with dependencies |
All executable units run inside sandboxed environments with resource constraints, cached environment reuse, and integrity verification.
Design Principles
Zeroth optimizes for:
- Explicitness over hidden magic — every connection, mapping, and policy is visible and inspectable
- Governance over permissive flexibility — agents operate within declared capabilities
- Manageability over novelty — production operations come first
- Compatibility with existing code — wrap what you have, don't rewrite it
- Auditability over opaque orchestration — per-node audit trails, not monolithic logs
- Explicit state persistence over hidden in-memory behavior — thread-based continuity you can inspect and reason about
License
See the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zeroth_core-0.1.0.tar.gz.
File metadata
- Download URL: zeroth_core-0.1.0.tar.gz
- Upload date:
- Size: 1.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78413bede31fa6a41d9398ded5ad3f82aecfdeb8947a633040bfa64cc1b963ed
|
|
| MD5 |
f37716b5873f69754b23473fc9da5949
|
|
| BLAKE2b-256 |
ee941eb6864f33bb8f04b96ca2828149a811aa442c9ca5c5b04603022a51e29e
|
File details
Details for the file zeroth_core-0.1.0-py3-none-any.whl.
File metadata
- Download URL: zeroth_core-0.1.0-py3-none-any.whl
- Upload date:
- Size: 253.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dce8ba7e3fee3d13215f1056cfeba0929e601e1b4ed08beacfb200644ade8a3f
|
|
| MD5 |
cee1b1086a5ed28bee50ffc2e4e5bbba
|
|
| BLAKE2b-256 |
8ec52a0886c7dd0e833744e717d06bffa83bfc17659662b4c8fb894f88b02bfe
|