Skip to main content

ZERO Engine

Paper-first runtime for ZERO self-custodial onchain operations.

This package is the public seed of the open-core engine. It starts with a small, testable safety contract and now includes an optional, local-only Hyperliquid live executor behind explicit custody and kill-switch gates.

Install

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

Demo

zero-paper-demo

Local API

zero-paper-api

The local paper API listens on http://127.0.0.1:8765 by default and exposes the paper-mode subset of the engine contract used by the Rust CLI: /, /health, /v2/status, /positions, /risk, /brief, /regime, /evaluate/{coin}, /pulse, /approaching, /rejections, /journal, /metrics, /immune, /audit/export, /hl/status, /hl/account, /hl/reconcile, /market/quote, /network/profile, /network/leaderboard, /intelligence/snapshot, /intelligence/catalog, /live/preflight, /live/cockpit, /live/certification, /operator/state, POST /execute, POST /auto/toggle, POST /operator/events, POST /network/publish, POST /intelligence/export, and the live-control endpoints under POST /live/*.

For a replayable local audit log, pass a JSONL journal path:

zero-paper-api --journal .zero/decisions.jsonl

On restart, the API replays that journal before serving traffic. Recovered state includes decisions, simulated fills, open positions, rejections, and idempotency keys; /health and /v2/status expose the recovery summary.

Every HTTP response includes X-Zero-Trace-Id. Paper decisions created through HTTP execution write that trace into the journal. Operators can inspect runtime counters through /metrics and export a structured audit packet through /audit/export?limit=100.

ZERO Network profile and leaderboard contracts are exposed through /network/profile and /network/leaderboard. They are aggregate and redacted by default. To write an opt-in local publish packet, set ZERO_NETWORK_PUBLISH_PATH and call POST /network/publish with {"consent":true}.

ZERO Intelligence contracts are exposed through /intelligence/snapshot and /intelligence/catalog. Delayed public snapshots are aggregate and redacted. To write an opt-in local intelligence packet, set ZERO_INTELLIGENCE_EXPORT_PATH and call POST /intelligence/export with {"consent":true}.

Live custody preflight is visible through /live/preflight. It is a non-secret readiness gate for the Hyperliquid live executor: private keys are never accepted over HTTP, diagnostics are redacted, account reconciliation is checked, and public paper deployments return live_mode=refused unless control-plane signing and controls are configured.

Live certification is visible through /live/certification. It runs dry-run fake-exchange drills for heartbeat, idempotency, exchange outages, pause, reduce-only flatten, kill, rate limits, and loss limits without placing live orders.

The live cockpit is visible through /live/cockpit. It combines preflight, reconciliation, immune breakers, dry-run certification, heartbeat state, recent live records, and the next required operator action into one read-only packet.

The immune system is visible through /immune. It reports stale-data, reconciliation, dead-man, pause, kill, daily-loss, order-velocity, exchange-error, and exposure breakers as a single zero.immune.v1 packet.

Live execution is optional and self-custodial. Production deployments use Privy-native control-plane signing, so the runtime receives no Hyperliquid API private key. On first boot, ZERO_CLAIM_TOKEN is exchanged for a scoped ZERO_FOUNDATION_API_KEY and persisted under .zero/foundation/<deployment>; restarts reuse the stored key instead of reclaiming.

pip install -e ".[live]"
ZERO_LIVE_EXECUTION_ENABLED=true \
ZERO_HYPERLIQUID_SIGNING_MODE=privy \
ZERO_CONTROL_URL=https://getzero.dev \
ZERO_DEPLOYMENT_ID=dep_... \
ZERO_CLAIM_TOKEN=claim_... \
ZERO_HYPERLIQUID_WALLET_ADDRESS=0x... \
ZERO_HYPERLIQUID_API_WALLET_ADDRESS=0x... \
zero-paper-api --journal .zero/decisions.jsonl --hyperliquid-live-prices

With X-Zero-Mode: live, POST /execute routes through the live executor. Without a configured executor it fails closed with accepted=false and reason="live executor not configured". /live/heartbeat, /live/pause, /live/resume, /live/kill, and /live/flatten provide the operator controls the CLI calls.

To enable read-only Hyperliquid market metadata and mids:

zero-paper-api --hyperliquid
curl -fsS 'http://127.0.0.1:8765/hl/status?symbol=BTC'

This does not require exchange credentials and cannot place orders.

To route paper quotes and paper fills through live Hyperliquid mids:

zero-paper-api --journal .zero/decisions.jsonl --hyperliquid-live-prices
curl -fsS 'http://127.0.0.1:8765/market/quote?symbol=BTC'

This still cannot place exchange orders. If live market data is unavailable or a symbol is missing from Hyperliquid allMids, paper execution fails closed instead of silently using fixture prices.

Paper execution example:

curl -fsS \
  -H "content-type: application/json" \
  -d '{"coin":"BTC","side":"buy","size":0.01,"idempotency_key":"readme-smoke"}' \
  http://127.0.0.1:8765/execute

The response is expected to include "simulated": true. Public /execute orders are paper fills and still pass through the same safety evaluation path as the Python PaperEngine.

One-Click Runtime

ZERO Engine ships as the same runtime across PyPI, Docker, and Railway. The container starts paper-first, persists Foundation identity under /data/.zero, and exposes /health for platform readiness.

Deploy on Railway

docker run --rm -p 8765:8765 -v zero-engine-data:/data getzero/zero:latest
curl -fsS http://127.0.0.1:8765/health

For Railway template configuration, required variables, and volume settings, see RAILWAY.md. Production operator deployments should use ZERO_CONTROL_URL, ZERO_DEPLOYMENT_ID, and ZERO_CLAIM_TOKEN minted by the ZERO dashboard; the runtime exchanges the claim token once and then reuses the stored Foundation API key on restart.

MCP Server

The package exposes zero-mcp for local agent inspection and zero-engine as the package-name entry point expected by the MCP Registry PyPI runtime path:

zero-mcp --smoke
zero-engine --smoke

Both commands expose the same read-only MCP server. They cannot place orders, change runtime state, read secrets, or access wallet material.

Test

pytest
ruff check .

Safety Contract

  • Paper mode is the first-run path.
  • Risk-increasing orders are evaluated before fill.
  • Reduce-only orders bypass risk-increasing friction.
  • Rejections are recorded explicitly.
  • No real exchange private key is required for paper mode or contribution work.
  • Live mode is local opt-in and must fail closed when preflight is not ready.

Release files for zero-engine 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zero-engine 0.1.6
File Size Uploaded
zero_engine-0.1.6.tar.gz 152.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for zero-engine 0.1.6
File Interpreter ABI Platform
zero_engine-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 314.9 kB

Release files / zero_engine-0.1.6.tar.gz

Download URL zero_engine-0.1.6.tar.gz
Size 152.2 kB
Tags Source
SHA-256 checksum
How to use checksums
2db19edb88c70d1455ce84ddd23d36650fd4931803f04d09001c41c10d1a7b7b
BLAKE2b-256 checksum
How to use checksums
95a8c00ae80d895743ffcb81098eecdf149b6ac85b9184295d8d688fc92f2b89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 1, 2026.

Transparency log

Release files / zero_engine-0.1.6-py3-none-any.whl

Download URL zero_engine-0.1.6-py3-none-any.whl
Size 162.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
aa5bfbc3967772d974e73f079de727bb6f425d381235667047d17a564b0912b8
BLAKE2b-256 checksum
How to use checksums
de9f656bb50f23dc189981abac87bab9c7384347365f95b36f8b8c96f8cea49e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 1, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.6 This release

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page