Vellum · Roadmap

Product roadmap · grounded in the codebase · Jun 26 2026

Vellum: make the handoff artifact do the work

The whole “Now” tier is shipped (v0.6.1) — the review file now carries its own scene/timing context, the spoken VO line, computed style, and a re-verify signal. What remains is organized into tiers you can work top-to-bottom. Every item is a checkbox; your progress is saved in this file. The throughline: when in doubt, ship the thing that makes the agent right on the first pass — and resist anything that turns Vellum into a generic editor or a cloud SaaS.

Source: a 13-agent feature evaluation (59 ideas → 37 scored, adversarially) reconciled against the code. Value/Effort are 1–5 (effort 5 = hardest).

Where things stand

10
✅ Shipped
7
Next
3
Later
4
Architecture
Remaining roadmap (Next · Later · Architecture · Bold)0 / 16 done (0%)

Tier order is leverage order. The cheapest, highest-impact work is at the top of Next; the structural bets that everything else leans on are flagged keystone. Architecture item “zero-dep guardrail” is flagged do first — it protects the constraint the new modules could break.

Tier 0

Shipped

0/0

Already in production across v0.5.3 → v0.6.1. Kept here so the roadmap shows the full arc — and so you can see what each remaining bet builds on.

Tier 1

Next — highest leverage

0/0

✅ All shipped in v0.7.0. Medium-sized bets that compound on what shipped — built as one coherent pass (design → implement → adversarial review → fix), each smoke-tested. Left checked as the record.

Tier 2

Later — large features

0/0

2 of 3 shipped in v0.8.0 — desired-state markup and before/after verify, built as one pass (the two share a delta helper, a content-hash, and a factored ghost/arrow draw fn). Re-anchor is deferred by design, not blocked — its safety need is already met (see below).

Tier 3

Architecture & hardening

0/0

All shipped in v0.9.0 — the zero-dep guardrail, the schema-versioned note store, server hardening, and @ts-check, built as one pass (design → implement → adversarial review → simplify). The headless capture contract test was dropped (it needs Playwright — a test-time browser dependency not worth taking on; see Not now). Structural work that protects the moat (local-first, zero-dep, single download) and de-risks the bets above.

Tier 4

Bold bet

0/0

A direction, not a feature — the one idea that could change Vellum’s category.

🔭 Invert the sensor

Vellum proposes notes; the reviewer confirms

Every feature so far assumes the human is the sole detector and Vellum the passive scribe. Flip it: have Vellum pre-lint the mounted composition and propose candidate notes — caption box past the safe area, a VO cue desynced from on-screen text, an element off-frame, a scene undershooting its own VO length — that the reviewer confirms or dismisses with one key.

Why it’s the right kind of bold: it runs entirely local off the same data-*/VTT coupling a generic tool can’t see; proposing isn’t editing, so it stays on the right side of the no-NLE line; and it attacks the real bottleneck once capture is frictionless — finding the problem. Confirming beats hunting, and auto-notes are perfectly addressable.

It also leans on the metrics ledger and the schema-versioned store, so it naturally comes after those land.

  • Category shift: from “review scribe” to “review copilot.”
  • Start small: one linter (caption safe-area or VO desync), one-key confirm, measured against the ledger.
Guardrail

Not now — scope-creep watch

Deliberately deferred or declined. Each one trades away the local-first / zero-dep / agent-native moat for surface area. Revisit only with evidence.

Resist these

  • Cloud backend / auth / multiplayer — breaks local-only and the curl|sh simplicity that is the moat’s physical form. Hard line.
  • Vellum MCP server (as specced) — pulls in the MCP SDK (breaks zero-dep) and a required running server (the skill says don’t assume one), and leans on an SSE channel that doesn’t exist. Only a zero-dep stdio JSON-RPC variant (list/get/set_resolution) is ever acceptable.
  • vellum diff <ref> across git refs — heaviest in the set, redundant with the before/after verify, and old refs may not build → silent failure on the exact comparison requested.
  • Per-author namespaced ids / shareable bundle — collaboration creep; namespaced ids ripple through every id-keyed path for a narrow consumer. The agent already reads notes/ from the repo.
  • Drop the ffmpeg dependency — hand-rolling pure-JS PNG compositing against the zero-dep constraint is high effort for a secondary, already-optional artifact that needs a headless browser anyway.
  • Drawer filter/search & multi-composition picker — second-pass navigation the agent never reads; “find a note faster” ≠ “leave a note faster.”
  • history.jsonl audit trail — gitignored and agent-unused; no consumer exists yet. Defer until stale-detection or re-anchor actually reads it.
  • Frame-index readout without data-fps — a guessed f30 on a 24/60fps comp is worse than none (already handled: stepping shipped, the number omitted).
  • Headless capture contract test (Playwright) — dropped from Tier 3. The capture pipeline (~1000+ lines) genuinely wants coverage, but the only honest harness needs a real browser engine for layout (jsdom can’t), and a test-time browser dependency cuts against the zero-dep / supply-chain-clean posture. Revisit only as a standalone, opt-in CI job that never gates the core suite.