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.