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

@robozephyr/trove

v0.2.5

Published

Local-first, AI-native resource manager for AI coding agents

Readme

Trove

Shared API credentials + service playbooks for every AI coding agent on your machine. Local-first, no SaaS, no per-project re-paste.

One ~/.trove/ directory. Every AI coding agent — Claude Code, Codex, Cursor — in every project on your machine reuses the same API credentials and service playbooks.

No more re-pasting Stripe keys into a fresh .env for every project. No more re-explaining "this service has a quirk that bit me last time" to a fresh agent session. Add a service once at ~/.trove/<service>/; reference it from any project's CLAUDE.md / AGENTS.md / .cursorrules with one line:

@/Users/you/.trove/stripe/module.md

The AI loads the module on session start. It now knows your Stripe key, the gotchas (amounts in cents, restricted keys over secret keys, idempotency-key requirement), and — if a Stripe MCP server is wired up — calls it directly.

No inject step. No init step. No per-agent shims. Trove is a plain directory; the AI is the runtime.

What's in each module

Per service, one folder holds three layers:

  1. The playbook — gotchas, billing pitfalls, error-code tables, real code snippets, written from production dogfood. Stripe amounts in cents. Supabase RLS opt-in default. GA4 service-account-as-user-not-IAM. The stuff that gets a senior engineer paged at 2am
  2. API credentials — keys / tokens / files (for service-account JSON / SSH keys / certs), gitignored at file-mode 600
  3. MCP server pointers (optional) — mcp: block per module, so the AI configures the agent's MCP settings on first use

Same module works in every agent that supports absolute-path @-reference. Switch projects: same trove. Switch agents (Claude Code → Codex → Cursor): same trove.

How it doesn't try to be other tools

| Trove is NOT replacing | Because | |---|---| | .env + direnv | Env files re-fragment per project — every new repo means re-pasting the same Stripe key. They also carry no skill knowledge and no MCP config. Trove is the cross-project home env files never tried to be | | ~/.claude/skills/ (and equivalents) | Agent-specific — locked to Claude Code. Trove modules are referenced by absolute path from any agent that supports @-reference, so the same module serves Claude Code / Codex / Cursor without re-authoring | | 1Password CLI / op run | Credentials only — no playbook, no MCP wiring. Use 1Password as the source-of-truth vault and pull values into trove if you want; the two compose | | Writing your own skill files per project | Every project re-pays the authoring cost; trove de-duplicates that across N projects, and last_verified makes "is this knowledge still correct?" auditable | | A SaaS / cloud sync | Local-first by design. Sync via git remote / iCloud Drive / rsync — whichever you already use |

How it works

A module is a directory under ~/.trove/:

~/.trove/minimax/
├── module.md           # YAML frontmatter (schema, applies_to, optional MCP) + skill body
├── credentials.json    # secret values — gitignored, mode 600
└── files/              # (optional) file-type creds: SA JSON / SSH key / cert

On session start, the AI:

  1. Auto-loads the referenced modules (any agent supporting @-reference to an absolute path)
  2. Reads credentials.json and files/ directly when calling the API — no env export, no shell-history exposure
  3. Consults the playbook body when it hits a code path that has known gotchas
  4. Updates the project's CLAUDE.md / AGENTS.md / .cursorrules if you ask it to add a new module

For services with MCP servers, see the next section.

MCP support (optional layer)

Most modern services ship MCP servers — Stripe, Supabase, Google Analytics, npm, etc. Each agent has its own MCP config file (~/.claude.json, ~/.cursor/mcp.json, ~/.codex/...). Adding one service to three agents currently means editing three files.

Trove modules can carry an mcp: block declaring the canonical install:

mcp:
  type: http
  url: https://mcp.stripe.com

Or for stdio servers:

mcp:
  type: stdio
  command: pipx
  args: ["run", "google-analytics-mcp"]
  env:
    GOOGLE_APPLICATION_CREDENTIALS: ${credential.GOOGLE_SERVICE_ACCOUNT_JSON}

The ${credential.X} substitution resolves to the field's value (string fields) or absolute path (file fields, SPEC §2.3). The AI merges the block into the agent's MCP config on first use — one place to declare, one place to update, applies to every agent.

Status

v0.2.5 — 24 modules in library/ gated by last_verified (5 production · 16 verified · 3 partial). New since v0.2.4: 4 modules (dashscope Alibaba CosyVoice TTS + voice cloning + Wanx, volcengine-tos S3-compat object storage, volcengine-speech ByteDance Seed-ASR 2.0 for QA-vs-script transcription diff, aitoearn 14-channel social publishing MCP) + library/cloudflare extended with the CF Pages source-repo silent-PATCH trap + delete+recreate runbook. Site now serves at trove.robozephyr.com (brand-aligned with the @robozephyr/ npm scope), with SVG favicon + Apple touch icon + auto-deploy workflow on every push. Format spec is stable; AI-assisted module authoring (v0.3) in progress.

See:

Quick start

# 1. Install
npm install -g @robozephyr/trove
# (Node 22+ required. Homebrew tap planned for v1.0.)

# 2. Open the local Web UI to install a module and fill credentials
trove ui
# → http://127.0.0.1:7821
# Pick e.g. `minimax` from the Library tab, click Install, fill the form.

# 3. Reference it from any project's CLAUDE.md
echo '@/Users/you/.trove/minimax/module.md' >> /path/to/project/CLAUDE.md

# 4. Start your AI agent there
cd /path/to/project && claude

The AI now knows MiniMax: how to call it, what gotchas to avoid, where to find the key.

Zero-tooling mode

If you don't want the binary, the directory convention IS the runtime — just clone, copy, edit:

mkdir -p ~/.trove
cp -r library/minimax ~/.trove/
chmod 600 ~/.trove/minimax/credentials.json
$EDITOR ~/.trove/minimax/credentials.json
# ⚠️ Direct file editing is the fallback. `trove ui` keeps secrets out of
# shell history / screenshots / pair-programming.
echo '@/Users/you/.trove/minimax/module.md' >> /path/to/project/CLAUDE.md

For multi-account scenarios (e.g. multiple GitHub or Cloudflare accounts), duplicate the library/github-account/ template under a per-account directory name (e.g. ~/.trove/github-personal/, ~/.trove/github-work/) and fill each with that account's identity.

License

MIT