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
42 changes: 0 additions & 42 deletions agents/templates.mdx

This file was deleted.

57 changes: 35 additions & 22 deletions api-reference/error-codes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ Every `4xx` and `5xx` response uses `Content-Type: application/problem+json`:
```json
{
"docs_uri": "https://docs.agentsfleet.net/api-reference/error-codes#UZ-AGT-009",
"title": "Agent not found",
"detail": "No agent with id '0198a7ba-2c1d-7f08-8a45-3e9b6d2f1c70' in this workspace.",
"title": "Fleet not found",
"detail": "No fleet with id '0198a7ba-2c1d-7f08-8a45-3e9b6d2f1c70' in this workspace.",
"error_code": "UZ-AGT-009",
"request_id": "0198a7b5-3c8d-7e41-9a2b-6f1d4c7e8a05"
}
Expand Down Expand Up @@ -89,7 +89,7 @@ Tenant- and workspace-scoped API keys (`agt_t` / `agt_a` prefixes) managed via `

| Code | HTTP | Title | Common Causes |
|---|---|---|---|
| `UZ-AGENT-001` | 404 | Agent key not found | Agent key (`agt_a`) lookup — verify the `agent_key_id`. Distinct namespace from the tenant `UZ-APIKEY-*` codes below. |
| `UZ-FLEETKEY-001` | 404 | Fleet key not found | Fleet key (`agt_a`) lookup — verify the `fleet_key_id`. Distinct namespace from the tenant `UZ-APIKEY-*` codes below. |
| `UZ-APIKEY-001` | 401 | Invalid API key | Key is invalid or revoked |
| `UZ-APIKEY-003` | 404 | API key not found | No key matches the supplied id for this tenant. Verify with `GET /v1/api-keys`. |
| `UZ-APIKEY-004` | 401 | API key has been revoked | Revoked key can no longer authenticate. Mint a replacement with `POST /v1/api-keys`. |
Expand Down Expand Up @@ -122,42 +122,55 @@ Load-shedding on a saturated API instance — back off and retry.

| Code | HTTP | Title | Common Causes |
|---|---|---|---|
| `UZ-WH-001` | 404 | Agent not found for webhook | Webhook routing found no matching agent |
| `UZ-WH-001` | 404 | Fleet not found for webhook | Webhook routing found no matching fleet |
| `UZ-WH-002` | 400 | Malformed webhook | Webhook body is missing required fields |
| `UZ-WH-010` | 401 | Invalid webhook signature | HMAC or Svix signature verification failed. Verify the `secret_ref` vault entry matches the signing secret configured with the provider. |
| `UZ-WH-011` | 401 | Stale webhook timestamp | Webhook timestamp is older than 5 minutes (replay protection). Ensure the sender clock is not skewed. |
| `UZ-WH-020` | 401 | Webhook credential not configured | No webhook credential is configured for this agent's source. Run `agentsfleet credential add <source> --data=@-` with `{ "webhook_secret": "..." }` in the agent's workspace, then resend. |
| `UZ-WH-020` | 401 | Webhook credential not configured | No webhook credential is configured for this fleet's source. Run `agentsfleet credential add <source> --data=@-` with `{ "webhook_secret": "..." }` in the fleet's workspace, then resend. |
| `UZ-WH-030` | 413 | Webhook payload too large | Webhook body exceeds the 1 MiB ingest limit. Reduce the payload at the source or filter fields before forwarding. |

## Tool

| Code | HTTP | Title | Common Causes |
|---|---|---|---|
| `UZ-TOOL-005` | 400 | Unknown tool | Tool name not recognized — typo against the [Tools catalogue](/agents/tools) is the usual cause. |
| `UZ-TOOL-005` | 400 | Unknown tool | Tool name not recognized — typo against the [Tools catalogue](/fleets/tools) is the usual cause. |

<Note>
**Registered, not always emitted.** `UZ-TOOL-005` is registered, but in v2 today a missing or misspelled tool usually surfaces as a NullClaw-level "no such tool" message in the activity stream rather than this wire code. Treat the code as authoritative for *meaning* if you see it, but audit `agentsfleet logs <agent_id>` for the actual error text.
**Registered, not always emitted.** `UZ-TOOL-005` is registered, but in v2 today a missing or misspelled tool usually surfaces as a NullClaw-level "no such tool" message in the activity stream rather than this wire code. Treat the code as authoritative for *meaning* if you see it, but audit `agentsfleet logs <fleet_id>` for the actual error text.
</Note>

