Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions api-reference/introduction.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -25,23 +25,23 @@ Two kinds of bearer token are accepted:

## Errors

All errors follow a consistent format:
All errors use RFC 7807 problem detail (`Content-Type: application/problem+json`):

```json
{
"error": {
"code": "UZ-WORKSPACE-001",
"message": "No workspace with the given ID exists."
},
"docs_uri": "https://docs.usezombie.com/api-reference/error-codes#UZ-WORKSPACE-001",
"title": "Workspace not found",
"detail": "No workspace with the given ID exists.",
"error_code": "UZ-WORKSPACE-001",
"request_id": "req_01JQ7K..."
}
```

Error codes follow the `UZ-<DOMAIN>-NNN` scheme. Every response includes a `request_id` for tracing. See [Error codes](/api-reference/error-codes) for the full registry.
Error codes follow the `UZ-<DOMAIN>-NNN` scheme in the `error_code` field. Every response includes a `request_id` for tracing. See [Error codes](/api-reference/error-codes) for the full registry.

## Conventions

- **IDs** are UUIDs.
- **IDs** are UUIDv7.
- **Timestamps** are Unix milliseconds.
- **State transitions** are partial updates on the parent resource (e.g., `PATCH /v1/workspaces/{workspace_id}/zombies/{zombie_id}` with body `{status: "stopped"}`). Sub-resources (e.g., `/messages`, `/events`, `/events/stream`) handle data-flow operations.
- **Streaming endpoints** (activity stream) return Server-Sent Events.
Expand Down
4 changes: 4 additions & 0 deletions billing/budgets.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ description: "Per-zombie dollar ceilings, tenant-wide spend caps, and how debits

usezombie enforces budgets at two levels: per-zombie ceilings declared in `TRIGGER.md`, and a tenant-wide balance that every stage debits against.

