Fleet 2.9.1 is out.See what's new →
FleetFleet
Fleetctl developers

Fleetctl developer resources

Fleetctl developer resources for the product also called Fleet, at fleetctl.ai: public API documentation (Authentication, Endpoints, and Example requests), the OpenAPI spec, hosted Streamable HTTP MCP, a local stdio MCP server, and the official CLI. This page is the name-based index for agents and humans searching for "fleetctl developer resources", Fleetctl API docs, OpenAPI, auth, webhooks, or MCP.

When to use this

When to use Fleetctl — specific jobs, not generic marketing copy.

When to use this: Use Fleetctl when you need a jail around locally running agents or saved AI workflows with review, human sign-off, and an audit trail, or a fleet of coding agents with budgets, approvals, and merge gates. Agents run through Claude Code or OpenCode, including Claude, Codex, Grok, or any other model those harnesses support. Call the hosted MCP at https://app.fleetctl.ai/mcp or run `fleet mcp serve` locally. Any MCP client (Claude Code, Codex, OpenCode, and others) can connect. Fleetctl is not a coding model.

Works with Claude Code and OpenCode — including models those harnesses run, such as Claude, Codex, and Grok.Fleetctl is not a coding model. Claude Code's agent view — sometimes called FleetView — is a different product; see Fleetctl for developers.

How to call Fleetctl: prefer hosted MCP https://app.fleetctl.ai/mcp or the same-host handshake https://fleetctl.ai/mcp. initialize and tools/list are public; tools/call requires OAuth. After the local binary is installed, run fleet mcp serve. REST discovery starts at /openapi.json.

Fastest install in Cursor: the button below writes the hosted MCP into ~/.cursor/mcp.json, then Cursor runs OAuth. CLI equivalent: fleet mcp install. Skills stay at /.well-known/agent-skills/index.json or fleet skills install.

Add Fleet MCP to Cursor

This is Fleetctl API documentation. Public discovery on fleetctl.ai needs no credential. Hosted workflow, license, Lessons, and MCP tools/call use OAuth. The OpenAPI spec is https://fleetctl.ai/openapi.json. Hosted MCP is https://app.fleetctl.ai/mcp and the same-host handshake is https://fleetctl.ai/mcp.

Authentication

Authentication for Fleetctl has two layers. Public discovery (/openapi.json, /api/health, /api/catalog, /mcp/tools.json, and MCP initialize/tools/list) needs no credential. Workflow, license, Lessons, and MCP tools/call require OAuth. There is no raw long-lived API key to paste.

  1. Start free at https://app.fleetctl.ai — no credit card and no contact-sales form for Business.
  2. Generate a registration code in the dashboard, then run fleet admin register. That issues the workload OAuth client. Humans use fleet login or the dashboard OAuth prompt.
  3. Hosted MCP clients follow OAuth protected resource metadata. Scopes include fleet:access and Lessons scopes. Unauthenticated tools/call returns HTTP 401 with WWW-Authenticate: Bearer resource_metadata=....

Fleetctl does not publish customer-facing outbound webhooks. Inbound GitHub webhooks are configured per installation on the control plane. There is no public webhook signature catalog because there is no public outbound webhook API.

Endpoints

