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

cavuno

v0.6.0

Published

Cavuno v1 REST API command-line client

Readme

cavuno

Command-line client for the Cavuno v1 REST API. Manage jobs, companies, blog content, media, board settings, domains, async operations, API keys, audit logs, and taxonomies from a terminal, shell script, or CI pipeline.

Full reference: cavuno.com/docs/cli

Install

npm install -g cavuno

Or run it once without installing:

npx cavuno --help

Requires Node.js 18.18 or newer.

Authenticate

Set two environment variables. Mint a key in the Cavuno dashboard under Settings → Developer → API keys — the plaintext secret shows once at creation, copy it to your secrets manager immediately.

export CAVUNO_API_KEY='cavuno_live_...'
export CAVUNO_API_URL='https://api.cavuno.com/v1'

cavuno usage get

The CLI fails fast at startup if CAVUNO_API_KEY is missing or malformed — you don't wait on a 401 round-trip to spot a typo.

Commands

cavuno jobs         # Manage jobs (incl. batch)
cavuno usage        # Inspect plan usage
cavuno companies    # Manage companies (incl. batch)
cavuno blog         # Manage blog posts, authors, and tags
cavuno media        # Upload and fetch media assets
cavuno settings     # Read and update board settings
cavuno domains      # Custom domains + DNS verify
cavuno operations   # List / poll / cancel async operations
cavuno api-keys     # List API keys (mint is dashboard-only)
cavuno audit-logs   # Query mutation audit log
cavuno taxonomies   # remote helpers + skills/categories/markets CRUD

Jobs

| Command | Description | |---|---| | cavuno jobs list | List jobs with optional filters | | cavuno jobs get <id> | Fetch a single job (enriched) | | cavuno jobs create --title <t> [...] | Create a draft job | | cavuno jobs update <id> [...] | Update fields on an existing job | | cavuno jobs publish <id> [--expires-at <iso>] | Publish a job (quota-gated) | | cavuno jobs pause <id> | Pause a published job | | cavuno jobs expire <id> | Expire a published job immediately | | cavuno jobs duplicate <id> | Create a draft copy | | cavuno jobs delete <id> | Hard-delete a job | | cavuno jobs batch [--file ops.json] | Run a batch of job operations (JSON file or stdin) |

Usage

| Command | Description | |---|---| | cavuno usage get | Show active-jobs slot usage and plan limit |

Companies

| Command | Description | |---|---| | cavuno companies list | List companies | | cavuno companies get <id> | Fetch a single company | | cavuno companies create --name <n> [...] | Create a company | | cavuno companies update <id> [...] | Update a company | | cavuno companies delete <id> | Delete a company (cascades to its jobs) | | cavuno companies upload-logo <id> <file> | Upload or replace a company logo | | cavuno companies delete-logo <id> | Delete a company logo | | cavuno companies search <query> | Search companies by name | | cavuno companies find-by-domain <domain> | Resolve a company by website domain | | cavuno companies find-or-create --name <n> [...] | Resolve by domain or create | | cavuno companies list-jobs <id> | List jobs at a company | | cavuno companies batch [--file ops.json] | Run a batch of company operations |

Blog

| Command | Description | |---|---| | cavuno blog posts list | List blog posts with optional filters | | cavuno blog posts get <id> | Fetch a single post | | cavuno blog posts create --title <t> [...] | Create a draft post | | cavuno blog posts update <id> [...] | Update fields on a post | | cavuno blog posts publish <id> | Publish a post | | cavuno blog posts unpublish <id> | Return a post to draft | | cavuno blog posts toggle-featured <id> | Toggle the featured flag | | cavuno blog posts search <query> | Search posts | | cavuno blog posts delete <id> | Delete a post | | cavuno blog posts batch [--file ops.json] | Run a batch of blog post operations | | cavuno blog authors list\|get\|create\|update\|delete | Manage blog authors | | cavuno blog tags list\|get\|create\|update\|delete | Manage blog tags |

Media

| Command | Description | |---|---| | cavuno media upload <file> --purpose <p> | Upload a media asset | | cavuno media get <id> | Fetch media metadata |

Settings

| Command | Description | |---|---| | cavuno settings get | Show board settings | | cavuno settings update [...] | Update name, slug, blog/candidates toggles | | cavuno settings get-adsense / update-adsense | Read / update AdSense config | | cavuno settings get-paywall / update-paywall | Read / update paywall config | | cavuno settings delete-hero | Remove the hero image | | cavuno settings set-password-protection | Set board password (reads secret from stdin) | | cavuno settings delete-password-protection | Remove board password protection |

Domains

| Command | Description | |---|---| | cavuno domains list | List custom domains | | cavuno domains get <id> | Fetch a domain + verification instructions | | cavuno domains add <host> | Register a custom domain | | cavuno domains verify <id> | Start async DNS verification | | cavuno domains remove <id> | Delete a custom domain |

Operations

| Command | Description | |---|---| | cavuno operations list | List async operations | | cavuno operations get <id> | Fetch one operation | | cavuno operations cancel <id> | Request cancellation | | cavuno operations wait <id> | Poll until terminal (--interval-ms, --timeout-ms) |

API keys / audit logs / taxonomies

| Command | Description | |---|---| | cavuno api-keys list | List API keys (metadata only) | | cavuno audit-logs list | List audit entries | | cavuno audit-logs get <id> | Fetch one audit entry | | cavuno taxonomies remote-permits | List remote-work permit options | | cavuno taxonomies remote-timezones | List remote-work timezone options | | cavuno taxonomies skills\|categories\|markets list\|create\|update\|delete\|add-alias\|remove-alias | Operator taxonomy CRUD (requires taxonomy.manage) | | cavuno taxonomies categories tree | Nested category tree |

Run cavuno <group> <command> --help for full flag detail, or see the online reference for typed examples.

Global flags

| Flag | Purpose | |---|---| | --api-url <url> | Override CAVUNO_API_URL for this invocation | | --format <json\|table> | Output format. Default json (pipe-friendly) | | --help | Print help for the command | | --version | Print the CLI version |

Exit codes

Scripts can branch on the exit code without parsing stderr.

| Code | Reason | |---|---| | 0 | Success | | 1 | Authentication failure (missing or malformed key, 401) | | 2 | Validation error (400, missing required flag) | | 3 | Authorization failure (403) | | 4 | Resource not found (404) | | 5 | Plan / quota (429 quota_exceeded, 403 plan_cannot_publish) | | 6 | Rate limited (429); Retry-After printed | | 7 | State conflict (409 already_published, etc.) | | 10 | Unknown server error (500) | | 11 | Network error (DNS, refused, timeout) |

Pipe-friendly

# Expire every published job below $100k
cavuno jobs list --status published --limit 100 \
  | jq -r '.data[] | select(.salaryMinUsd < 100000) | .id' \
  | xargs -n 1 -I{} cavuno jobs expire {}

Links

License

MIT