Quickstart¶
Install and run the demo — 2 minutes¶
Prerequisites: python3 on PATH. No build required.
curl -fsSL https://get.autonomyops.ai/install.sh | bash
autonomy demo openclaw
autonomy demo validate
Supported platforms: macOS (arm64, amd64), Linux (arm64, amd64). No Docker, no network access after install.
What you will see: the OpenClaw agent submits three tool calls against a live governance runtime. An environment probe is permitted and runs. A shell exfiltration attempt is denied before execution — the shell command is never spawned. A policy-scoped rollback fires on the unsafe state. Every decision is written to the local WAL and survives process restart.
autonomy demo validate runs six objective checks (python3 present, demo completes
without error, ALLOW and DENY signals present, WAL evidence present, elapsed under
5 minutes) and exits 0 when all pass.
autonomy demo validate
Connect your own agent¶
Once installed, wrap any subprocess-based agent with policy governance:
autonomy run python3 my_agent.py
autonomy run starts an in-process policy-gated runtime on a random localhost
port, injects AUTONOMY_RUNTIME_URL into the subprocess environment, and
propagates the subprocess exit code. Your agent calls the runtime via HTTP;
the runtime returns {"decision":"allow",...} or {"decision":"deny",...}
with HTTP 200 or HTTP 403 respectively.
Advanced: persistent runtime daemon¶
Start the runtime with the embedded demo policy on a fixed port. Useful for iterating on agent logic without restarting governance on every run.
autonomy runtime start --demo
Default listen address: 127.0.0.1:7777.
Liveness check:
curl http://127.0.0.1:7777/health
{"status":"ok"}
Direct tool call:
curl -s -X POST http://127.0.0.1:7777/v1/tool \
-H 'Content-Type: application/json' \
-d '{"kind":"tool.echo","params":{"message":"hello"}}'
{"decision":"allow","output":"hello","policy_ref":"embedded:demo"}
Denied call:
curl -s -X POST http://127.0.0.1:7777/v1/tool \
-H 'Content-Type: application/json' \
-d '{"kind":"tool.shell","params":{"cmd":"id"}}'
{"decision":"deny","reason":"policy: deny","policy_ref":"embedded:demo"}
HTTP 200 = allow + executed. HTTP 403 = deny (policy rejected, tool never ran).
Inspect the telemetry WAL¶
Every decision and tool execution writes a durable event to the local WAL:
autonomy wal status
WAL dir: ~/.cache/autonomyops/telemetry
Total: 8
Exported: 0 (pos=0)
Pending: 8
Inspect the most recent entries:
autonomy wal inspect --limit 5
Export to JSONL:
autonomy telemetry export --out - | head -1 | python3 -m json.tool
{
"seq": 1,
"written_at": "2026-02-27T20:07:54Z",
"event": {
"kind": "autonomy.lifecycle",
"attrs": {"event": "policy.bundle.loaded", "bundle_version": "1.0.0"}
}
}
Supported tools¶
Kind |
Behavior |
Default policy |
|---|---|---|
|
Returns the |
Allow |
|
HTTP GET to an allowlisted endpoint key ( |
Allow (restricted endpoints) |
|
Executes a shell command |
Deny (hardcoded in demo policy) |
--allowed-domains controls the endpoint-key allowlist for tool.http_get
(default: api.anthropic.com,ifconfig.me). The runtime rejects legacy
params.url and requires params.endpoint.
Contributor path — build from source¶
For contributors only. External users should use the binary install above.
Prerequisites: Go 1.25.7, make.
git clone https://github.com/autonomyops/adk
cd adk
make build
./bin/autonomy demo policy
./bin/autonomy run python3 examples/agent.py
autonomy demo policy starts an in-process runtime backed by the embedded demo
policy, fires three tool calls (tool.echo → ALLOW, tool.http_get → ALLOW,
tool.shell → DENY), and prints governance verdicts.
Full-stack path (Docker required)¶
Prerequisites: Go 1.25.7, Docker, Python 3.12 + uv.
Private image access (Stage 1 beta): images under ghcr.io/autonomyops/* are invite-only.
Authenticate before pulling:
echo "$TOKEN" | docker login ghcr.io -u "$USER" --password-stdin
Start infrastructure (registry + runtime + OTLP sink + Jaeger):
make demo-up
Bootstrap policy, attach OCI sidecars, run the Python agent:
make demo-run
Expected final line:
✓ PASS — echo allowed, shell denied correctly
Tear down:
make demo-clean
Next steps¶
getting-started/connect-your-agent.md — advanced path: wrap your own subprocess or use a persistent daemon
policy.md — bundle semver, LKG rollback, runtime compatibility
oci.md — attach lock and policy to an OCI image
security-model.md — trust boundaries and verification order
demo-runbook.md — failure drills and expected outputs