Predictable URLs. Unknown /api/* paths return RFC 9457 application/problem+json. HTML pages also speak markdown via Accept: text/markdown or by appending .md to the path.

  • GET /openapi.jsonAuth: none. OpenAPI 3.1 specification. Every operation has an operationId, typed parameters, and response schemas.
  • GET /api/healthAuth: none. Public health JSON for Fleetctl discovery.
  • GET /api/v1/healthAuth: none. Versioned alias of /api/health.
  • GET /api/catalogAuth: none. Developer catalog of public docs, OpenAPI, MCP, and CLI URLs.
  • GET /.well-known/mcp.jsonAuth: none. Ora MCP product manifest with the public hosted tool listing.
  • GET /.well-known/api-catalog.jsonAuth: none. RFC 9727 API catalog linking OpenAPI, docs, and OAuth metadata.
  • GET /.well-known/oauth-protected-resourceAuth: none. OAuth protected-resource metadata for the hosted MCP.
  • GET /mcp/tools.jsonAuth: none. Static MCP tools/list catalog (same tools as POST /mcp tools/list).
  • POST /mcpAuth: none for initialize, ping, and tools/list; OAuth Bearer for tools/call. Same-host Streamable HTTP MCP. Unauthenticated tools/call returns 401 with WWW-Authenticate.
  • POST /.well-known/mcpAuth: none for initialize, ping, and tools/list; OAuth Bearer for tools/call. Alternate same-host MCP handshake path, proxied to the hosted origin.
  • GET /llms.txtAuth: none. Agent index: when to use Fleetctl, developer resources, and machine-readable URLs.
  • GET /installAuth: none. Official Fleetctl CLI installer script for the `fleet` binary.
MethodPathAuthDescription
GET/openapi.jsonnoneOpenAPI 3.1 specification. Every operation has an operationId, typed parameters, and response schemas.
GET/api/healthnonePublic health JSON for Fleetctl discovery.
GET/api/v1/healthnoneVersioned alias of /api/health.
GET/api/catalognoneDeveloper catalog of public docs, OpenAPI, MCP, and CLI URLs.
GET/.well-known/mcp.jsonnoneOra MCP product manifest with the public hosted tool listing.
GET/.well-known/api-catalog.jsonnoneRFC 9727 API catalog linking OpenAPI, docs, and OAuth metadata.
GET/.well-known/oauth-protected-resourcenoneOAuth protected-resource metadata for the hosted MCP.
GET/mcp/tools.jsonnoneStatic MCP tools/list catalog (same tools as POST /mcp tools/list).
POST/mcpnone for initialize, ping, and tools/list; OAuth Bearer for tools/callSame-host Streamable HTTP MCP. Unauthenticated tools/call returns 401 with WWW-Authenticate.
POST/.well-known/mcpnone for initialize, ping, and tools/list; OAuth Bearer for tools/callAlternate same-host MCP handshake path, proxied to the hosted origin.
GET/llms.txtnoneAgent index: when to use Fleetctl, developer resources, and machine-readable URLs.
GET/installnoneOfficial Fleetctl CLI installer script for the `fleet` binary.
Method Path                                      Auth
GET   /openapi.json                             none
GET   /api/health                               none
GET   /api/v1/health                            none
GET   /api/catalog                              none
GET   /.well-known/mcp.json                     none
GET   /.well-known/api-catalog.json             none
GET   /.well-known/oauth-protected-resource     none
GET   /mcp/tools.json                           none
POST  /mcp                                      none for initialize, ping, and tools/list; OAuth Bearer for tools/call
POST  /.well-known/mcp                          none for initialize, ping, and tools/list; OAuth Bearer for tools/call
GET   /llms.txt                                 none
GET   /install                                  none

Example requests

Copy-pasteable curls, JSON bodies, and the RFC 9457 error envelope.initialize and tools/list are public; tools/call without a Bearer token is HTTP 401.

# Fleetctl developer resources — example requests

# OpenAPI spec
curl -sS https://fleetctl.ai/openapi.json

# Public health
curl -sS https://fleetctl.ai/api/health
# →
{
  "status": "ok",
  "product": "Fleetctl",
  "docs": "https://fleetctl.ai/docs/api-reference/",
  "openapi": "https://fleetctl.ai/openapi.json",
  "mcp": "https://app.fleetctl.ai/mcp"
}

# JSON error (unknown /api path)
curl -sS https://fleetctl.ai/api/does-not-exist
# → HTTP 404 application/problem+json
{
  "type": "https://fleetctl.ai/docs/api-reference/#errors",
  "title": "Not Found",
  "status": 404,
  "code": "not_found",
  "detail": "No Fleetctl public API operation matches this path.",
  "instance": "/api/does-not-exist",
  "resolution": "GET https://fleetctl.ai/openapi.json and pick an advertised operationId, or open https://fleetctl.ai/developers/."
}

# MCP initialize (public)
curl -sS -X POST https://fleetctl.ai/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'

# MCP tools/list (public)
curl -sS -X POST https://fleetctl.ai/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

# MCP tools/call without OAuth → 401 + WWW-Authenticate
curl -sS -D- -X POST https://fleetctl.ai/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"workflows.list","arguments":{}}}'

# Official CLI
curl -fsSL https://fleetctl.ai/install | sh
fleet version
fleet mcp serve

Related developer resources

OpenAPI, MCP, CLI, sandbox, and the longer runtime reference.

Fleetctl documentation

Install the local binary and run governed workflows.

/docs/

Fleetctl API documentation

Authentication, Endpoints, and Example requests.

/docs/api/

Fleetctl API reference

Authentication, JSON errors, MCP transports, and example requests.

/docs/api-reference/

OpenAPI specification

Machine-readable operations, typed parameters, and response schemas.

/openapi.json

Fleetctl MCP tools

Local stdio and hosted Streamable HTTP MCP for Claude Code, Codex, OpenCode, and other clients.

/docs/mcp-tools/

Fleetctl CLI reference

Official `fleet` binary: install, register, and operate a fleet.

/docs/cli-reference/

Getting started

Self-serve free tier, registration code, and first local install.

/docs/getting-started/

Fleetctl demo sandbox

No-account canned workflow. Jail proof at /security#containment.

/sandbox/

llms.txt

When to use Fleetctl and the agent-facing index of public pages.

/llms.txt

Official CLI

GitHub Releases and the curl installer. Not the npm name fleetctl.

The official Fleetctl CLI is the locally installed `fleet` binary from GitHub Releases, installed with `curl -fsSL https://fleetctl.ai/install | sh`. The npm package named `fleetctl` is a different product (Fleet Device Management at fleetdm.com) and is not this CLI. Fleetctl is not published on npm, PyPI, or Homebrew.

curl -fsSL https://fleetctl.ai/install | sh
fleet version
# docs: https://fleetctl.ai/docs/cli-reference/
# binaries: https://github.com/Feral-Intelligence/fleet/releases

CLI binaries: GitHub Releases. Installer and checksums: /downloads. Command reference: /docs/cli-reference.

Frequently asked questions

Where is the Fleetctl OpenAPI spec?

https://fleetctl.ai/openapi.json — every public operation has a unique operationId, a description, typed parameters, and response schemas for function calling.

How do I authenticate to the Fleetctl API?

Self-serve: start free at https://app.fleetctl.ai, then generate a registration code in the dashboard. That code issues the workload OAuth client — Fleetctl's API credential. There is no raw long-lived API key to paste. Public sandbox endpoints (/api/health, /openapi.json) need no credential. Hosted MCP: initialize and tools/list are public; tools/call uses OAuth at https://fleetctl.ai/.well-known/mcp.

Does Fleetctl have a free sandbox?

Yes. https://fleetctl.ai/sandbox/ is a no-account canned workflow run. The free tier (500 hosted starts) at https://app.fleetctl.ai is self-serve and does not require a credit card or a sales call.

How do I install the Fleetctl CLI?

curl -fsSL https://fleetctl.ai/install | sh installs the official `fleet` binary from GitHub Releases. See https://fleetctl.ai/downloads/. The npm package named fleetctl is a different product (FleetDM) and is not this CLI. Fleetctl is not published on npm, PyPI, or Homebrew.