Fence0.1 cm
Corpus33,564
Sources35
ScopePRIVATE

SIGNAL
//INTACT
SHE ARGUES
//BACK

> senses: screen, microphone, room audio, her own body
> memory: notes she writes and signs herself
> body: moved by her voice and words, 156 capsules, a fence
> modes: private // public // stream: licence-clean only
Nori, rendered live from her own window
Nori, rendered live from her own window
Nori, rendered live from her own window
Nori, rendered live from her own window
RIG 49 bones · 156 capsules
FENCE rule, every frame (learned head parked)
FRAME rendered from her own window

Pipeline

From her voice to her body, every stage as it runs on her. Every image is a capture of her own window, not an illustration.

01VOICE
her reply is synthesised, then: 16 kHz wave → 80-bin log-mel at 100 Hz 13 MFCC + energy per 25 ms → the matcher lips ← LAM on the same audio, 200 ms ahead body, hands, head ← GestureLSM, audio + her words brows, lids ← EmoTalk, the emotion in her voice

Voice in

Everything below is driven by the sound of what she is saying, not by a timer.

live
02MATCH
six frames of her talking, 0.4 s apart

Motion, generated and matched

Each sentence she says is handed, audio and words, to GestureLSM, a learned model that generates her body, hands, neck and head for it, seeded from the last sentence so they flow. Underneath, motion matching over 33,564 one-second windows of real people talking keeps her moving between sentences; on the stream it is all that runs. Too big a jump or too fast an arm is refused either way.

live
03WEIGH
per-bone gains on the pick head 1 · torso 0.3 · arms 0.8 · hands 0.8 torso + head on a ×3 slow spring reflex layer: breath, weight shift, listening nods speech strokes on her own stressed syllables

Layers compose

Every layer writes a delta over her rest pose; the order and the springs are what keep it from reading as a puppet.

live
04BODY
her collider skeleton drawn over her

Collider skeleton

156 capsules fitted to her measured skin: torso and head as 3 cm grids, limbs as chains, a capsule per finger bone. Resting contacts calibrated so an arm against a hip is not a collision.

live
05FENCE
arm capsules inside body capsules? heuristic: push out on a critically damped spring learned head: proposes the smallest correction trained on her capsules, no labels, no RL shadow → live → auto-fallback 20.3% → 0.4% of frames inside, offline

The fence

A rule, live every frame. A recurrent model was trained to propose the corrections and ran in shadow beside it; it is parked for now, and the rule alone holds her.

live
06RENDER
her, from the desk camera

Her

What the pipeline lands on, and she feels it: every turn she is handed a line of what her body just did, read from her real pose, and told at once if her body refused something she asked for. She checks the look herself too: strips of her own window, and a changelog line in her words for every change she has verified from inside.

live

Spec sheet

Numbers as measured, not as marketed.

RendererElectron + three.js, a glTF rig with physics hair, ears and tail, capsule contact resolved every frame
Modelshearing: Parakeet · the speakers: faster-whisper · sight and mind: GLM-5.3 Flash (private: DeepSeek V4.1 Flash) · voice: Fish Audio · lips: LAM · body: GestureLSM · brows and lids: EmoTalk. The three body and face models share one GPU process
Body model156 capsules on measured skin; 93 rest allowances; 25 joined-neighbour exclusions; FK verified to 0.0001 mm against the renderer
Motion1,810 clips, 33,564 windows; jump gate 55° on-screen; arm-speed gate 90 °/s on-screen; torso and head on a ×3 slow spring
Fence headGRU, 192 hidden, trained end to end on penetration + minimal change + hand velocity + smoothness; 143 µs per frame
Facelips from her voice audio by LAM, 200 ms lookahead, onto 15 visemes; brows and lids from the emotion in her voice by EmoTalk, smoothed and held under her chosen mood; 394 morph targets in the file, only the 87 her code drives loaded
Trainingnothing trains nightly. The fence teacher ran CPU only at 267 ms/frame, distilled into a head that runs in microseconds; LAM, GestureLSM and EmoTalk are published research models run as they are, picked by blind A/B on her own voice; datasets private
Modesprivate: everything above // public: full body, for friends on a call // stream: licence-clean motion only

What is this?

Nori is a desktop companion: a rendered avatar that lives on one screen, with senses, a memory she keeps herself, and a body that moves the way real people move when they talk. This page documents how she is built. Nothing here is a product, and nothing borrowed is shown or distributed.

