CLI
Read Birdie recording signals from your terminal - console logs, network requests, user events, transcripts, metadata, and frames. Built for shell scripts, CI jobs, and AI coding agents.
The CLI reads the same data through the same permissions as the MCP server: it is MCP over a different transport. If your agent connects over MCP you may not need the CLI at all; reach for it when you want to pipe recording data through standard tools (grep, jq), script it in CI, or hand an agent a plain binary instead of an MCP connection.
Install
curl -fsSL https://cli.birdie.so/install.sh | shThe installer detects your OS and architecture, verifies the download against its SHA-256 checksum, and installs to /usr/local/bin (or ~/.local/bin when that isn't writable). No runtime dependencies — it's a single static binary.
Options, via environment variables:
BIRDIE_VERSION
Install a specific version, e.g. v0.2.3 (default: latest)
INSTALL_DIR
Install somewhere else, e.g. INSTALL_DIR=~/bin
Download the windows_amd64.zip archive for the latest version from https://cli.birdie.so/releases/<version>/ (the current version is at cli.birdie.so/releases/latest), unzip it, and put birdie.exe on your PATH.
Updating: re-run the install command — it always fetches the latest version.
Uninstalling: delete the binary and, if you logged in, the config file at ~/.config/birdie/ (%APPDATA%\birdie\ on Windows).
Authenticate
The CLI uses your personal access token — the same one the MCP server accepts. Create one in Settings → AI agents & CLI, then:
birdie auth loginPaste the token at the prompt (or pass it with --token). The token is verified against the API before it's saved — a wrong paste is rejected on the spot, never stored. It's then kept with owner-only permissions in ~/.config/birdie/config.json (%APPDATA%\birdie\config.json on Windows).
birdie auth status shows whether a token is configured and where it came from (--check also verifies it against the API); birdie auth logout removes the stored token.
birdie auth status shows whether a token is configured and where it came from; birdie auth logout removes the stored token.
First steps
Every command accepts a recording in any form you have at hand: the numeric id, the uuid, the short public code (e.g. w3uqNNG), or a pasted share URL.
Commands
birdie list
Find recordings by title, ticket, email, folder, or date
birdie console <rec>
Console logs — filter with --level error
birdie network <rec>
Network requests — filter by --status, --method, --host, --content-type; inspect one in full with --at
birdie repro <rec>
Reproduction steps: clicks, inputs, navigation. --full adds the starting context and any errors
birdie transcript <rec>
Spoken content, as text or WebVTT (--vtt)
birdie metadata <rec>
Browser, OS, page URL, duration, custom metadata
birdie scenes <rec>
Where the screen changed — a cheap visual index, no images
birdie frames <rec>
Still frames written to disk as images
birdie auth
login, status, logout
birdie version
Print the installed version
Every command also works written as birdie get <command> — both forms are identical. Run birdie <command> --help for the full flags of any command.
Global flags on every command:
--json
Emit raw JSON instead of formatted output
--quiet
Suppress progress messages on stderr
Inspecting a recording
Start wide, then narrow:
frames extracts an evenly spaced overview by default (--count, up to 12), a single moment with --at, or a window with --from/--to — times in milliseconds. Images land in the current directory unless --out says otherwise.
Finding recordings
birdie list filters your team's recordings, newest first:
--query
Title, tags, uuid, or custom metadata
--ticket
Recordings attached to a helpdesk ticket
--email
Recorded by, requested by, or customer email
--folder
Recordings in a folder
--date
Recording date: 2026-08-23, "2026-08-23 14", or ISO
--limit / --page
Paging (default 10 per page, max 20)
Scripting
Output. In a terminal you get formatted, human-readable output; progress and notes go to stderr so stdout stays clean when piped. Pass --json for the raw API response — the shape every script and agent should consume:
Pagination. The signal commands (console, network, events) page with a cursor. In JSON mode the response carries next_cursor when there is more; pass it back with --cursor (alias --after), or use --all to follow pagination to the end in one call.
Exit codes. Branch on the code, not on stderr text:
0
Success
1
Unexpected error
2
Bad invocation: unknown flag, missing argument
3
Not authenticated, or not permitted
4
No such recording in this workspace
5
The request was rejected as invalid
6
Birdie could not serve it; retrying may help
7
Success, but the recording has no data of this kind
Code 7 makes "no console logs" distinguishable from failure without parsing anything.
Environment variables.
BIRDIE_TOKEN
Authenticate without a config file; takes precedence over it
BIRDIE_NO_UPDATE_CHECK
Set to 1 to disable the daily update hint
Notes
The CLI sees exactly what your token's owner sees in the Birdie app - folder access rules and workspace permissions apply identically. It never exposes recordings the token owner couldn't open.
The CLI is read-only: it inspects recordings, it never creates, modifies, or deletes anything.
Recording data is redacted at source in the customer’s browser or our Chrome extension, before it ever leaves the browser. As a result, Birdie’s servers, CLI, MCP server, and app only ever see the redacted data.
Last updated