## Agent
## Fleet

| Code | HTTP | Title | Common Causes |
|---|---|---|---|
| `UZ-AGT-003` | 424 | Agent credential missing | A required vault credential is absent. Add it with `agentsfleet credential add <name>`. |
| `UZ-AGT-004` | 500 | Agent claim failed | Agent could not be claimed from the database. Verify the `agent_id` exists and status is `active`. |
| `UZ-AGT-006` | 409 | Agent name already exists | Name taken. Kill the existing agent first, then re-install. |
| `UZ-AGT-008` | 400 | Invalid agent config | `TRIGGER.md` config_json fails schema validation. Verify trigger, tools, credentials, and budget fields. |
| `UZ-AGT-009` | 404 | Agent not found | No agent with this ID in the workspace. |
| `UZ-AGT-010` | 409 | Agent state transition not allowed | The requested lifecycle action is not valid from the agent's current state. The response detail names the specific transition that was refused. |
| `UZ-AGT-011` | 400 | SKILL.md and TRIGGER.md disagree on `name:` | Top-level `name:` must match across both files. One identity per agent bundle. |
| `UZ-AGT-012` | 409 | Agent is paused | Agent is not active and refuses new work. Resume with `agentsfleet resume <agent>`, then retry. |
| `UZ-AGT-003` | 424 | Fleet credential missing | A required vault credential is absent. Add it with `agentsfleet credential add <name>`. |
| `UZ-AGT-004` | 500 | Fleet claim failed | Fleet could not be claimed from the database. Verify the `fleet_id` exists and status is `active`. |
| `UZ-AGT-006` | 409 | Fleet name already exists | Name taken. Kill the existing fleet first, then re-install. |
| `UZ-AGT-008` | 400 | Invalid fleet config | `TRIGGER.md` config_json fails schema validation. Verify trigger, tools, credentials, and budget fields. |
| `UZ-AGT-009` | 404 | Fleet not found | No fleet with this ID in the workspace. |
| `UZ-AGT-010` | 409 | Fleet state transition not allowed | The requested lifecycle action is not valid from the fleet's current state. The response detail names the specific transition that was refused. |
| `UZ-AGT-011` | 400 | SKILL.md and TRIGGER.md disagree on `name:` | Top-level `name:` must match across both files. One identity per fleet bundle. |
| `UZ-AGT-012` | 409 | Fleet is paused | Fleet is not active and refuses new work. Resume with `agentsfleet resume <fleet>`, then retry. |

## Fleet Bundle

Import + snapshot of a Fleet Bundle (the SKILL.md/TRIGGER.md package behind a Fleet) via `POST /v1/workspaces/{workspace_id}/fleets/bundles/snapshots`.

| Code | HTTP | Title | Common Causes |
|---|---|---|---|
| `UZ-BUNDLE-001` | 400 | Invalid Fleet Bundle | The supplied bundle is missing `SKILL.md` or contains unsafe, oversized, or malformed files. |
| `UZ-BUNDLE-002` | 404 | Fleet Bundle not found | No Fleet Bundle snapshot matches the supplied `bundle_id` in this workspace. |
| `UZ-BUNDLE-003` | 424 | Fleet Bundle credentials missing | Add the missing workspace credentials before installing this bundle. |
| `UZ-BUNDLE-004` | 502 | Fleet Bundle fetch failed | The bundle source could not be fetched from GitHub — the repository may be missing or private, or GitHub may be unreachable. Verify the source reference and retry. |
| `UZ-BUNDLE-005` | 503 | Fleet Bundle storage unavailable | Snapshot storage is not configured or is unavailable, so the validated bundle could not be stored. Retry later or contact the operator. |
| `UZ-BUNDLE-006` | 429 | Too many Fleet Bundle imports in flight | This instance is at its concurrent import ceiling. Honor the `Retry-After` header and retry with backoff. |

## Integration grants

