Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zu_runtime-0.2.2.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zu_runtime-0.2.2-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file zu_runtime-0.2.2.tar.gz.

File metadata

  • Download URL: zu_runtime-0.2.2.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for zu_runtime-0.2.2.tar.gz
Algorithm Hash digest
SHA256 b02c0d96d9c419105c6fb1c832abb2fd9c2e7feef887105667080914c5fc79b1
MD5 2ea7c602c2b475a70872dd66ef3e19ff
BLAKE2b-256 d00a837459ed0dfabbfbad6305742cda326c66f0c1bad5356e658f8c9bed5015

See more details on using hashes here.

File details

Details for the file zu_runtime-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: zu_runtime-0.2.2-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.11.15

File hashes

Hashes for zu_runtime-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 dadc06cc580edce2129440f27b6a3f92c1a2a1dfc8c19527332dc7a9b3e2a6d3
MD5 6ab5c64550a811126442fa6e218ba1ae
BLAKE2b-256 2a6f20fcde608c6694ecdcb3008602a17d6ff99c27d3c53b582b5100806caca0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page