Skip to main content
The Salty CLI talks to the same REST API as the SDK and MCP server — see trysalty.com for the product overview and pricing. It exists for the bits a human still does once in a while: creating an API key, eyeballing usage, registering a webhook, tailing the call log when a deploy goes sideways.

Install

Published on npm (MIT-licensed): npmjs.com/package/salty-cli.

Hosts

Every command takes --api <url> or reads $SALTY_API from the environment. Defaults: https://api.trysalty.com.

Login

Opens a browser, runs the standard OAuth 2.1 + PKCE flow against $SALTY_API/oauth/authorize, and stores the resulting token. Storage prefers the OS keychain (macOS Keychain / Windows Credential Vault / libsecret on Linux); if the keychain isn’t available (headless, CI), it falls back to ~/.config/salty/credentials.json with 0600 perms. salty logout forgets credentials for the current host.

Identity + usage

API keys

People, companies, deals

search takes a structured --filter (JSON): operators equals | not_equals | contains | gt | gte | lt | lte | is_null, combined with {"and":[…]} / {"or":[…]}; address custom attributes via custom_attributes.<key>. --limit, --sort, and --expand (people/deals) are also accepted. notes, tasks, activities, and custom-objects follow the same REST shape via the SDK or curl.

Schema

--display-name defaults to a Title-Case version of --key.

Webhooks

salty webhooks add prints the whsec_… signing secret once — store it the same way you store an API key.

Logs

Dumps the last 100 API calls then polls every 2s for new ones. Ctrl-C exits cleanly.

JSON output

Every command accepts --json to dump the raw response, useful for piping into jq: