fleets
Terminal CLI for Fleets. Per-site commands mirror the app UI tabs at https://fleets.run/app/<slug>/<tab>.
Install
npm install -g fleets
Authenticate
fleets login
Picks between two methods:
- browser (default) — device flow: CLI prints a URL + 8-character code, auto-opens your browser, you click authorize, CLI finishes automatically.
- paste a token — mint one in app → account → cli, paste it in.
Skip the prompt with a flag:
fleets login --browser # force device flow
fleets login --paste # force token paste
fleets login --token fl_xxxxxxxxxxxxxxxx # paste in one shot (CI)
export FLEETS_TOKEN=fl_xxxxxxxxxxxxxxxx # skip login entirely
Slug-first dispatch
The most intuitive way to run commands is to put the site slug first, like you're "inside" that site:
fleets fightbets # GA4 summary (defaults to stats)
fleets fightbets sources # top traffic sources
fleets fightbets funnel session_start view # conversion funnel
fleets fightbets seo --range 30d # GSC summary, last 30 days
fleets fightbets open settings # print app URL
The legacy form fleets <command> <slug> (e.g. fleets sources fightbets) still works.
Commands
Setup
Analytics (per-site)
All accept --range (default 7d) and --json. Commands with top-N tables also accept --limit.
Utility
MCP server
The same package ships an MCP server, fleets-mcp,
so agents (Claude Code, Claude Desktop, Cursor, …) can pull your live Fleets
analytics as tools. It reuses the CLI's auth — run fleets login once (or set
FLEETS_TOKEN) and the MCP server picks up the same token from ~/.fleets/config.json.
Add it to a client
Claude Code:
claude mcp add fleets -- fleets-mcp
Claude Desktop / Cursor (claude_desktop_config.json or .cursor/mcp.json):
{
"mcpServers": {
"fleets": {
"command": "fleets-mcp"
}
}
}
No global install? Use npx with the fleets-mcp launcher package:
{
"mcpServers": {
"fleets": {
"command": "npx",
"args": ["-y", "fleets-mcp"]
}
}
}
If you authenticate via env instead of fleets login, add
"env": { "FLEETS_TOKEN": "fl_xxx" } to the server entry.
Tools
All read-only except log_change (writes a change-log entry). Every analytics
tool takes a slug (from list_sites) and an optional range (7d, 30d, 24h).
Environment variables
Range format
All --range flags accept:
7d— last 7 days30d— last 30 days90d— last 90 days24h— last 24 hours (rounds to 1 day)
Requirements
- Node.js >= 22 (LTS)
- Works on macOS, Linux, Windows