Skip to main content

Overview

A small set of verbs cover the live lifecycle: install --from <path> brings an agent up, status shows what’s running, logs (or events for filtered history) replays the activity stream, steer triggers a manual run, and stop / resume / kill / delete walk the irreversibility ladder. Each operates on the current workspace; set it with zombiectl workspace use or check with zombiectl workspace show.
zombiectl install --from ~/.config/usezombie/samples/platform-ops
zombiectl status                               # every agent in the workspace
zombiectl logs zmb_2041                        # tail one agent's recent activity
zombiectl steer zmb_2041 "morning health check"
zombiectl stop zmb_2041                        # pause; resumable
zombiectl kill zmb_2041                        # terminal
zombiectl delete zmb_2041                      # hard-delete (kill first)

zombiectl install --from <path>

Reads SKILL.md and TRIGGER.md from the directory you point at, validates them, and uploads to the active workspace. Install is the deploy — there is no separate up step.
zombiectl install --from ~/.config/usezombie/samples/platform-ops
✓ platform-ops-agent is live.
  Zombie ID: zmb_2041
  Webhook URLs (register on the upstream provider):
    github: https://api.usezombie.com/v1/webhooks/zmb_2041/github
One URL is printed per declared webhook trigger, keyed by triggers[].source. The host-agent install skill registers each URL on the upstream provider via your existing gh (or equivalent) CLI — there is no separate paste step. To rotate the workspace-level signing secret, see Quickstart → Verify the registered webhook. Re-running zombiectl install --from <same-path> against a workspace that already has the same agent is idempotent: the new SKILL.md / TRIGGER.md replace the previous version on the next event. Exit codes:
  • 0 — installed (or updated).
  • 1 — no workspace selected, or API error.
  • 2 — missing --from, invalid path, or schema rejection.

zombiectl status

Lists every agent in the active workspace with its state, last event, and budget consumed.
zombiectl status
Zombies (workspace: ws_abc123)
──────────────────────────────────────────────────────────────────
ID         Name                  Status  Events  Budget
zmb_2041   platform-ops-agent   alive   42      $1.23
Pass --json for a machine-readable shape suitable for scripting:
zombiectl status --json

zombiectl logs <zombie_id>

Print the agent’s recent activity stream. Every webhook receipt, cron fire, steer message, tool call, and run exit lands here, tagged with what triggered it (webhook:github, cron:*, steer:<user>, continuation:<original_actor>).
zombiectl logs zmb_2041
zombiectl logs zmb_2041 --limit 50 --cursor <next_cursor>
zombiectl logs zmb_2041 --json
FlagDefaultPurpose
--limit <n>20Page size.
--cursor <cursor>(none)Pagination cursor returned as next_cursor in a previous response.
--jsonoffEmit the raw { items, next_cursor } envelope.

zombiectl events <zombie_id> — filtered history

Richer filter surface than logs. Use this when you need to slice by actor or time window:
zombiectl events zmb_2041 --actor 'webhook:*' --since 2h
zombiectl events zmb_2041 --actor 'steer:*' --since 7d --limit 100
zombiectl events zmb_2041 --json | jq 'select(.error)'
FlagDefaultPurpose
--actor <glob>(none)Filter by actor.
--since <duration>24hGo-style duration (2h, 7d) or RFC 3339 timestamp.
--cursor <cursor>(none)Pagination cursor from a previous response.
--limit <n>50Max events per page.
--jsonoffEmit raw JSON for scripting.
There’s no streaming-tail flag today. Poll events --since 30s from a script if you need near-live behaviour.

zombiectl steer <zombie_id> "<message>"

Posts a steer message — a manual trigger that runs the same reasoning loop as a webhook event. Useful before you have a webhook wired up, or for one-off investigation.
zombiectl steer zmb_2041 "morning health check — anything red?"
The reply streams back live; the result is also persisted to the activity stream for replay.

Lifecycle: stop / resume / kill / delete

Four verbs control the agent’s lifecycle, in increasing order of irreversibility:
VerbWhat it doesReversible?
stop <zombie_id>Halt the running session. New events stop dispatching; the in-flight run finishes cleanly.Yes — zombiectl resume.
resume <zombie_id>Bring a stopped (or auto-paused) agent back to active.
kill <zombie_id>Mark terminal. The agent won’t process events again, but its row, history, and webhook URL persist.No, but a killed agent can be deleted after.
delete <zombie_id>Hard-delete. Removes the agent row and its webhook URL. Must kill first.No.
zombiectl stop   zmb_2041   # pause; resumable
zombiectl resume zmb_2041   # back to active
zombiectl kill   zmb_2041   # terminal; webhook still 200s but routes nowhere new
zombiectl delete zmb_2041   # hard-delete; webhook URL starts returning UZ-WH-001
State is checkpointed at every transition — nothing on the activity stream is lost until the final delete. After delete, recreating with the same SKILL.md produces a new zombie_id and a new webhook URL; any upstream wiring needs to be updated.

Exit codes

CodeMeaning
0Success.
1Workspace not selected, network error, or server rejected the call.
2Invalid or missing argument (missing --from, missing <zombie_id>, etc.).
See the CLI reference for the full command matrix.