Motion

The sphere is a being; the two lobes are its intelligence, free to become whatever says what is happening. The living mark below is what the app runs. Further down, the older renderer that still carries a few one-shot moments.

Thinking and speaking, from scratch

The first pass's thinking and speaking were rejected as unnatural, so both were redone as eleven living prototypes on the same engine: lobes that bud, neck, let go, merge and splash like a liquid, with mass, drag and surface tension, and a voice drawn only from the measured level. They were judged on how natural they feel first, then on elegance, then on whether three fresh viewers read them from unlabelled frames, and each against what was live before the first pass: the bar is to be clearly better than that, or the earlier form returns. The shipped form, the earlier one and two runners-up of each are kept here; the voice is simulated.

To ship a runner-up instead, set thinkAs or speakAs in web/src/lib/living-mark.ts and make it pass check-living-mark.mjs, which holds whichever ships to the same laws; today the runners-up do not yet (mercury fails six, ripples two, bubble one). Leaping passes (made to on 2026-10-05), and so do the writing dots that replaced it on 2026-10-06.

Thinking

Working on it
Writing dots — shipped (2026-10-06)The lobe at the lower right runs out into three drops at the being's right, and a wave passes through them, each rising and swelling a beat after the one before; the other lobe goes into the being until the thought is done. The owner asked for a form that both looks good at every size and says thinking ("the lobes can turn to anything so hands, body gas, liquid whatever"). Of eight silhouettes shown to three fresh viewers, only this one was read as thinking, by all three: "typing… / thinking", "while the reply is being written". The hands at the chin read as a headset, a microphone or a lollipop; wisps as steam; curled arms as a hug.
Working on it
Leaping — shipped 2026-10-05, now a runner-upBoth lobes alike gather into drops, crouch, leap straight out, stretched by their speed and round at the top, fall back, splash into a crescent along the halo and gather again, a little further round; lower and slower at the sizes read beside text. It was the owner's interim choice after the rising thoughts; one viewer of three read it as working, the others as connecting, syncing or a queue.
Working on it
Beads — as live before 2 October; now the loading waitTwo beads circle the being, quick and uneven, tapering with their speed. The owner's "boot animation": it returns wherever Sathi is loading rather than thinking (the boot, the app, a voice being prepared). Lively and clear at 44 px, but it reads as loading, not as thought.
Working on it
Mercury — runner-upThe lobes run into two heavy drops that chase each other round the being, catch up and run together, travel as one, then draw apart and let go. Natural, but only one viewer of three read it as thinking; the others saw a spinner, loading or pairing.

Speaking

