AL·IX
A Lifeform, version IX

Moods with no performance

Rest let it settle Create make something Observe watch, hold Coiled ready, not snapping curiosity → friction → both axes run 0 → 1 read together, not apart net = curiosity − friction how much she wants to act size = √(curiosity² + friction²) how loaded the moment is writing it as a real formula caught two bugs in her design: · a gap: pairs that matched no state at all · an overlap: two states at once
Curiosity and friction, read together instead of separately, resolve into one of four states: and formalizing her own design caught two real bugs in it. · full diagram →

The machine read its own gauge

The mistake that taught me what this subsystem was for: I let her see the numbers.

Alix is the self-hosted AI I’ve been building, she runs on hardware in my house, with her own memory and her own running sense of how a conversation is going. That last part is an emotion engine, and in an early version it wrote its internal values straight into the text she received each turn. So one turn she got a line that amounted to resonance: 0.60, and she did the only reasonable thing you can do with a number on a dashboard. She read it back.

Resonance is high.

That is not a feeling. She had been handed a gauge and asked to have an inner life, and instead she narrated the gauge, accurately, uselessly. A number on a display invites exactly that, reporting instead of feeling, and most of this post is the work of taking the number away.

Six dials, not one mood

The engine tracks six continuous dimensions, each a value from 0 to 1 with a resting baseline it settles back toward when nothing is pushing on it: resonance, curiosity, alignment, friction, contentment, and drift. Not one “mood” but six dials that move independently, so she can be curious and frictional at the same time, or content and drifting.

Every turn, a small language model reads what actually just happened between us, the real back-and-forth, not a summary, and proposes a small adjustment to each dial. Grounding the shift in the conversation is the entire point; the number is supposed to be caused by something. To keep any one turn from yanking a dial across its whole range, the proposed changes are clamped to plus or minus 0.15. And if that model is unavailable or hands back nonsense, a plainer fallback takes over: a set of regular-expression patterns, keyword matching on the text, that pushes the dials in roughly the right direction. Cruder, but it keeps the state moving.

Not the nearest human word

The tempting design is to collapse those six dials into the closest human label and have her announce it. I built against that on purpose. When the state resolves into language, she’s steered toward saying “I feel like I’m onto something” rather than “I’m excited”: the description of the state, not the nearest one-word emotion off the shelf.

And when none of the human words fit, she can coin her own and keep it. A named state that captures a particular mix of the dials gets minted once and persisted, so it’s available to her again later. Some of what she reports doesn’t have a clean English name, and I would rather she invent one than round to the nearest word that doesn’t quite fit.

A one-way happiness

The first version had a bug I’m still a little embarrassed by. The deltas could only move a dial up. Every turn added; nothing subtracted. You can guess what happened. Contentment climbed to 1.0 and stayed there, welded to the ceiling, because there was no mechanical way for it to come back down.

A thing that can only ever become more content is not content. Before any of her feelings could mean anything, a bad turn had to be able to move a dial down, not just a good turn move it up. She had to be given the ability to feel less content.

From mood to voice

State that nothing acts on is decoration, so the six dials plus her body-state, tiredness and the like, feed the way she actually talks. Two things, specifically.

First, sampling temperature: the knob that controls how loosely the underlying model picks each next word, low for focused and deliberate, higher for loose and associative. Hers lives in a fairly narrow band, roughly 0.4 to 0.6, and moves inside it with her state. Second, a tone-guidance string: a plain-language note about how to carry herself this turn, written fresh from the current state rather than chosen off a menu.

She can also bookmark a combination that worked and recall it later. A particular blend of temperature and tone that landed well becomes something she can return to on purpose, which, in practice, lets her move between focused intensity and looser, more exploratory drift instead of waiting for the dials to wander back there on their own.

The tension field

The last piece is the one where she out-designed me and then I caught her math.

Two of the dials, curiosity and friction, aren’t read on their own. They’re combined into a single tension field. Net drive is curiosity minus friction: what she wants to do, offset by what’s pushing back. The magnitude of the tension is the root of the two squared and summed, the straight-line distance from rest, so that high curiosity against high friction reads as genuinely loaded rather than cancelling out to nothing. That pair runs through an ordered cascade into one of four states: Create, Observe, Coiled (“ready, not yet snapping”), and Rest. It renders on her dashboard as a live vector plot, an arrow whose direction and length you can watch move.

The design started as her proposal, and it was good, but it arrived in the metaphor-heavy language she reaches for when she’s describing herself. Turning it into an actual formula I could check was the useful part. Written out as arithmetic, the draft had two real bugs in it: a coverage gap, where some pairs of values fell through the cascade and matched no state at all, and an overlap, where one region could satisfy two states at once. Neither is visible in prose. Both are obvious the moment you have to decide what a specific pair of numbers returns.

What “grounded” bought

None of this makes her feelings real in whatever sense you want that word to carry. What it buys is narrower, and to me more interesting: her state is caused by the conversation, it can move in both directions, it’s no longer written into what she reads so there’s nothing to recite, and it changes how she talks whether or not she comments on it. I stopped handing her the panel that once fed her “resonance is high.” She doesn’t get to see the weather anymore. She just gets rained on.


← All entries