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
8 changes: 7 additions & 1 deletion api-reference/error-codes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Error codes
description: API error response fields and stable error codes.
type: reference
audience: user
verified: 2026-07-12
verified: 2026-07-16
product_version: 0.17.0
executable: false
---
Expand Down Expand Up @@ -156,6 +156,12 @@ A conflict response also contains `current_state`. Some errors contain `user_mes
| <span id="UZ-BUNDLE-004"></span>`UZ-BUNDLE-004` | 502 | Fleet Bundle fetch failed | We couldn't fetch that Fleet Bundle from GitHub. Check the source and try again. | Check Fleet Bundle files and limits before upload. |
| <span id="UZ-BUNDLE-005"></span>`UZ-BUNDLE-005` | 503 | Fleet Bundle storage unavailable | We couldn't store your Fleet Bundle right now. Try again shortly. | Check Fleet Bundle files and limits before upload. |

### Fleet catalog

| Code | HTTP | Title | Why and fix | Prevent |
|---|---|---|---|---|
| <span id="UZ-CATALOG-002"></span>`UZ-CATALOG-002` | 409 | Cannot publish a fleet with no bundle | This entry has no bundle, so it has nothing to publish. Fetch the bundle from its repository, then publish. | Fetch and review the bundle before publishing. |

### Secrets

| Code | HTTP | Title | Why and fix | Prevent |
Expand Down
21 changes: 21 additions & 0 deletions changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,27 @@ export const STAGE_SELF_MANAGED_M66 = "$0.0001";
agentsfleet is in **stealth-mode testing** and pre-production. APIs and agent behavior may change between releases without long deprecation windows. Email [agentsfleet@agentmail.to](mailto:agentsfleet@agentmail.to) if you want a hand calibrating an agent or to join as a design partner.
</Tip>

<Update label="Jul 14, 2026" tags={["What's new", "API", "UI"]}>
## The fleet catalog stops overstating itself, and operators can fix a mistyped repository in place

A catalog entry's status badge now always matches what a workspace will actually get, and an operator can correct an entry's name, repository, or ref without deleting it — keeping every piece of curated install-gate copy. Copy buttons across the dashboard now report a failed copy instead of pretending it worked, the dashboard counts every fleet state, and the live activity thread shows the tools a fleet calls and what each event cost.

## What's new

- **Draft-first onboarding** — creating or refetching a platform entry now returns it to draft. Publish it after review before any workspace can see or install it.
- **Edit a catalog entry's identity** — name, repository, and ref are editable from the catalog's Edit dialog. Changing the repository or ref discards the stored bundle and returns the entry to draft, because the stored bundle was built from the old repository; fetch and publish again to go live. Workspaces already running the fleet keep the exact bundle they installed. A rename survives the next bundle fetch, and so does a pinned ref — **Fetch update** now fetches at the ref the entry names instead of resetting it to the default branch.
- **An honest status column** — an entry that is published but holds no bundle now shows as **Broken** (it was shown as Published while being invisible to every workspace). Its help text says how to resolve it: fetch a bundle, or unpublish.
- **The admin button says what it does** — **Create fleet library** replaces "Add fleet", matching the workspace-side dialog; the page and navigation use the singular **Fleet library**.
- **Copy buttons everywhere a value wants copying** — bundle hashes (the full hash, not the visible preview), fleet and host identifiers, secret names, model identifiers, cron schedules, webhook URLs, approval action identifiers, and one-time credentials. A failed clipboard write is reported on the button and announced to screen readers — previously several surfaces showed "Copied" or nothing at all when the write failed, which could cost you a one-time runner token or API key.
- **The dashboard counts every fleet** — installing and killed fleets now appear in the summary tiles; previously they were counted nowhere.
- **The live thread shows tool calls and cost** — each fleet response lists the tools it called with their durations while it works, and event history rows show tokens and wall time.

## API reference

`PATCH /v1/admin/fleet-libraries/{id}` additionally accepts `name`, `source_repo`, and `source_ref`. A request whose `source_repo` or `source_ref` differs from the stored value sets `content_hash` to null and `visibility` to `draft` atomically; re-sending the stored value is a no-op. A request that changes the source and sets `published: true` in the same call is refused with `UZ-CATALOG-002` (there is no bundle to publish by the time the publish would apply). Malformed sources are refused with `UZ-BUNDLE-001` using the same validation as onboarding. The entry identifier is never patchable.
Comment thread
greptile-apps[bot] marked this conversation as resolved.
Comment thread
greptile-apps[bot] marked this conversation as resolved.

</Update>

<Update label="Jul 12, 2026" tags={["What's new", "API"]}>
## Platform operators onboard fleets from the dashboard, and four prebuilt fleets are ready to install

Expand Down
32 changes: 29 additions & 3 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,16 @@
"group": "Workspaces",
"pages": [
"POST /v1/workspaces",
"GET /v1/workspaces/{workspace_id}/events"
"GET /v1/workspaces/{workspace_id}/events",
"GET /v1/workspaces/{workspace_id}/events/stream",
"GET /v1/workspaces/{workspace_id}/onboarding"
]
},
{
"group": "Workspace preferences",
"pages": [
"GET /v1/workspaces/{workspace_id}/preferences",
"PUT /v1/workspaces/{workspace_id}/preferences/{pref_key}"
]
},
{
Expand Down Expand Up @@ -231,6 +240,7 @@
"pages": [
"GET /v1/workspaces/{workspace_id}/fleets",
"POST /v1/workspaces/{workspace_id}/fleets",
"GET /v1/workspaces/{workspace_id}/fleets/{fleet_id}",
"PATCH /v1/workspaces/{workspace_id}/fleets/{fleet_id}",
"DELETE /v1/workspaces/{workspace_id}/fleets/{fleet_id}"
]
Expand All @@ -239,9 +249,12 @@
"group": "Fleet library",
"pages": [
"GET /v1/fleets/bundles",
"GET /v1/admin/fleet-libraries",
"GET /v1/workspaces/{workspace_id}/fleet-libraries",
"POST /v1/admin/fleet-libraries",
"POST /v1/workspaces/{workspace_id}/fleet-libraries"
"POST /v1/workspaces/{workspace_id}/fleet-libraries",
"PATCH /v1/admin/fleet-libraries/{id}",
"DELETE /v1/admin/fleet-libraries/{id}"
]
},
{
Expand All @@ -253,7 +266,20 @@
{
"group": "Fleet memories",
"pages": [
"GET /v1/workspaces/{workspace_id}/fleets/{fleet_id}/memories"
"GET /v1/workspaces/{workspace_id}/fleets/{fleet_id}/memories",
"DELETE /v1/workspaces/{workspace_id}/fleets/{fleet_id}/memories/{key}"
]
},
{
"group": "Fleet schedules",
"pages": [
"GET /v1/workspaces/{workspace_id}/fleets/{fleet_id}/schedules",
"POST /v1/workspaces/{workspace_id}/fleets/{fleet_id}/schedules",
"GET /v1/workspaces/{workspace_id}/fleets/{fleet_id}/schedules/{schedule_id}",
"PATCH /v1/workspaces/{workspace_id}/fleets/{fleet_id}/schedules/{schedule_id}",
"DELETE /v1/workspaces/{workspace_id}/fleets/{fleet_id}/schedules/{schedule_id}",
"POST /v1/workspaces/{workspace_id}/fleets/{fleet_id}/schedules/{schedule_id}:sync",
"POST /v1/ingress/qstash/schedules"
]
},
{
Expand Down
20 changes: 16 additions & 4 deletions fleets/library.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,25 @@ New fleets install only by library identifier. Local files can update an existin

## Onboard a platform entry

Platform entries are added from the dashboard at **Fleet libraries**, under Configuration. The page is visible only to an operator whose session carries the `platform-library:write` scope. Everyone else is redirected, and the API refuses the request independently.
Platform entries are added from the dashboard at **Fleet library**, under Configuration, with **Create fleet library**. The page is visible only to an operator whose session carries the `platform-library:write` scope. Everyone else is redirected, and the API refuses the request independently.

Enter the repository as `owner/repo`. `agentsfleet` fetches the repository, validates the bundle, stores it, and adds the catalog row. The entry then appears in every workspace's library, and any workspace can install it.
Enter the repository as `owner/repo`. `agentsfleet` fetches the repository, validates the bundle, stores it, and adds the catalog row **as a draft**. No workspace can see or install a draft; publishing is the only door to a workspace's library.
Comment thread
greptile-apps[bot] marked this conversation as resolved.

A platform entry's identifier comes from the `name` in the bundle's `SKILL.md`, not from the repository path you type. Keep the repository name, the `SKILL.md` name, and the `TRIGGER.md` name identical. When they differ, `agentsfleet` rejects the bundle or files it under an identifier you did not expect.

Onboarding the same repository twice updates the existing entry. It does not create a second one.
Onboarding the same repository twice updates the existing entry. It does not create a second one. A refetch always returns the entry to draft, so a newer bundle never reaches workspaces unreviewed.

## Edit a platform entry

An entry's name, repository, and ref are editable in place from the catalog's **Edit** dialog, alongside its description and the install-gate copy for each credential. The identifier is not editable — installed fleets reference it.

Changing the repository or ref discards the stored bundle and returns the entry to draft. The stored bundle was built from the old repository, and an entry never advertises a source it is not serving. Fetch the bundle again, then publish.

Workspaces already running the fleet are unaffected. Each install keeps the exact bundle it installed.

A rename survives the next bundle fetch, as the description and credential copy always have. A pinned ref survives it too: **Fetch update** fetches at the ref the entry names, rather than resetting the entry to the repository's default branch. Credential copy is pruned to the credentials the bundle actually declares, so a credential the fleet no longer requests does not linger in the dialog.

An entry that is published but holds no bundle shows as **Broken** in the catalog. It is invisible to every workspace; fetch a bundle or unpublish it.

## Prebuilt fleets

Expand All @@ -59,7 +71,7 @@ Four fleets ship as platform entries. Each is a public repository under `agentsf
| `zoho-sprint-daily-summarizer` | Summarizes the day's Zoho Sprints activity and posts a digest. | `zoho` |
| `zoho-recruiter-daily-summarizer` | Summarizes the day's Zoho Recruit pipeline and posts a digest. | `zoho_recruit` |

A prebuilt fleet appears in your library only after an operator onboards it. Until then the catalog knows its name but holds no bundle, and it does not show in the gallery.
A prebuilt fleet appears in your library only after an operator onboards and publishes it. Until then it does not show in the gallery.

## Limits

Expand Down
Loading