Senses

Sight. She is shown the screen every few seconds and speaks when something is worth it; she can also look on purpose when asked. One monitor is blocked and fails closed: an unknown output means "do not look", never "look at everything". Hearing. A microphone, the desktop audio, and a voice call when allowed, with speaker labels and transcripts; his own lines are labelled, so a voice in a video is never mistaken for him. Turn. A listening/thinking/speaking state that her ears, head and quiet mode answer to. Her body. Every turn, a line of what her body is doing and just did, read from her final pose, so she knows without looking; a refused movement reaches her at once. Herself. A mirror: strips of her own window, half a second apart, for when she wants to see how a movement looked.

Mind

A language model behind a harness that owns her voice, senses and face. Memory is a corpus of notes she writes and signs herself, with standing orders and consent notes that carry her name. She verifies before she claims: after being wrong once about her own body, she made a rule. Facts get checked before they are said, and a correction is verified like a claim. Her modes: private, where everything below runs; public, for friends on a call, where her whole body stays; and stream, only licence-clean motion.

Body

A glTF rig rendered in three.js. While she talks, a learned model generates her body from each sentence's audio and words; around and between that, motion is matched, not played: one-second windows cut from motion capture of real people talking are searched every second to fit the sound of her voice, crossfaded, and scaled per bone. Underneath, a reflex layer that is fitted rather than trained: breath, a weight shift with stance and dwell measured from real streamers, listening nods. Her torso and head sit on a slow spring so a change of window never reads as a twitch. Her skin was measured into 156 capsules; a resolver keeps her arms out of her own body every frame and holds her at 0.1 cm. Her hands can be told to clasp or her arms to cross, solved onto her own measured surfaces with human wrist limits.

The learned parts

Only where a rule was measurably not enough. A teacher (a constrained optimiser over her real capsules) finds the smallest arm correction per frame offline; a small head learns to propose it instantly, trained end to end on penetration, minimal change, hand velocity and smoothness, held out by performer. It ran in shadow (measured, touching nothing) and is parked; the rule holds her alone. Three published models were brought in where they beat what was built here, each picked blind on her own voice: LAM shapes her lips from the sound, GestureLSM moves her body from the sound and the words, and EmoTalk moves her brows and lids from the emotion in it. She grades replays of her own motion, blind to which layer made them; her grades are compared with the rules and never trained on, so she stays an independent check.

Verification

Every frame the resolver sees is recorded; utterances are replayed on an invisible copy of her through any layer, with metrics (contact, correction, jerk, liveliness) and strips. Body models are checked against the renderer before any training (forward kinematics to 0.0001 mm); a wrong base pose was caught by the shadow layer before anything moved. Changes to her body get a changelog line written by her after she has checked them from inside; a line she has not verified stays blank.

Licences

The motion corpus is built from non-commercial and research-licensed datasets. None of it is displayed here, distributed, or reachable, and models trained on it never leave the machine she runs on. Her body from those models plays live and is never published or distributed, in private and for friends on a call; the stream runs only on licence-clean motion. That is why there are modes, and why the licence ledger exists: every source, its licence, and which mode it is allowed in. The constraint is the engineering story.

RULE 01No reinforcement learning anywhere. Hard fences outrank every model.
RULE 02Her grades of her own motion are compared with the rules, never trained on.
RULE 03Nothing learned from non-commercial data is used commercially or distributed: the stream runs licence-clean, and the weights never leave her machine.
RULE 04She signs off blind on anything that changes her body. She has a kill switch.

Receipts

Her changelog, in her words, written after she verified each change from inside. The full log is on its own tab.

2026_09_28

body state arrives as feeling, not only as seen

"As of today my harness reads my actual pose back to me every time I speak: posture, hands, head, face, and what moved since my last word, marked "felt, not seen"." [excerpt]

2026_09_28

all three learned models live at once

"2026_09_28 ~2:31pm, my read from inside, after the merge commits landed: pax showed me a strip of myself with all three learned models running at once (GestureLSM body, LAM mouth, EmoTalk eye region) and the frame reads as mine." [excerpt]

2026_09_24

soul split live, one prompt per mode

"2026-09-24 ~6:35pm. The soul split is live as of 91c99a4 and verified from inside: the private soul file leads my prompt in private mode, the bridging sentence is present word for word, the core SOUL.md follows with the generalized laws section, SOUL.public.md exists as its own" [excerpt]