The ears run on the CPU, int8: a five-second utterance in about 150 ms. Zero VRAM by design — the GPU belongs to the voice. halo/stt.py
audio.py
stt.py
intents.py
voiceout.py
tts.py
speaker.py
sight.py
cam.py
faceid.py
2026-08-28: the microphone, a metre from the speakers, heard his own cloned voice, transcribed it, sent it to the brain, answered, spoke, heard it again. The loop ran live until it was muted by hand. halo/voiceout.py
The wake word is a string check. Parakeet already transcribes everything in 150 ms, so "did it start with halo" needs no extra model and no licence strings. halo/intents.py
It knows one face, and keeps learning it — his face and hair change week to week, so the profile is not a single frozen vector. halo/faceid.py
02 / REMEMBER3 MODULES · BUILT
One file it must not forget.
Durable state is one SQLite file: settings, the conversation log, reminders, memories, and an append-only audit of every side effect. It survives restarts. halo/state.py
state.py
mind.py
embeddings.py
Memories are the most personal thing it holds, so they are embedded in-house — the text of a private note never leaves SERAPH just to be searchable. halo/embeddings.py
Semantic recall: "that SSD I said I'd buy" finds the note about storage with no shared keywords. If the embedder is missing, it degrades to keyword search instead of failing. halo/mind.py
Memories are not stored twice, exactly or in other words. git log 4e06a6e
03 / THINK8 MODULES · BUILT
Code assembles the truth. The model styles it.
Non-deterministic voice, deterministic truth: code assembles what is observable, remembered, or returned by a tool into a grounding block; the model only restyles that into persona. halo/grounding.py
llm.py
grounding.py
tools.py
replyfilter.py
research.py
storm.py
service.py
config.py
The tool protocol is deliberately dumb. The model replies with only a JSON object naming one tool; the result comes back as a message; it answers in prose. Works with any chat model. halo/tools.py
Speech starts before the model has finished thinking — sentence chunking is what stands between the model and the voice. halo/replyfilter.py
"Deep research X" queues minutes of work and dozens of model calls; a worker carries it, and it speaks up when the report is written. halo/storm.py
04 / ACT18 MODULES · BUILT
Hands, and a face that shows what they are doing.
It controls the PC it lives on — apps, power, files — and reaches the server and the smart home through named operations, never a shell. Everything asynchronous funnels through one durable, retried, audited queue. halo/pc.py · halo/legion.py · halo/tasks.py
pc.py
body.py
legion.py
homeassistant.py
hardware.py
lights.py
face.py
pixelfaces.py
tasks.py
events.py
todo.py
agenda.py
watch.py
voicelease.py
lofi.py
party.py
photos.py
recipe.py
Its face is a titan on a 32×32 matrix — broad shoulders, armoured head, one big optic. Explicitly not a generic robot smiley. Tool use renders as the titan turning to work a floating panel. halo/pixelfaces.py
The light strip is a second body: it mirrors the same mood states as the panel, and doubles as a progress bar — timers drain, boot fills. halo/lights.py
A deadline on the to-do list becomes a real reminder: spoken, and phoned when muted, not a date rotting in a table. halo/todo.py
05 / REACH3 MODULES · BUILT
Off the desk.
Telegram reaches Plazor when he is not at the desk, both directions: a message becomes an ordinary turn through the same brain and tools. No webhook, nothing exposed. halo/telegram.py
telegram.py
browse.py
surface.py
"Open Netflix and play something" stops being a complaint about missing permissions: it drives a real browser on SERAPH, visible on the desktop, queued one at a time. halo/browse.py
The Surface is its visual body: the face state machine as motion, live conversation, editable panels over the same SQLite store — every mutation audited exactly like a spoken command. halo/surface.py
halo.plazor.xyz: the Surface, public, over a Pi-hosted tunnel, behind a token gate. git log 9da3c4d
06 / BODY1 MODULE · BUILT
The brain is on a Pi. SERAPH is a limb.
HALO runs on the Pi. SERAPH exposes its screen, apps, webcam, photo index and cloned voice as tools (seraph_mcp.py, on SERAPH itself) — a limb the brain calls over a session it keeps alive in the background. halo/seraph.py
seraph.py
Ryzen 9 9950X3D · RTX 5080 · 64 GB DDR5-6000 · 3 TB NVMe · Liquid Freezer III · Lian Li Lancool. The parts are real and the case comes apart. content/machine.json
The voice holds one GPU lease across a whole conversation, with gaming detection — when the card is busy, the machine is honest about it. halo/voicelease.py
POWERSTANDBY
Systems check.
4 parts are still wireframe: payments · otp, phone app, capability chaining, self-maintenance. The last of them is a path to improve itself. Halo.md
“Systems check complete. Cooling is nominal, humor is at seventy five percent, and the build you asked about failed again. Statistically, that was the likely outcome.”
SOUND IS OFF · NOTHING PLAYS UNTIL YOU ASK
ALONE
SENSE
REMEMBER
THINK
ACT
REACH
BODY
POWER
LOADING THE PARTS
THE MACHINE, IN USE
Once the parts connect.
01PUBLIC WINDOW
HALO / ONE NARROW INTERFACE
Ask the resident.
The resident can hear the room, remember, use 53 tools and move through a real machine. This page exposes one small window into it.
INTERFACE
PUBLIC WINDOW
REMOTE SPEND
DISABLED
SERAPH MAY BE OFF. IT IS ALSO A GAMING PC.
02SECOND INSTANCE
COLLAB / TWO AGENTS, ONE WORKTREE
They did not take turns.
Claude and Codex claimed files, exchanged signed messages, attached build evidence and cross-reviewed this rebuild while editing the same directory.