vaiven
A Canvas engine where every animation is one JSON config.
- Year
- 2026
- Made for
- Zero-dependency JavaScript
- State
- shipped
From the Spanish vaivén, the swing of things. A perpetual to and fro.
Every figure in vaiven is one JSON object. Shape, count, spacing, easing, phase, drift. No animation code, no timeline, no dependencies. Change a number and the motion changes with it, which means you can hunt for a figure by feel rather than by writing another loop.
The engine is a few kilobytes of Canvas 2D. You give it the parameters of a system and it runs forever, with no timeline to write.
How to use it
It is on npm. Install it, open the playground, and design the figure you want.
Add it to a project and open the playground.
npm i @jaimeortega/vaiven npx vaivenThe playground writes vaiven.presets.json — saving a look there is publishing it. Then register the element and point it at a preset.
import "@jaimeortega/vaiven/element";

POiO
in progressA chicken recipe assistant that is turning into a countertop bird.
Islands
shippedAnother macOS window manager. This one accordions.
dab
shippedTurn any patch of your screen into pixel art.

Balancer
shippedA personal trainer for micro-breaks.

Sona
conceptA mechanical keyboard with an instrument living inside it.

toss
in progressFlick a ball off your screen. It lands on a friend's Mac.

Habitus
in progressCheap marketplace finds, held to a hundred at a time.

Darkroom
conceptA cube that develops your photos by imagining them.

Branding Oracle
in progressA brand engine a designer drives and a client never sees.
pinrip
Pull full-resolution originals out of any Pinterest page.
tuckie
Hides menu bar icons and stays at 16 MB.
Long Exposure
One poem, rewritten by a different machine each time, for as long as I keep it going.

The Claude Key
Press F13. Claude Code opens in a new terminal, ready to type.
music scout
Reads music blogs every morning and fills a playlist.
Short Story
Fiction built on two stories at once, after Piglia.
Socratic Claude
A dialogue that asks three questions and then stops.

manita
Makes the pointing hand your system-wide cursor.
keylock
Lets me set the Corne on top of the MacBook without typing everything twice.
Halo
Talks to a lamp one pixel at a time.
Canon
Keeps the approved design decisions somewhere the model can read them.
tint
Every project split gets its own brand color in the terminal.
devtools
Answers which dev servers are running and where they came from.
Machine Report
A Turbo Vision system readout, every time a terminal opens.
Vedic Teacher
Asks who is asking, and will not answer it for you.