| Code | HTTP | Title | Common Causes |
|---|---|---|---|
| `UZ-GRANT-001` | 403 | No integration grant for service | This agent has no approved grant for the target service. Request one with `POST /v1/agents/{id}/integration-requests`. |
| `UZ-GRANT-002` | 404 | Integration grant not found | No grant with that id exists for this agent, or it was already revoked. List current grants with `GET /v1/workspaces/{workspace_id}/agents/{agent_id}/integration-grants`. |
| `UZ-GRANT-001` | 403 | No integration grant for service | This fleet has no approved grant for the target service. Request one with `POST /v1/workspaces/{workspace_id}/fleets/{fleet_id}/integration-requests`. |
| `UZ-GRANT-002` | 404 | Integration grant not found | No grant with that id exists for this fleet, or it was already revoked. List current grants with `GET /v1/workspaces/{workspace_id}/fleets/{fleet_id}/integration-grants`. |

## Approval gate

Expand All @@ -181,7 +194,7 @@ Load-shedding on a saturated API instance — back off and retry.

| Code | HTTP | Title | Common Causes |
|---|---|---|---|
| `UZ-MEM-002` | 404 | Agent not found for memory op | The `agent_id` on the memory call does not exist in the workspace. A cross-workspace `agent_id` also returns this 404 (not a 403) so existence is not leaked. |
| `UZ-MEM-002` | 404 | Fleet not found for memory op | The `fleet_id` on the memory call does not exist in the workspace. A cross-workspace `fleet_id` also returns this 404 (not a 403) so existence is not leaked. |
| `UZ-MEM-003` | 503 | Memory backend unavailable | Memory store is unreachable. Retry the trigger; if persistent, file an issue. |

## Startup
Expand Down Expand Up @@ -214,8 +227,8 @@ Execution-path failures from the sandboxed runner engine.
| `UZ-EXEC-009` | 500 | Execution startup posture failure | Execution startup posture check failed. Verify runner security config. |
| `UZ-EXEC-010` | 500 | Execution crash | The execution process crashed. Check logs for details. |
| `UZ-EXEC-011` | 403 | Landlock policy deny | A Landlock (or seccomp) policy denied a filesystem or syscall operation. |
| `UZ-EXEC-012` | 500 | Runner agent init failed | Runner agent initialization failed. Check configuration. |
| `UZ-EXEC-013` | 500 | Runner agent run failed | Runner agent execution failed. Check logs for details. |
| `UZ-EXEC-012` | 500 | Runner fleet init failed | Runner fleet initialization failed. Check configuration. |
| `UZ-EXEC-013` | 500 | Runner fleet run failed | Runner fleet execution failed. Check logs for details. |
| `UZ-EXEC-014` | 400 | Runner invalid config | Runner configuration is invalid. Check `config_json` fields. |

## Runner control plane
Expand All @@ -237,4 +250,4 @@ The runner ↔ control-plane lease protocol (`/v1/runner/*`). Codes a runner hos

## Removed surfaces

Pipeline v1 (`/v1/runs/*`, `/v1/specs`) was permanently removed — those endpoints now return **404** (the pre-2.0 convention), not a dedicated code. Use the agent event model instead. Webhook delivery to a paused agent, cross-agent memory scope, and the legacy CLI login error-map no longer have dedicated codes either; the live equivalents are `UZ-AGT-012` (paused), `UZ-MEM-002` (memory scope → 404), and the typed CLI login codes above.
Pipeline v1 (`/v1/runs/*`, `/v1/specs`) was permanently removed — those endpoints now return **404** (the pre-2.0 convention), not a dedicated code. Use the fleet event model instead. Webhook delivery to a paused fleet, cross-fleet memory scope, and the legacy CLI login error-map no longer have dedicated codes either; the live equivalents are `UZ-AGT-012` (paused), `UZ-MEM-002` (memory scope → 404), and the typed CLI login codes above.
6 changes: 3 additions & 3 deletions api-reference/introduction.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: 'API Reference'
description: 'agentsfleet Control Plane API — deploy, observe, and control agents programmatically.'
description: 'agentsfleet Control Plane API — deploy, observe, and control fleets programmatically.'
---

## Base URL
Expand All @@ -14,7 +14,7 @@ https://api.agentsfleet.net
All API endpoints require a Bearer token in the `Authorization` header, except health checks and the initial auth session creation.

