_
    | |_ ___ _____   _____
    |  _|  _|  _  |_|   -|
    |_| |_| |_____|_|___/   v0.2.5 — 24 modules, live-verified

Trove

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.

$ npm install -g @robozephyr/trove GitHub npm
24 modules in library · 5 production · 14 verified · 1 partial · ~/.trove/ on disk · 0 cloud accounts

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.

Quick start

01

Install the CLI

Node 22+. The trove binary becomes available on your PATH.

npm install -g @robozephyr/trove
02

Install a module + open the Web UI to fill credentials

Pick from 24 bundled modules (or trove install --list to browse). The UI binds to 127.0.0.1:7821 only — never public.

trove install stripe
trove ui     # → http://127.0.0.1:7821
03

Reference it from any project

Add one line to CLAUDE.md / AGENTS.md / .cursorrules — the AI picks up the playbook + credentials on session start.

echo '@/Users/you/.trove/stripe/module.md' >> CLAUDE.md

What's new in v0.2.5

Four new modules — all built from real API probing, with the gotchas baked into last_verified. The killer pattern: Seedream generates an image → volcengine-tos hosts it at a public URL → Seedance animates it with audio → volcengine-speech transcribes to verify the audio matches your script. Full Volcengine AI loop, no external dependencies.

dashscope partial

Alibaba Bailian — CosyVoice TTS (150+ Chinese voice presets + free voice cloning) and Wanx image gen. WebSocket-based, char-billed.

Use dashscope CosyVoice
to synthesize "你好世界"
with voice longxing_v3
in mp3 22kHz.

volcengine-tos verified

S3-compatible object storage on Volcengine. The bridge module — upload images / audios to a public-read bucket so Seedance + Seedream can reference them at tos-cn-beijing.volces.com URLs.

Upload this image to my
TOS bucket public-read and
give me the URL to pass
into Seedance as first_frame.

volcengine-speech verified

ByteDance Seed-ASR 2.0 — batch audio transcription with utterance + word timestamps. The QA companion: diff transcribed audio against your target script to catch divergence.

Transcribe this mp3 via
Seed-ASR and tell me if
the spoken words match
my target subtitle text.

aitoearn partial

One-call publish to 14 social platforms via unified MCP (TikTok / YouTube / X / Bilibili / Douyin / WeChat / etc). OAuth relay borrows official platform credentials.

Publish my video to TikTok,
YouTube, X, and Pinterest
via aitoearn, with
per-platform variants.

Plus: library/cloudflare extended with the CF Pages source-repo silent-PATCH trap + ordered delete+recreate runbook (real dogfood: PATCH /pages/projects/{name} returns success but doesn't update the source field). Site now lives at trove.robozephyr.com (brand-aligned with the @robozephyr/ npm scope) with SVG favicon, Apple touch icon, and auto-deploy on every push.

How it works

Per service, one folder holds three layers:

~/.trove/stripe/
├── module.md             # YAML frontmatter + gotchas-first skill body
├── credentials.json      # secret values — gitignored, mode 600
└── files/                # (optional) SA JSON / SSH key / cert
    └── ...

On session start, the AI auto-loads the referenced modules (any agent supporting @-reference to an absolute path), reads credentials.json and files/ directly when calling the API, and consults the playbook body when it hits a known-gotcha code path. No tooling required to start — the directory convention IS the runtime.

How is this different from…

ToolWhy Trove isn't replacing it
.env + direnvEnv files have no skill knowledge, no MCP config, and re-fragment per-project. Trove keeps creds but adds the two layers env can't carry.
~/.claude/skills/Agent-specific — locked to Claude Code. Trove modules are referenced by absolute path from CLAUDE.md / AGENTS.md / .cursorrules, so the same module serves Claude Code / Codex / Cursor without re-authoring.
1Password CLI / op runCredentials 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.
Per-project skill filesEvery project re-pays the authoring cost; trove de-duplicates across N projects, and the last_verified field makes "is this knowledge still correct?" auditable.
A SaaS / cloud syncLocal-first by design. Sync via git remote / iCloud Drive / rsync — whichever you already use.

Web UI

trove ui opens a local dashboard at 127.0.0.1:7821 (bound to localhost only — never public). Four views:

MCP support (optional)

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 — HTTP for hosted MCP servers, stdio for local pipx / npx / uvx servers. The ${credential.X} substitution resolves to the field's value (string fields) or absolute path (file fields). One place to declare, applies to every agent.

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

Currently wired in library/: stripe, supabase, npm, google-analytics. Others are credential-only; opt-in.

What's in the library

Every module carries a last_verified field — what was actually tested, by whom, when. Dot color reflects current state. We'd rather ship 24 honest modules than 50 LLM-hallucinated ones.

production · daily-use verified · real call succeeded partial · known gap pending
llm-provider
openrouter qwen minimax
search-api
serper tavily brave
media-generation
seedance seedream kling fal-ai dashscope
payments
stripe
analytics
google-analytics google-search-console
infra · email · db · storage
cloudflare resend supabase volcengine-tos
collab · dev-tool
lark github-account npm ngrok
speech · transcription
volcengine-speech
social-publishing
aitoearn

Each module ships with a gotchas-first skill body — auth header quirks, billing pitfalls, error-code tables — so the AI doesn't have to rediscover the same trap that bit the last engineer.

Documentation

Status

v0.2.5 — the format spec is stable, all 24 modules are gated by last_verified, and the maintainer dogfoods trove daily across personal projects. AI-assisted module authoring (v0.3) and a marketplace for community modules (v1.0) are next.

The repo is github.com/RoboZephyr/trove — issues, PRs, and module additions welcome (see CONTRIBUTING.md for the quality bar).