CLI
Wilmo in your terminal
@wilmo/cli runs every public operation as a command. It talks to the same MCP server as Claude, so it can do exactly what your key or sign-in may do.Install#
Node.js 20 or newer. Run it with npx, or install it once.
npx @wilmo/cli login
# or
npm install -g @wilmo/cli
wilmo loginSign in#
wilmo login opens your browser. Sign in to Wilmo as an organization admin and allow the Wilmo CLI. It then reads every team of the organization, read-only. The sign-in is stored in ~/.config/wilmo/credentials.json, readable by you only, and refreshes itself.
To use a team API key or an organization key instead, pass it, or read it from stdin with -:
wilmo login --api-key - < key.txt
# or, for one shell or CI, without storing anything
export WILMO_API_KEY=...wilmo whoami shows who you are signed in as. wilmo logout revokes the sign-in and forgets it.
Commands#
Run a tool as wilmo <resource> <keyword>, with its input as --field value. The CLI matches the tool by its name, so tickets list runs list_tickets. When a name is ambiguous it lists the candidates instead of guessing.
# What you may call
wilmo tools
# The teams of your organization
wilmo teams list
# Open tickets about refunds, newest first
wilmo tickets list --q refund --status open --limit 10
# One conversation
wilmo ticket get --ticket_id <ticket_id>
# Any tool by its exact name, input as JSON
wilmo call list_tickets --json '{"channel":"email","limit":5}'Every public command, and the tool it runs:
| wilmo teams list | list_teams | List the teams of the organization |
| wilmo tickets list | list_tickets | Search and filter support tickets |
| wilmo ticket get | get_ticket | Read one ticket and its conversation |
| wilmo skills list | list_skills | List skills. Needs an API key with read:skills. |
| wilmo tags list | list_tags | List tags. Needs an API key with read:tags. |
| wilmo ticket-analytics get | get_ticket_analytics | Get ticket analytics for a period |
| wilmo ticket-counts get | get_ticket_counts | Get ticket counts for the dashboard. Needs an API key with read:team. |
Every operation in the API reference shows its CLI command and its flags.
Output#
In a terminal the CLI prints a table. In a pipe it prints JSON, so it composes with jq. Choose with --output.
wilmo tickets list --status open --output json | jq '.tickets[].subject'Versions#
Pin the API version a script was written for, so its output never changes under it. The first version is 2026-11-06.
wilmo tickets list --api-version 2026-11-06Flags#
| --url <origin> | The Wilmo to talk to. Default https://app.wilmo.ai (env WILMO_URL). |
| --api-version <date> | Sends Wilmo-Version: <date>. Default: the version your key or sign-in is pinned to. |
| --output json|table | Default: a table in a terminal, JSON in a pipe. |
| --json '{...}' | Tool input as JSON. --field flags are applied on top. |
WILMO_API_KEY is used as-is and nothing is written to disk.