```bash
curl https://api.agentsfleet.net/v1/workspaces/0198a7b0-3c2d-7f14-9a08-1b6e4d2f8c50/agents \
curl https://api.agentsfleet.net/v1/workspaces/0198a7b0-3c2d-7f14-9a08-1b6e4d2f8c50/fleets \
-H "Authorization: Bearer $AGENTSFLEET_API_KEY"
```

Expand Down Expand Up @@ -43,7 +43,7 @@ Error codes follow the `UZ-<DOMAIN>-NNN` scheme in the `error_code` field. Every

- **IDs** are UUIDv7.
- **Timestamps** are Unix milliseconds.
- **State transitions** are partial updates on the parent resource (e.g., `PATCH /v1/workspaces/{workspace_id}/agents/{agent_id}` with body `{status: "stopped"}`). Sub-resources (e.g., `/messages`, `/events`, `/events/stream`) handle data-flow operations.
- **State transitions** are partial updates on the parent resource (e.g., `PATCH /v1/workspaces/{workspace_id}/fleets/{fleet_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.

## Rate limits
Expand Down
12 changes: 6 additions & 6 deletions billing/budgets.mdx
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
---
title: "Budgets and cost control"
description: "Per-agent dollar ceilings, tenant-wide spend caps, and how debits work."
description: "Per-fleet dollar ceilings, tenant-wide spend caps, and how debits work."
---

agentsfleet enforces budgets at two levels: per-agent ceilings declared in `TRIGGER.md`, and a tenant-wide balance that every run debits against.
agentsfleet enforces budgets at two levels: per-fleet ceilings declared in `TRIGGER.md`, and a tenant-wide balance that every run 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://agentsfleet.net/pricing).
</Note>

## Per-agent ceilings (`daily_dollars` / `monthly_dollars`)
## Per-fleet ceilings (`daily_dollars` / `monthly_dollars`)

Every agent declares its own dollar ceilings in `TRIGGER.md`:
Every fleet declares its own dollar ceilings in `TRIGGER.md`:

```yaml
budget:
Expand All @@ -22,7 +22,7 @@ budget:
- `daily_dollars` caps spend over a rolling 24-hour window.
- `monthly_dollars` caps spend over the calendar month.

When either ceiling is reached the agent stops processing new events and a budget breach is recorded in the activity stream. This is the first line of defence — one bad prompt never becomes an infinite burn on a single agent.
When either ceiling is reached the fleet stops processing new events and a budget breach is recorded in the activity stream. This is the first line of defence — one bad prompt never becomes an infinite burn on a single fleet.

Per-event token and wall-clock caps are internal runtime controls. They are not user-configurable in `TRIGGER.md` today.

Expand All @@ -43,7 +43,7 @@ Set a monthly spend cap on your tenant from the billing page at [app.agentsfleet
Cancel an in-flight run at any time via CLI or API:

```bash
agentsfleet kill <agent_id>
agentsfleet kill <fleet_id>
```

Cancelling stops the run at the next lease renewal. The run time already elapsed is metered and debited — cancelling doesn't refund the work done so far. See [Credit deduction timing](#credit-deduction-timing) below for the full rule.
Expand Down
4 changes: 2 additions & 2 deletions billing/plans.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: "Plans"
description: "One credit-based model — the starter credit and how per-second run billing works."
---

agentsfleet has a single credit-based model. Every tenant gets the full platform — always-on agent hosting, the tool bridge, activity stream, webhook ingestion, kill switch — and pays from one shared credit wallet. There are no tiers to choose between or upgrade to.
agentsfleet has a single credit-based model. Every tenant gets the full platform — always-on fleet hosting, the tool bridge, activity stream, webhook ingestion, kill switch — and pays from one shared credit wallet. There are no tiers to choose between or upgrade to.

<Note>
**Free until July 31, 2026.** During the launch trial, hosted execution — every event receipt and run — is free. The billing details below describe charging **after** the trial. See [pricing](https://agentsfleet.net/pricing).
Expand All @@ -16,7 +16,7 @@ New tenants start with **$5 (500¢)** seeded into the tenant balance automatical
| Feature | Details |
|---------|---------|
| Starter credit | $5 (500¢), tenant-scoped |
| Agents per workspace | Unlimited |
| Fleets per workspace | Unlimited |
| Workspaces | Unlimited |
| Event processing | Included |
| Support | Community (Discord, GitHub) |
Expand Down
Loading
Loading