Still, until you need a cue.

We've all had aha moments working with AI. And we've all had the oh fuck moments too — the ones where you close the laptop mid-conversation because you truly cannot look at it anymore.

Those moments live in long conversations, and for a very human reason: our needs are alive. They shift while we speak. Turning a half-formed intention into a precise, buildable ask takes several tries for anyone — and by the fortieth turn, the conversation is carrying every version of what we used to want.

One late night, stuck in exactly that kind of loop, I caught myself thinking: the thing that needs a refresh right now is my brain. That thought stayed with me. As models grow more capable, what turns their power into real outcomes is the human side of the loop — the state we're in, and the clarity we bring. Our working state has become the live variable in the middle of every AI collaboration.

I come from psychology, so the question formed itself naturally: can that state be seen? The literature says yes — decades of affect-detection research show that states like flow and frustration are readable from dialogue structure alone, and those two happen to be the most detectable of all.

That became Stillcue's foundation: work has states, and each state deserves a different response.

Flow — fast tempo, every turn advancing — deserves complete, unbroken silence. Stillcue treats flow as sacred ground and guards it by staying perfectly still.

Confusion — trying, asking, adjusting — is how hard problems get solved. It gets the same silent protection, and room to work itself out.

Frustration — the same requirement restated again and again, messages shrinking into short sharp bursts — is where Stillcue gently steps in. And fatigue — a long session, focus thinning — earns a single soft nudge to pause.

When it does step in, it brings the two things psychology says actually help:

Awareness first. In psychology, change begins with noticing — you can only shift a state you know you're in. Stillcue acts as a mirror made of verifiable facts: this requirement has been clarified three times; your messages have dropped to a third of their length. Seeing it plainly is often enough to loosen its grip.

Then convergence. A long, winding conversation holds real progress inside it — decisions made, details settled, misunderstandings finally cleared. Stillcue gathers all of it and distills it into one clean, sharp instruction, ready to open a fresh conversation that starts exactly where your thinking actually is. Awareness tells you where you are; the distilled restart carries you forward.

Good collaboration with AI, it turns out, is a psychological practice as much as a technical one: know your state, honor your flow, and when the moment comes — refresh the chat, refresh yourself.

The science underneath

Bernie's judgment isn't vibes. The AutoTutor research line (D'Mello, Graesser et al.) spent two decades proving that boredom, confusion, flow and frustration can be reliably detected from dialogue log features alone — with flow and frustration ranking as the two most accurately classified states. D'Mello's work on affect dynamics gave us our most important design rule: confusion is productive and belongs to the problem-solving process; it's unresolved confusion sliding into frustration that signals a collaboration in trouble. So Stillcue protects confusion like flow, and moves only on frustration.

Interruption research (Adamczyk & Bailey; Iqbal & Bailey) shaped when Bernie speaks: interruptions delivered at task boundaries — the natural pause after a reply completes — cost dramatically less in recovery time and annoyance. Bernie only ever appears in that gap, at the moment your attention naturally surfaces.

How I built it

A deliberately simple architecture — three parts, zero frameworks, zero database, everything on your machine:

The watcher (one Node process) tails the Codex CLI session log (~/.codex/sessions/**/*.jsonl, appended in real time as you talk), normalizes each message, and computes seven lightweight signals on every user turn: semantic repetition between adjacent messages (Jaccard similarity), negation density, message-length collapse, burst tempo, context dumping, session duration, and a novelty ratio that tells advancing conversations apart from circling ones.

Two-layer judgment. The signals are deliberately humble: they never classify your state, they only decide when to wake the deeper judge. An LLM then reads the recent turns and delivers the semantic verdict — flow, confusion, friction, or fatigue — and it alone holds the authority to intervene. Below 0.7 confidence, it stands down. The numbers give you verifiable evidence; the model gives the judgment; the division keeps both honest.

The observation room — a quiet localhost page where Bernie sleeps with a slow breathing animation while you work. When friction is confirmed: a soft system notification, Bernie opens his eyes, and a card appears carrying the evidence and the distilled restart prompt with a one-click copy.

Challenges I ran into

Flow and frustration wear the same disguise. Both are fast. The tell is progress: flow advances — every turn brings new content; frustration circles — the same requirement, restated. Building a novelty signal that separates the two took the most tuning of anything in the project.

One wrong interruption ends the relationship. An observer that cries wolf gets closed forever. That fear shaped half the architecture: the LLM gate, confidence-based stand-downs, fifteen-minute cooldowns, and task-boundary-only delivery all exist so that when Bernie wakes up, he's right.

Speaking with care instead of clinical distance. The same detection could power a surveillance dashboard — "emotional anomaly detected." Everything depended on the voice. Bernie shows only facts you can check yourself, and asks like a friend would: "This one's been going in circles — want me to help you start fresh?"

What I learned

Between "model capability" and "real outcomes" sits a layer almost nobody builds for: the collaboration itself. Every tool I know optimizes what the AI produces; the process between the human and the AI goes unwatched. The moment you look at that layer, the signals are almost embarrassingly loud — and psychology has had the reading glasses for twenty years. My favorite realization of this build week: my background wasn't a detour from engineering. It was the spec.

What's next: Bernie moves in with your pet

Right now Bernie lives beside your terminal. His real home is already waiting.

Codex ships with a pet — a companion that sits with you while you work. Today that companionship is ambient: it's there, it's charming, it doesn't yet know you. Stillcue is the missing inner life. Fold this engine into the pet, and the companion you already have gains a mind that runs on your working state:

  • In flow, your pet dozes — and its stillness becomes a signal in itself: a glance tells you you're in the zone, keep going.
  • When frustration builds, it stirs before you reach the breaking point — one paw on the glass, holding a clean restart it has already prepared, so the way out arrives before "forget it" does.
  • Late in a long session, it yawns and stretches — the gentlest possible reminder that you're allowed to as well.
  • Over time, it learns your personal rhythms — what your flow looks like, how your frustration starts — becoming a companion in the true sense: one that knows your states and honors them.

The deeper idea travels anywhere humans and AI work together: pair programming, writing, research. Wherever there's a long conversation, there's a working state worth seeing — and a moment where the kindest thing a companion can do is quietly hand you a fresh start.

Awareness of your state. Respect for your flow. A clean way forward when you need one. Refresh the chat — refresh yourself.

Built With

Share this project:

Updates