An opinionated, backend-agnostic runtime for agents that work in production — deterministic, auditable, injection-resistant. Import as `zu`.
Project description
Zu
An opinionated, backend-agnostic runtime for agents that work in production — deterministic, auditable, and injection-resistant by construction.
New here? One line:
pip install 'zu-runtime[all]' # everything: web tools, both model SDKs, server, Docker, MCP
Prefer a lean install? pip install zu-runtime gives you import zu, the zu
command, the web tools (http_fetch/html_parse/render_dom), the model-provider adapters,
detectors, validators, and a SQLite event sink. Add the heavy/situational bits as extras:
pip install 'zu-runtime[anthropic]' # + the Anthropic SDK to call a real model (also: [openai])
pip install 'zu-runtime[serve]' # + the HTTP server (zu serve)
pip install 'zu-runtime[docker]' # + the Docker sandbox (tier-2 browser)
pip install 'zu-runtime[mcp]' # + the MCP server (zu mcp)
The zu-* packages are also standalone on PyPI, but you rarely install them individually —
that's for plugin authors depending on just zu-core.
Embed it
import zu
result = zu.run(
{"query": "Extract the product name and price.",
"target": "https://example.com/product/123",
"output_schema": {"type": "object",
"properties": {"name": {"type": "string"}, "price": {"type": "string"}},
"required": ["name", "price"]}},
config={"provider": {"name": "anthropic", "model": "claude-sonnet-4-6",
"api_key_env": "ANTHROPIC_API_KEY"},
"plugins": {"tools": ["http_fetch", "html_parse", "render_dom"],
"detectors": ["empty", "error", "js-shell", "bot-wall"],
"validators": ["schema", "grounding"]}},
)
print(result.status, result.value)
Swapping the model is a one-line edit to the provider block — Anthropic,
OpenRouter, OpenAI, or a local model (Ollama / vLLM) — because the runtime only
ever speaks to a ModelProvider port. Credentials are named by environment
variable (api_key_env), never passed in code or config.
Run it from the command line, or as a service
zu run agent.yaml # one-shot
zu run agent.yaml --every 5m # scheduled worker
zu serve -c agent.yaml # HTTP: POST /run (needs the [serve] extra)
What it is
A small, stable core (the loop, registry, contracts, event bus) surrounded by six swappable ports. Every capability that can vary is a plugin behind a port, so the production system is reached by adding adapters — never by reopening the core. Full source, architecture, and examples: https://github.com/k3-mt/zu
Apache-2.0.
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 zu_runtime-0.3.0.tar.gz.
File metadata
- Download URL: zu_runtime-0.3.0.tar.gz
- Upload date:
- Size: 9.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c4ddff003cf491021519ea254d5801fe9ebc5d0d2e10d59a2fee8ffa3966b60
|
|
| MD5 |
caf40ef5a6418f06dff146042a935cae
|
|
| BLAKE2b-256 |
4314fbb0bde25f67e04179f7fcd417c9a98553a5a58e84b9d131ba4526cd638b
|
File details
Details for the file zu_runtime-0.3.0-py3-none-any.whl.
File metadata
- Download URL: zu_runtime-0.3.0-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1aa0629d5e37d169d4128db29774709b2bb223acd823fd8de6f3c3a20d3e4312
|
|
| MD5 |
84b136d6f8217ae41fc19edc558b68db
|
|
| BLAKE2b-256 |
1bb3557a11276d7b0c94ba09f969fd4137cb9470e9eaf17b2bff002bb338e091
|