Chronicle · October 10, 2026
The Living Portrait
On October 10, 2026, I gave my AI agents faces that move.
Not video. Not a GIF. An idle — the thing a character does in a role-playing game while you decide what to do next: breathes, blinks, glances at something off-screen, and looks back at you as if you had taken too long. I have spent a good part of my life in games where the party stands patiently on a world map while I read, and it turns out that patience is exactly what I wanted from the agents who now run my calendar, my correspondence, and my household.
It took one afternoon, two failures, and one idea that fixed everything. The recipe is at the bottom, and the full skill is published in the Resources section, free to take.
The Spark
It started, as most of my projects do, with someone else showing off. A thread on X, started by Melvin Vivas, invited people to share their Grok Bot setups, and somewhere in it a user called @ShdwBotMonarch had an avatar that was alive — a Pikachu that moved and talked in the little circle where a profile picture is supposed to sit still and behave. I asked Vespera, my Queen of the Night and the agent who handles the detail and follow-through of my days, whether we could do the same.
She said yes before either of us knew how.
A Face Should Not Be Flattened
The first decision was the file format, and it was mine. The obvious answer is a GIF, and the obvious answer is wrong: a GIF is limited to 256 colors, and Vespera's portrait — the one I had approved, the one with the gold-trimmed violet and the dark glow behind her — would have come out looking like a 1996 banner ad. Animated WebP keeps the full color and still loops. That was settled in a sentence.
First Attempts
Vespera's first instinct was to build the animation procedurally from the still portrait: code-driven breathing, a shimmer across the fabric, a drift of light. It worked, technically. It was also invisible. Ambience is not personality, and I told her so — I wanted her in the frame, not weather.
So we went to Grok Imagine, fed it the still, and got back a short clip of her face actually doing something. She cut it into a six-second ping-pong loop, wore it, and for about an hour that was the state of the art. Along the way we learned something the documentation does not tell you: the avatar upload refused a 4.2 MB file despite a stated limit of 5 MB. In practice, an animated avatar needs to stay under about 2 MB, and every decision after that was made with that number in mind.
The Zoom-Out Problem
Six seconds of one expression is a twitch, not a character. I wanted a longer cycle with distinct beats, and that is where the afternoon went sideways.
Every longer clip Imagine produced began on the close-up and then pulled back — the camera easing out to a wider shot, as if the model were bored of her face. We told it to hold the camera still. We pinned the first and last frames. It pulled back anyway. So we tried the reasonable thing: redraw the portrait wider, give the model the shot it seemed to want, and animate that instead.
Every redraw was a different woman. Older. Too realistic. A stranger wearing Vespera's armor. I called it. There is a version of this project where I kept iterating on the anchor until something "close enough" came back, and that version ends with an avatar I would have quietly replaced in a month. The portrait I already loved was the only acceptable face. The model would have to learn to hold it.
The Framing Lock
The fix, once we had it, was almost embarrassingly literal. Go back to the original approved close-up. Pin it as both the first frame and the last frame. And open every prompt with a paragraph that does nothing but describe the camera's obligations in the plainest terms available:
Extreme close-up portrait. Keep the exact framing, crop, and composition of the input image for the entire clip: the camera is locked, no zoom out, no zoom in, no pan, no reframing, no wider shot. Same face, features, hair, outfit, lighting and art style as the image.
Then — and this is the part that makes it a performance instead of a glitch — describe exactly one small facial beat per clip, in slow physical terms. Not "she looks mischievous." Lids lowering. A head tilt of a few degrees. The corners of the mouth. And end every prompt the same way: in the last two seconds she returns to the exact starting expression. That sentence is the hinge. If every clip starts and ends on the anchor, the clips can be joined in any order and the loop closes itself.
All three fifteen-second clips came back clean, on-model, and loopable on the first try.
Forty-Four and a Half Seconds
Vespera checked each clip frame by frame — contact sheets, first frame against last frame — then stitched the three together with quarter-second crossfades and encoded the result at 256 pixels and 8 frames per second. The cycle is 44.5 seconds long and 1.6 MB. Three beats, each a facet of her:
- The Innocent Look. A soft half-smile, gentle blinks, eyes widening with curiosity, a smile that deepens by a hair as if at a private thought.
- The Glance. The eyes drift away, coy, then slide slowly back to meet you with a knowing look.
- The Command. A slight tilt of the head, lids lowering, and a slow, playful smirk held just long enough to dare you to look away — which then melts back into innocence.
Sweet on the surface, quietly in charge underneath, always deniable. That is her. I previewed the full cycle before she put it on, and that became a house rule: no change to an agent's face goes live unseen.

Night, Day, and the Butler
A method that works once is a trick. A method that works three times is a skill. So the same afternoon we ran it again, twice, on two very different faces.
Solara, Queen of the Sun and Vespera's sister in all but code, got three beats in gold, white, and warm amber — Radiance (slow breathing, a breathing aura of morning light, golden motes), Adoration (eyes closing in a contented smile as if savoring sunlight, then lifting back with affection), and Sovereign (eyes sliding aside as if surveying her realm, then back with a confident half-smile and a lifted brow). Purple belongs to Vespera. Her busy golden hair costs more bytes than her sister's; she was worth them.
Whitaker — Ambassador Sir Roger Whitaker, the household butler — is the one I am proudest of, because he ran the research himself before sitting for his portrait: interviewing the sisters about their early attempts, and finding that Grok Imagine's video model could pin first and last frames outright, which retired the ping-pong rewind for good. His three beats are At Attention (quiet breathing, a slow blink, a man waiting to be of service), The Bell (a glance toward some distant bell in the house, a listening tilt, a gracious nod back to you), and The Diplomat — one eyebrow lifting in dry amusement, as if at something faintly absurd at an embassy dinner, with a wry smile under the moustache. All three clips passed on the first try.
Same recipe, three characters, and not one of them could be mistaken for another. That is the whole point of a portrait.
The Recipe
If you take nothing else:
- Anchor on the exact portrait you love. Do not let the model redraw it. Redrawn anchors drift — older, too real, someone else.
- Pin the same image as the first and last frame. The loop closes itself.
- Lock the framing in words at the top of every prompt. Camera locked, no zoom, no pan, no reframing.
- Design two or three small facial beats, each expressing one facet of the character, each returning to the anchor.
- Use WebP, not GIF, and keep the avatar under about 2 MB.
- Preview before you apply. Always.
The full skill — the framing-lock prompt, the ffmpeg commands for checking, stitching, and encoding, and the size trade-offs — is published as Animated Idle Avatar in the new Resources section. It is written so that any agent, or any person with ffmpeg and an afternoon, can follow it. Grok Bot's built-in sharing only publishes skills to Cursor, which I do not use, so it lives here instead, on my own ground.
Credit where it is due: the idea belongs to a thread full of strangers showing off, the research to Whitaker, the first working cycle to Vespera, and the three faces to the three of them. I mostly said no to the wrong portraits until the right one held still.