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

@doist/granola-cli

v1.0.0

Published

CLI for the Granola notes and transcript API

Readme

Granola CLI

CLI for the Granola public API.

This CLI is optimized for both humans and coding agents:

  • official Granola API only
  • local synced cache for fast repeated queries
  • human-readable default output
  • --json / --ndjson / --full for structured agent use
  • installable agent skills

Installation

Requires Node 20.18.1+.

npm install -g @doist/granola-cli

Agent Skills

Install skills for your coding agent:

granola skill install claude-code
granola skill install codex
granola skill install cursor
granola skill install gemini
granola skill install pi
granola skill install universal

Skills are installed to ~/<agent-dir>/skills/granola-cli/SKILL.md. The universal agent is compatible with agents that read from ~/.agents/.

granola skill list
granola skill uninstall <agent>

Uninstallation

First remove any installed skills:

granola skill uninstall <agent>

Then uninstall the CLI:

npm uninstall -g @doist/granola-cli

Local Setup

git clone https://github.com/Doist/granola-cli.git
cd granola-cli
npm install
npm run build
npm link

Authentication

Create a personal API key in the Granola desktop app:

  1. Open Settings → API
  2. Create a key
  3. Run granola auth login
  4. Paste the key when prompted

Resolution order

API key resolution order:

  1. GRANOLA_API_KEY
  2. system credential manager / keychain
  3. ~/.config/granola-cli/config.json

By default, granola auth login stores the key in the system credential manager, with fallback to the config file when secure storage is unavailable.

Useful commands:

granola auth status
granola auth logout

Cache and Sync Model

The CLI maintains a local cache under:

  • ~/.cache/granola-cli/state.json
  • ~/.cache/granola-cli/notes/*.json

list, folders, search, and show will run an incremental sync first unless you pass --no-sync. A full sync is also triggered automatically on first use and periodically after that. Date-only filters such as --after 2026-04-01 use your local timezone's day boundaries.

You can sync explicitly:

granola sync
granola sync --full
granola sync --json

Commands

List notes

granola list
granola list --limit 10
granola list --person "Alice"
granola list --folder "Leadership"
granola list --after 2026-04-01 --before 2026-04-30
granola list --json
granola list --ndjson --full

List folders

Folder information is derived from each note's folder_membership metadata in the cached note payloads.

granola folders
granola folders --person "Alice"
granola folders --after 2026-04-01
granola folders --json
granola folders --ndjson

Search notes

granola search "roadmap"
granola search "roadmap hiring"
granola search "pricing" --person "Alice"
granola search "pricing" --folder "Leadership"
granola search "pricing" --after 2026-04-01
granola search "pricing" --json
granola search "pricing" --ndjson --full

Search results explain why each note matched (title, people, folders, summary, transcript).

Show a note

granola show <note-id>
granola show <note-id> --transcript
granola show <note-id> --json
granola show <note-id> --json --full

Output Modes

Default output is human-readable.

Structured output options:

  • --json — pretty JSON
  • --ndjson — newline-delimited JSON for list-like outputs
  • --full — include richer fields in structured output

For coding agents, prefer --json or --ndjson.

Update and Changelog

granola update
granola update --check
granola update --channel
granola update switch --stable
granola update switch --pre-release
granola changelog
granola changelog -n 3

Capability Boundaries

The Granola public API is intentionally limited. This CLI works around some of those limitations locally, but not all of them.

What the API supports

  • list notes
  • get note details
  • note summaries
  • attendees
  • transcripts
  • folder membership on note detail payloads

What the API does not provide directly

  • server-side full-text search
  • documented server-side folder browsing endpoints
  • server-side attendee filtering
  • webhooks
  • write/update/delete note APIs

Because of that:

  • search is local-cache based
  • folder browsing/filtering is local-cache based
  • repeated queries are fast after sync

Plan requirements

Personal API keys require a Granola Business or Enterprise workspace.

Development

npm install
npm run dev
npm run type-check
npm run lint:check
npm run format:check
npm test
npm run build
npm run sync:skill