npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

salty-cli

v0.2.2

Published

The CLI for Salty — the CRM for AI agents. Login, manage API keys, people, companies, deals, schema, search, webhooks, usage, and tail logs from the terminal.

Downloads

403

Readme

salty-cli

npm version

The CLI for Salty — the CRM your AI agents can run.

npm install -g salty-cli
salty login

What it does

  • salty login / salty logout — browser OAuth 2.1 + PKCE flow; stores token in your OS keychain (macOS Keychain / Windows Credential Vault / libsecret on Linux). Falls back to ~/.config/salty/credentials.json (0600) on headless systems.
  • salty whoami — current workspace + plan + period usage.
  • salty keys list | create --name | revoke <id> — manage sk_live_… API keys.
  • salty people list [--limit] | get <id> | create --email --first-name --last-name | search --filter <json> — manage people records.
  • salty companies list | get <id> | create --name --domain | search --filter <json> — manage companies.
  • salty deals list | get <id> | create --name --stage --value-cents --currency | search --filter <json> — manage deals.
  • search takes a structured --filter JSON (operators equals|not_equals|contains|gt|gte|lt|lte|is_null, and/or, custom_attributes.<key>), plus --limit/--sort/--expand.
  • salty schema show | add-attribute --object --key --type — extend the workspace schema (lenient validation; see docs).
  • salty webhooks list | add --url --events | test <id> — manage signed-webhook endpoints.
  • salty usage — current-period API usage + plan cap.
  • salty logs tail [--limit] — stream the API call log (last 100 + live updates every 2s).

Every command accepts --json to dump the raw response (for piping into jq) and --api <url> to override the API host (defaults to $SALTY_API or https://api.trysalty.com/v1).

Examples

salty login                                # opens browser, stores token
salty whoami
salty keys create --name "agent-prod"      # prints sk_live_… ONCE
salty people create --email [email protected] --first-name Jane
salty schema add-attribute \
  --object person \
  --key tier \
  --type enum \
  --values "free,pro,enterprise"
salty webhooks add --url https://yourapp.com/hooks/salty --events "*"
salty logs tail
salty people list --json | jq '.data[] | select(.custom_attributes.tier == "pro")'

Auth

The CLI uses OAuth 2.1 dynamic client registration (RFC 7591) per machine + per API host. On first salty login:

  1. Picks a free localhost port (9876+).
  2. Registers a public OAuth client with the Salty OAuth server.
  3. Generates a PKCE S256 challenge.
  4. Opens your browser to <host>/oauth/authorize.
  5. After you approve in the consent page, exchanges the code at /oauth/token.
  6. Stores salty_oat_… + salty_rt_… in your keychain.

The access token is auto-refreshed if within 30s of expiry, and on any 401 the CLI retries once with the refresh token before surfacing the error.

Multi-host

Each --api <url> you log into is stored separately, so the same CLI can talk to prod, staging, and your local dev box without re-login.

salty login --api https://api.staging.trysalty.com/v1
salty people list --api https://api.staging.trysalty.com/v1
salty whoami --api http://localhost:8787

Links

License

MIT