Skip to content

CLI reference

Package @nitpickhq/cli, command nitpick. Run it without installing: npx -y @nitpickhq/cli@latest <command>.

Configuration lives in ~/.config/nitpick/config.json (permissions 0600). Override with environment variables:

Variable Meaning
NITPICK_TOKEN Agent token (npt_...), used instead of the saved login
NITPICK_API_URL Address of the Nitpick API

Commands

Command What it does
nitpick login Log in through the browser. Prints a code, opens the page and waits. In the browser you create an account or log in, start the subscription if you have none, and press Allow. Then it saves the token.
nitpick logout Revoke the saved token on the server and remove it from your machine. If the server cannot be reached, the saved token is still removed and the message says it may still be valid there. Never revokes NITPICK_TOKEN.
nitpick whoami Show the account, the state of the subscription (active, grace, locked or inactive, with the end of the paid period and the renew address) and, from 80% of the limit, the reports used this month. --json for JSON.
nitpick init Link the current project to an app.
nitpick apps list List your apps with their open counts, and how many are locked.
nitpick apps create --name <name> --platform <swiftui|react-native> Create an app and print its public key.
nitpick feedback list List feedback. Filters below, plus --json.
nitpick feedback show <id> Show one report. --json, and --screenshot <path> to save the image.
nitpick feedback resolve <id> Mark a report resolved.
nitpick feedback reopen <id> Mark a report open again.
nitpick stats --app <id> Open counts by screen, element and app version.
nitpick settings show --app <id> Show which kinds of feedback are on and the texts per language. --json for JSON.
nitpick settings set --app <id> ... Change the settings. Flags below.
nitpick tokens list List the tokens of your account: name, start of the token, last use. The one in use is marked. --json for JSON.
nitpick tokens revoke <id> Revoke a token at once. --json for JSON.
nitpick mcp Start the MCP server on stdio.

Filters for feedback list

--app, --status open|resolved|all (default open), --kind general|specific, --screen, --element, --app-version, --platform ios|android, --since <ISO time>, --limit 1..100 (default 25).

Flags for settings set

--app <id> is required. Then at least one of:

  • --general on|off and --specific on|off: the two kinds of feedback. With both off, the tab disappears.
  • --footer <language>=<text>: the sentence under Send, for one language. Repeat the flag for more languages. An empty text (--footer nl=) removes it, so the component's own translation shows.
  • --thanks <language>=<text>: the thank-you after sending, the same way.
  • --json: prints {settings, changes: [{field, from, to}], note}.

Language codes are case sensitive: en, nl, de, fr, es, pt, it, pl, tr, ru, uk, sv, da, nb, ja, ko, zh-Hans, zh-Hant, ar, hi. Without a flag that changes something you get an error with the help text. The output shows the old and new value of each changed field, and this sentence: "Changes reach your users within a minute, the next time the app starts or comes back after more than an hour in the background." More in Settings.

Logging in

nitpick login asks the platform for a session, shows a code like ABCD-1234 and opens your browser. It says: "Opening your browser. Sign in or create an account there; if you have no subscription yet, you can start it on the same page." You log in or create an account, start the subscription if needed ($9 per month, excluding VAT where it applies), check the code and press Allow. The CLI polls every 2 seconds and the code is valid for 30 minutes. The token is returned exactly once, and only when the subscription runs. See Billing and limits.

The subscription in the output

  • In the states grace, locked and inactive every command writes one line to stderr, never to stdout, so --json output stays clean. For example: "Nitpick: the subscription has ended; new reports are locked (3 reports locked now). Renew:
    ".
  • From 80% of the monthly limit a second line says how many of the 2,000 reports are used, and at the limit that the tab is hidden until the first of the next month.
  • apps list, feedback list and stats add how many reports are locked, when that is more than 0. Locked reports are never shown.
  • At 402 you get "This report is locked until the subscription is renewed:
    " for a report, or "This needs an active subscription:
    " for creating an app or a token. Only renewing helps, so there is no advice to try again.
  • At 409 limit_reached (50 apps or 25 tokens) the message names what to clean up, with nitpick apps list or nitpick tokens list and nitpick tokens revoke <id>.

Example

nitpick feedback list --status open --screen Home --json
nitpick feedback show 7f3a9c1e --screenshot ./shot.png
nitpick feedback resolve 7f3a9c1e
nitpick settings set --app 3b1d --specific off --thanks nl="Bedankt, we kijken ernaar"
nitpick tokens list