Every day, a fingerprint of spilled color.

drag the mood pad · move the sliders

energy ↑
tenseenergized depletedcalm
← unpleasantpleasant →
colormood — valence × energy, synced to the squares
patternmeaning — a hash of the day's embedding
grainvolume — how much you logged
50%
24%

Integrate into your own app

grab the source, or hand the brief to your coding agent

View on GitHub ↗

a ready-to-paste brief: it asks how you want orbs to map onto your data, then copies the shader from GitHub or rewrites the logic for your platform.

How an orb is built

three independent axes, one image

Color

mood

Position on the circumplex (valence × energy) bilinearly blends the four quadrant colors in OKLab — the orb's dominant hue matches the mood square. Intensity drives saturation.

Pattern

meaning

Warp, rotation and seed come from a hash of the day's embedding. A 1% shift in meaning scrambles the pattern — while the color stays put. That's the fingerprint.

Grain

volume

A quiet day (one or two short notes) spills into a few huge pools. A dense day breaks into fine veins. Volume scales the field, it doesn't crop the same image.