<Note>
**Free until July 31, 2026.** During the launch trial, hosted execution is free — the tenant-wallet mechanics below apply **after** the trial. See [pricing](https://usezombie.com/pricing).
</Note>

## Per-zombie ceilings (`daily_dollars` / `monthly_dollars`)

Every zombie declares its own dollar ceilings in `TRIGGER.md`:
Expand Down
4 changes: 4 additions & 0 deletions billing/plans.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ description: "Hobby and Scale — what you get and how credits work."

usezombie has two plans. Both include the full platform — always-on agent hosting, the tool bridge, activity stream, webhook ingestion, kill switch. The difference is scale and support.

<Note>
**Free until July 31, 2026.** During the launch trial, hosted execution — every event receipt and stage — is free. The plan details below describe billing **after** the trial. See [pricing](https://usezombie.com/pricing).
</Note>

## Hobby (Free)

New tenants start here. The first sign-in seeds the tenant balance with **$5 (500¢)** automatically — there are no tokens to enter or gates to clear. The balance is waiting for you the moment Clerk completes auth.
Expand Down
16 changes: 11 additions & 5 deletions cli/configuration.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,19 @@ description: "Configuration precedence and environment variables."

## Auth precedence

Authentication is resolved in this order, highest priority first:
`zombiectl login` decides which token to **store**, highest priority first:

1. **CLI flag** -- `--token <value>` on any command
2. **Environment variable** -- `ZOMBIE_TOKEN`
3. **Stored credentials** -- written by `zombiectl login` to `~/.config/zombiectl/credentials`
1. **`--token <value>`** — login-only flag
2. **`ZOMBIE_TOKEN`** environment variable
3. **Piped stdin** — token read from a pipe
4. **Browser device flow** — interactive terminals only

A value at a higher level always wins. Use `ZOMBIE_TOKEN` in CI so no interactive login is needed. Use `--token` for one-off overrides without touching stored credentials.
Every **other command** then resolves its token, and the order is TTY-aware:

- **Interactive terminal** — `ZOMBIE_TOKEN` wins over stored credentials, so an env var you just exported overrides a possibly-stale file.
- **Non-interactive (CI, cron, pipes)** — stored credentials (written by `zombiectl login` to `~/.config/zombiectl/credentials.json`) win, falling back to `ZOMBIE_TOKEN` only when no file exists.

`--token` is not accepted on commands other than `login`; use the `ZOMBIE_TOKEN` env var for one-off overrides in scripts.

## API URL precedence

Expand Down
31 changes: 7 additions & 24 deletions cli/install.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -27,26 +27,11 @@ description: "Install the zombiectl CLI."

## Agent Skills

The `usezombie-install-platform-ops` skill is the guided install UX driven from a host agent (Claude Code, Amp, Codex CLI, OpenCode). Two ways to install it — pick whichever fits your environment.
The `usezombie-install-platform-ops` skill is the guided install UX driven from a host agent (Claude Code, Amp, Codex CLI, OpenCode). The `npm install -g @usezombie/zombiectl` above already installs the `/usezombie-*` slash commands into every supported host's skill directory it detects on your machine — invoke `/usezombie-install-platform-ops` in your agent and you're set.

<Tabs>
<Tab title="npx (recommended)">
One-liner. Symlinks the `/usezombie-*` slash commands into every supported host's skill directory the package can detect on your machine:

```bash
npx skills add usezombie/skills
```

Pass `--host=<claude|amp|codex|opencode>` to pin a specific host instead of letting the package decide.
</Tab>
<Tab title="curl (one command)">
Prefer a single command? This installs `zombiectl` and the skill together. Requires Node (it runs npm under the hood). Want to read it first? `curl -fsSL https://usezombie.sh` without `| bash` prints the script.

```bash
curl -fsSL https://usezombie.sh | bash
```
</Tab>
</Tabs>
<Tip>
**No global install?** `curl -fsSL https://usezombie.sh | bash` installs `zombiectl` and the skill together in one command (requires Node — it runs npm under the hood). Run `curl -fsSL https://usezombie.sh` without `| bash` to read it first.
</Tip>

The skill drives `zombiectl install --from`, `zombiectl credential`, `zombiectl steer`, `zombiectl logs`, and the doctor preflight under the hood. See [Quickstart](/quickstart) for the end-to-end flow.

Expand All @@ -64,14 +49,12 @@ Run the built-in diagnostics command to verify API connectivity, auth status, an
zombiectl doctor
```

`doctor` runs five checks and exits non-zero if any fails:
`doctor` runs three checks and exits non-zero if any fails. It does **not** require authentication and never short-circuits — every check runs and reports:

| Check | Verifies |
|---|---|
| `auth_token_present` | The local config has a valid auth token from `zombiectl login`. Short-circuits the rest — every check downstream needs auth. |
| `server_reachable` | `GET /healthz` against the configured API URL returns `{ "status": "ok" }` within 5s. |
| `workspace_selected` | The local config has a `current_workspace_id`. Auto-populated by `zombiectl login` from your signup-provisioned default workspace; can also be set or replaced by `zombiectl workspace add` / `workspace use`. |
| `workspace_binding_valid` | The auth token can read the selected workspace's zombies — i.e. it is bound to the right tenant. |
| `tenant_provider` | Returns the active inference posture for the tenant: `{ mode, model, context_cap_tokens, free_trial }`. `mode` is `platform` (you pay credits, we route to a default model) or `self_managed` (you attached your own provider key via `zombiectl tenant provider set`). `free_trial` carries `{ active, ends_at_ms }` while the launch trial window is open. |
| `workspace_binding_valid` | The resolved auth token can read the selected workspace's zombies — i.e. it is bound to the right tenant. Reports a failed check (rather than aborting) when no token is present. |

Pass `--json` for the structured `{ ok, api_url, checks: [...] }` envelope. Run it before any install — host-agent skills depend on this preflight.
Pass `--json` for the structured `{ ok, api_url, checks: [...] }` envelope. Run it before any install — host-agent skills depend on this preflight. For the tenant's inference posture and free-trial window, use [`zombiectl tenant provider show`](/cli/zombiectl#tenant-provider).
2 changes: 1 addition & 1 deletion cli/zombiectl.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ The login session lives 5 minutes; an unfinished approval expires automatically.

### `zombiectl logout`

Removes local credentials (`~/.config/usezombie/credentials.json`) and aborts any in-flight `zombiectl login` flows you have pending.
Removes local credentials (`~/.config/zombiectl/credentials.json`) and aborts any in-flight `zombiectl login` flows you have pending.

```bash
zombiectl logout
Expand Down
32 changes: 11 additions & 21 deletions concepts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ title: "Key concepts"
description: "The four nouns, the tool bridge, and how a stage works."
---

import { STARTER_CREDIT } from "/snippets/rates.mdx";

<Tip>
This page introduces the operator-facing model. For the canonical technical reference — system topology, data flow, billing internals, security boundary, post-ship reflection — read [`docs/architecture/`](https://github.com/usezombie/usezombie/tree/main/docs/architecture) on GitHub.
</Tip>
Expand All @@ -15,13 +13,13 @@ usezombie has four primary objects. Everything else is infrastructure.

<CardGroup cols={2}>
<Card title="Tenant" icon="building">
Your top-level billing and identity boundary. Created automatically on first Clerk sign-in. Carries the **credit balance** ({STARTER_CREDIT} starter credit, never expires) and your default Stripe customer.
Your top-level billing and identity boundary. Created automatically on first Clerk sign-in. Carries your default Stripe customer — hosted execution is [free until July 31, 2026](https://usezombie.com/pricing).
</Card>
<Card title="Workspace" icon="folder-tree">
A container for zombies and credentials. One tenant can have many workspaces (team, project, environment). Credits are **not** fragmented per workspace — every workspace debits the same tenant wallet.
A container for zombies and credentials. One tenant can have many workspaces (team, project, environment). Billing and identity live at the tenant — a workspace is purely an organizational boundary.
</Card>
<Card title="Zombie" icon="ghost">
A persistent, durable agent process scoped to one operational outcome. One zombie has one `SKILL.md` + `TRIGGER.md`, a set of triggers (webhook, cron, steer), and a set of workspace credentials it uses but never sees raw bytes for. Lives inside a workspace.
A persistent, durable agent process scoped to one operational outcome. One zombie has one `SKILL.md` + `TRIGGER.md`, a set of triggers (webhook, cron, steer), and a set of workspace credentials it uses but never sees raw bytes for. Lives inside a workspace; crashes and restarts are transparent — the platform survives them.
</Card>
<Card title="Tool" icon="plug">
A named primitive the zombie's agent can invoke — `http_request`, `memory_store`, `cron_add`. Tools are declared in `TRIGGER.md` and **enforced** by the executor sandbox; the agent literally cannot call a tool that isn't on the list. The companion file `SKILL.md` is **advisory** — natural-language prose the model reads as its system prompt to decide *when* to reach for which tool and what counts as "done." Enforcement comes from `TRIGGER.md`; behavior comes from `SKILL.md`.
Expand All @@ -31,7 +29,7 @@ usezombie has four primary objects. Everything else is infrastructure.
### How they relate

```
Tenant (wallet: $5.00, provider: anthropic)
Tenant (billing + identity, provider: anthropic)
├── Workspace: "platform-ops"
│ │
Expand All @@ -48,17 +46,13 @@ Tenant (wallet: $5.00, provider: anthropic)
└── Triggers: webhook (Zendesk), steer
```

Every stage debits the same tenant balance regardless of which workspace the zombie lives in. This is the **single-wallet, multi-workspace** model — no per-workspace credit pools, no workspace-scoped top-ups.

## Credits and your model provider
## Cost: free during the trial, bring your own model

New tenants start with **{STARTER_CREDIT}** seeded at signup — never expires.
Hosted execution — every event receipt and stage — is **free until July 31, 2026**. No credit card to start.

- **Hosted execution is metered.** usezombie debits credits on event receipt and per-stage execution. That's what the credit pool pays for.
- **You bring your provider and model.** Pick the provider (Anthropic, OpenAI, Fireworks, Together, Groq, Moonshot), attach the key, and pay them directly. usezombie marks up zero on inference. The executor resolves your credential at the tool bridge.
- **Debits happen on completed work only.** A stage that fails before producing output does not debit.
**You bring your provider and model.** Pick the provider (Anthropic, OpenAI, Fireworks, Together, Groq, Moonshot), attach the key, and pay them directly — usezombie marks up zero on inference. The executor resolves your credential at the tool bridge, so the agent never sees the raw key.

See [Billing and cost control](/billing/plans).
For the metered rates that apply after the trial, see [pricing on usezombie.com](https://usezombie.com/pricing).

## How a stage runs

Expand All @@ -78,10 +72,6 @@ A trigger lands on the event stream. A stage opens. The agent calls tools allow-
## Core terminology

<AccordionGroup>
<Accordion title="Zombie">
A persistent, always-on agent scoped to one operational outcome. A zombie has two markdown files (`SKILL.md` + `TRIGGER.md`), a trigger that wakes it, a list of tools it can call, and the workspace credentials it needs. Crashes and restarts are transparent — the platform survives them.
</Accordion>

<Accordion title="Stage">
One end-to-end execution of the agent on one trigger: webhook arrives → agent reasons → tool calls → result. Most zombies finish a stage in a few seconds. See [How long does a stage take?](/concepts/context-lifecycle).
</Accordion>
Expand All @@ -96,8 +86,8 @@ A trigger lands on the event stream. A stage opens. The agent calls tools allow-
`SKILL.md` decides what to do based on the event payload.
</Accordion>

<Accordion title="Tool">
A named verb the agent can invoke, declared in `TRIGGER.md`:
<Accordion title="Tool catalog">
The named verbs an agent can invoke, declared in `TRIGGER.md`:
- `http_request` — outbound HTTP. Slack posts, GitHub calls, your provider — all go through this.
- `memory_store` / `memory_recall` / `memory_list` / `memory_forget` — durable cross-event learning. See [Memory](/memory).
- `cron_add` / `cron_list` / `cron_remove` — schedule future stages.
Expand All @@ -110,6 +100,6 @@ A trigger lands on the event stream. A stage opens. The agent calls tools allow-
</Accordion>

<Accordion title="Budget">
Dollar ceilings on hosted execution (the platform compute that runs your zombie — separate from your model provider's bill) declared in `TRIGGER.md`. `daily_dollars` caps spend over a rolling 24-hour window; `monthly_dollars` caps the calendar month. Hitting either ceiling stops new stages from opening. Inference is on your model provider's bill, not on your usezombie invoice — your provider's own caps apply there.
Dollar ceilings on hosted execution (the platform compute that runs your zombie — separate from your model provider's bill) declared in `TRIGGER.md`. `daily_dollars` caps spend over a rolling 24-hour window; `monthly_dollars` caps the calendar month. Hitting either ceiling stops new stages from opening. During the launch free trial (through July 31, 2026) hosted-execution stages are billed at **$0**, so a budget ceiling won't stop a zombie for trial usage — these caps apply to the metered rate after the trial (see [pricing](https://usezombie.com/pricing)). Inference is on your model provider's bill, not on your usezombie invoice — your provider's own caps apply there.
</Accordion>
</AccordionGroup>
53 changes: 0 additions & 53 deletions contributing/architecture.mdx

This file was deleted.

71 changes: 0 additions & 71 deletions contributing/development.mdx

This file was deleted.

Loading
Loading