Skip to the collection

Owner operations

These instructions are for the curator. Hosted subscribers need no owner account. Use Trova in your agent.

01 · The owner

The daily practice

Claiming the vault

On a fresh deployment, the first visit lands on sign-in and the “claim vault” tab creates the one and only account. Sign-ups close permanently the moment it exists — there is exactly one master key. (Resetting means deleting the row in the user table; the next visitor claims the vault again.)

Capturing a reference

+ Capture in the header (or press c). Three sections, in order:

1 · The reference. Paste a URL — the server renders the page headlessly, takes a real full-page screenshot, and reads the actual computed fonts from the DOM. Or upload an image (≤25 MB) for posters, packaging, editorial — the preview shows how it will hang. Titles auto-fill from the page.

2 · The taxonomy. Aesthetic family and medium are required; section, source, fonts, palette, and tags are optional. ✳ Suggest from image has Claude propose the taxonomy from the screenshot — you confirm or correct everything. It never writes steal-notes; that part is the practice.

3 · The steal. At least one steal-note — the specific thing worth taking, with its type (typography, grid/layout, color, motion/interaction, copywriting, texture/material, component pattern). Up to six. No note, no entry. If a capture fails validation, everything you typed is echoed back — the app never eats a hand-written note.

The capture page also carries a bookmarklet — drag ✳ Steal this to your bookmarks bar and any site opens capture with its URL prefilled.

The library, the entry, the views

The home wall filters by family × steal-type × medium × section × source with full-text search across notes, titles, fonts, and tags. Filters live in the URL, so every view is shareable. Hover a card and the steal veil rises — the note, not more image. The masthead links straight to entries still owing a note and to thin ones needing another pass.

The entry page is the study card: palette with hex codes, full metadata, and the notes. Everything is revisable — ✎ Edit entryfor the taxonomy, ✎ on any note to rewrite it, ✕ to delete one (two-step, and the last note can never be deleted). Mark a family's five canonical references with ✦ make canon; walk the wall with ↑ Newer / ↓ Older.

Families trains the eye — one aesthetic side by side. Steals shows the same move across families — the queryable half of taste. Sources is the tiered hunting registry.

Briefing your agent

Export filters a slice and downloads a Trovafile — a structured brief that opens with instructions addressed to the agent. Or drop context into any project from the CLI:

node /path/to/trova/bin/trova.mjs init --family print-tech

initwrites the Trovafile and wires the pickup rule into the project's AGENTS.md or CLAUDE.md automatically — agents read the brief without being told. Headless auth: set TROVA_TOKEN.

For live queries mid-build, the local MCP server:

claude mcp add trova -- node /path/to/trova/bin/trova-mcp.mjs

This one speaks stdio rather than HTTP, so harnesses that configure servers by file take it as a command:

{ "command": "node", "args": ["/path/to/trova/bin/trova-mcp.mjs"] }

Six tools land in the agent: design_context (the brief), list_families (the taxonomy), search_steals (full-text note search), find_references (structured search by font, color and family), get_reference (one entry and its explained neighbours), family_style (a family as a style sheet). Agents don't reach for tools unprompted — keep a standing rule in AGENTS.md or CLAUDE.md: “call design_context before writing any UI code.”

Conveniences

/ focuses search · c opens capture · Esc clears · ? shows the cheat-sheet (all disableable from the footer). ◐ toggles the museum-at-night and warm-paper themes. GET /api/usage (owner-only) reports each subscriber key's last 28 days.

04 · Your own

Run your own vault

Trova self-hosts from a checkout of its source. As of 30 September 2026, the source is private; no public release date is announced, and these are the commands it will take:

npm install
npx playwright install chromium   # once — enables real screenshot capture
npm run dev                       # http://localhost:3000

One Neon Postgres database via Prisma 7 holds everything — entries, sources, images, auth. Set DATABASE_URL and BETTER_AUTH_SECRET (see .env.example for the full list). An empty database seeds itself: 8 families, 35 registry sources, 24 tagged reference entries. Reset with npx prisma db push --force-reset and restart. Without Chromium, URL capture falls back to title/og:image/font-hint extraction; both paths sit behind an SSRF guard.

← Back to the vault