A vault for UI animations that coding agents can use. morgue records a repeatable video preview of each effect, files it under a fixed vocabulary, keeps the code beside it, and exports a bundle that Claude Code, Cursor or Codex can build from. I founded it in August 2026; the waitlist is open and multi-user accounts are deployed ahead of launch.
Coding agents build UI from words and, at best, one screenshot. Motion does not survive that: a screenshot cannot show how a pinned scroll or a magnetic hover moves. And when I found an effect I liked, I had no good place to keep it where I could find it again, with the code and a note on how it works.
The fix
morgue is that place. Hand it a component and it records a deterministic video preview, tags it, and keeps the source and a note beside it. Later you search for the one where the panels pin and scroll sideways and get the clip, the code and the note. The export bundle carries the source, its dependencies, its licence and a list of demo scaffolding the agent should not copy.
System shape
capturePlaywright drives Chrome on a faked clock; ffmpeg encodes
meta.jsona fixed vocabulary for effect, technique and trigger
exporta markdown bundle an agent can build from
web/Next.js 16: the landing page and the private vault
accountsAuth.js, Drizzle and Neon Postgres
mediaCloudflare R2, public and private buckets
The rule that holds it together: the browse grid never runs code. Grid items are a poster and a short video; the real thing runs one item at a time.
Engineering details
a grid of videos over a grid of live demos
In Chrome, creating 40 WebGL contexts leaves exactly 16 alive, and removing a canvas does not free its context. A grid of live Three.js scenes would silently blank previews. So the grid shows a poster and plays video on hover, and only the detail page runs one item live.
a faked clock over screen recording
Before any page script runs, the harness replaces the page clock and requestAnimationFrame, then steps one frame at a time. GSAP, Three.js, Lenis and motion all advance in lockstep, so two runs of the test fixtures produced 1113 of 1113 identical frames.
a fixed vocabulary over free-text tags
Free-text tags rot into scroll, scrolling and scroll-anim within a month, and then search stops working. Every item is filed under a set list of effects, techniques and triggers.
private media in its own bucket over gating the app only
The private R2 bucket has no public access and serves signed URLs only. Gating the app is worthless if the video behind it can be fetched by anyone holding a CDN link.