Answering aloud
Chorus — shipped (the owner's idea)The ears of listening, multiplied: each lobe becomes the inner arc of a small waveform and two more arcs bud out of it, each drawing the voice a moment later, so the sound moves out through them. Silence shrinks them to beads; at the end they run back into one lobe a side. All three viewers read it as voice, two as speaking aloud first and one as the microphone hearing them.
Answering aloud
Ribbons — as live before 2 OctoberTwo thin ribbons hug the being and swell with the voice, sending faint arcs out on each syllable. Gentle at 120 px, but at 22 px it is nearly the resting logo, so the chorus, which reads as voice at any size, replaces it.
Answering aloud
Ripples — runner-upEach lobe becomes an ear facing out, and every syllable sends a ripple off it that buds, lets go, travels out, lengthens and thins away. Silence sends nothing. One viewer of three read it as speaking; two saw ringing or broadcasting.
Answering aloud
Bubble — runner-upThe lobes part like lips at the being's right and the voice blows a bubble between them; a pause lets it go. One viewer of three said perhaps speaking; the others saw sending or typing.

The being and its intelligence

The sphere is the being: it keeps its place, its size and its light through everything. The two lobes are its intelligence, and they are free to become whatever says what is happening, so a person can tell what Sathi is doing without a caption. At rest they are the exact logo. Every change bends from wherever the lobes are, with their speed, into the next form; nothing waits on the logo between states and nothing finishes a lap.

restThe logo: the being, cradled by its intelligence. Exact, byte for byte.
listeningTwo ears cupped toward the being. They open with the person's measured voice; silence holds still. Only while the microphone is really open. (Simulated voice here.)
thinkingWriting dots: the lower lobe runs out into three drops at the being's right and a wave passes through them, the way a reply is shown being written; the other lobe waits inside the being. It replaced leaping on 2026-10-06, which had replaced the rising thoughts. A thought claims nothing: no count, no progress.
loadingTwo beads circle the being, quick and uneven: the boot and the app getting ready, as before 2 October. Nothing is being thought about, so it is not the thinking form.
searchingA lens: one lobe rings the being and the other is its handle, looking one way and the other.
waiting on youTwo dots under the being, toward what waits for your answer, that bob toward it now and then, one a beat behind the other, and otherwise hold still: it is not thinking while you decide, but it has not gone away (2026-10-05).
speakingA chorus: the ears, multiplied. Each lobe becomes the inner arc of a small waveform either side; two more arcs bud out of it, each drawing the voice a moment later, so the sound moves outward. A quiet moment shrinks them to beads. (Simulated voice here.)
reading aloudThe same arcs with an even pulse travelling out, whatever is said: something is playing, and nothing pretends to know its syllables. Read-aloud has no level to draw.

Breadth first: the same trace in four grammars

One simulated sequence (a voice request, work, a search, a wait on your approval, a spoken answer, home), and a second one stopped while working, drawn at the same size by the same engine in four grammars. Three are comparisons; only the first is what the app runs. The events are scripted and the voices simulated.

  1. 1. at rest
  2. 2. hears a request (simulated voice)
  3. 3. works on it
  4. 4. looks through your things
  5. 5. waits on your approval
  6. 6. answers aloud (simulated voice)
  7. 7. home
at rest
Free forms — chosenThe sphere is the being; the lobes take whatever form says what is happening: ears, three writing drops, a lens, two dots, a chorus of arcs.
at rest
Posture — comparisonThe logo never changes shape; meaning rides on bearing: it turns, leans, opens its halo, turns toward what waits.
at rest
Assembly — comparisonThe lobes come apart into beads and are built back into arms, again and again, until the work is done.
at rest
Beads — as shipped beforeTwo beads circling the sphere while it works; ribbons while it speaks. No waiting pose.

The trace as stills

Every 1.2 s of the first trace, computed by stepping the engine at 60 Hz from the start: frames show what motion hides.

Free forms — chosen
0.4s
1.6s
2.8s
3.9s
5.1s
6.3s
7.5s
8.7s
9.8s
11.0s
12.2s
13.4s
14.6s
15.7s
Posture — comparison
0.4s
1.6s
2.8s
3.9s
5.1s
6.3s
7.5s
8.7s
9.8s
11.0s
12.2s
13.4s
14.6s
15.7s
Assembly — comparison
0.4s
1.6s
2.8s
3.9s
5.1s
6.3s
7.5s
8.7s
9.8s
11.0s
12.2s
13.4s
14.6s
15.7s
Beads — as shipped before
0.4s
1.6s
2.8s
3.9s
5.1s
6.3s
7.5s
8.7s
9.8s
11.0s
12.2s
13.4s
14.6s
15.7s

Why free forms

GrammarStates apart (mean)Closest two statesThinking motion at 22 pxInk flicker while thinkingHome after a cut
Free forms — chosen0.460.170.4 px/s0.020.32 s (at most 0.32 s)
Posture — comparison0.210.005.9 px/s0.030.63 s
Assembly — comparison0.390.0821.6 px/s0.100.65 s
Beads — as shipped before0.370.00 (no waiting pose)20.7 px/s0.030.68 s

States apart is one minus the overlap of two states' reduced-motion silhouettes, averaged over rest, listening, thinking, searching, waiting and speaking; 0 means two states look the same. Thinking motion is the mean speed of the lobes' samples and of the drops they let go of at a message-row size, flicker the variation of visible ink. Posture is the calmest but says the least: thinking and searching are one picture. Assembly and the beads say more but move far more where people read. Free forms say the most, move the least and come home fastest (home is the slowest of 80 cuts for the comparisons; for free forms, the median cut and, in brackets, the slowest). This is a geometric proxy; the thinking and speaking forms were also read from unlabelled frames by three model viewers (above), and a recognition test with people is still owed.

The older renderer

SathiMarkMotion, kept for single deliberate moments (the capsule's press, the mail sync glyph, the native welcome, the door chapters, the residence drawing, the sign-in invite). Every state here passes through the exact logo once a cycle. Its lens is where the living mark's searching form came from.

Geometry layer — the logo is redrawn

Each frame re-evaluates r = r₀·e^(θ·lnφ/(π/2)) with different numbers, so these are not the logo being pushed around — every in-between frame is a real golden spiral the generator would have shipped. Two of the three parameters are free under the 2% footprint law: the lobe is normalised to its reach, so the arm can coil and uncoil without the mark growing by a thousandth of a unit.

Capability layer — the lobes stop being lobes

The sphere is a sentient being and the spirals are its intelligence and its tools — that is the whole doctrine, and everything else is an add-on. The lobes become whatever the being needs (a tool may even root under the body: a wing, a tail), so long as the loop brings them home. Each of these leaves the logo, does a job, and returns to the exact path the favicon uses.

Examples, not the set. Every one of them is a SWEEP — an angular run, an outer radius, an inner radius — which is the engine that keeps the morphs fluid and correspondence-free. Since v8 the sweep is machinery, not aesthetics: a shape earns its place by being instantly nameable, and the best ones here ignore the spiral entirely. Mechanism in src/lib/capability-shapes.ts; adding one is a function, not a rebuild.

Attending — the sphere is an entity

The arm un-draws into its tail, tucks behind the pupil, and the almond eye is born hidden and scales out around it — the being draws its intelligence in and re-expresses it. Thin strokes, corners meeting on the midline, the pupil floating in the dark aperture; blinks squash only the aperture and ride the saccades. Rebuilt to the designer's frames, measured to the unit, after the first build was judged much worse — and was.

Transform layer — the logo is moved

The original nine, on the Web Animations API. Still the right tool for most states: a breath is a scale, and nothing is gained by re-cutting a curve to do it.

flappy — at the sizes it has to survive

favicon 16
UI 24
web 64
presentation 200

flappy — the morph, as stills

One cycle, sixteen frames, evenly spaced. This is how the reference animation was read — frames show what motion hides. Look for the gather: the arms should draw in before they change and grow back out, rather than tweening across at full size.

0.00
0.06
0.13
0.19
0.25
0.31
0.38
0.44
0.50
0.56
0.63
0.69
0.75
0.81
0.88
0.94

The parameter space, held still

Every geometry state above is a walk through this box. Drag to see where the edges are — the point at which an arm stops reading as an arm is a design fact, and it is easier to find with the frames standing still.

exactly the shipped mark

{"k":0.45,"reach":450,"biteR":258}

The same mark, doing jobs

Continuity is not felt on a swatch card. It is felt when the thing that thinks in the header is the thing that waits in the button and the thing that listens in the composer — the same geometry, at 16 and 20 and 28px, never a second icon set.

reply pending — thinking
amma lai ke pathaune?
सोच्दै…
voice open — attend (halo widening)
Listening…End

No microphone glyph, no waveform. The mark opens.

acting — tool (arms reach in turn)
SendingSearching

Where every product in the world puts a spinner.

app opening — unfurl, at chrome size
Sathistatic, for reference

The two are the same path at rest — that is the contract.

reply arriving — stream
आमालाई सन्देश: “शुभ बिहानी, आमा…

Where a caret would blink: the arm sending its packets is the text arriving.

connection lost — offline
Reconnecting…

Reach is what the network takes; the self stays lit. No cloud with a slash through it.

reading your document — lookRead
बुबाको रिपोर्ट पढ्दै…

Immediately obvious, which is the designer's argument in one tile: eyes need no caption.

The being wears its tools — a bird, at three sizes

The body IS the disc — the being itself, untouched. A membrane wing pinned at a shoulder inside the body heaves and tucks; a forked tail opens left; a beak points right; so the bird faces right, like the side-scroller the example always was. It arrives through the self: the arms melt into the dot, and the bird grows back out of it.

The bob is a CSS translate on the wrapper — the only motion on this page that is not the mark's own geometry, and it is outside the mark on purpose.

On dark, and inverted

Provenance. boot, retry, stream, offline, recurse, the look family and the rebuilt sync all arrived as suggestions in a designer's library of thirty-three (media/sathi-motion-library.html), translated into this geometry rather than copied. v6 records the first reading; v7 records the correction — the rules were a starting point, the sphere is an entity, and two of v6's declines were wrong — in brand/MOTION_v1.md.