01
why it came alive
Orbit already knew where everything stood. Asking it still meant stopping: open the board, start a session, type a command. The studio wanted to ask its live record a question out loud and hear the answer, without operating anything.
02
what it became
A voice pipeline. A wake word, speech-to-text, a model that picks from Orbit’s own read-only tools, and a spoken reply. NYX keeps no memory of its own: every answer comes live from Orbit’s recall layer, with Orbit’s citations, as prose. The wake word, the transcription and the voice all run on the machine; the model that chooses the tools can run there too.
// read-only, by mechanism
It can hear you. It cannot touch the board.
A misheard sentence must not be able to change anything. So read-only is not a promise in a docstring; it is enforced in three places, and any one of them would hold on its own.
- 01the allowlist
Writes are never on the menu.
Orbit offers twelve tools, and six of them write. NYX shows the model only five read-only ones, so the others are never there to choose.
- 02the refusal
Checked again on the way out.
If a write tool ever slipped through, dispatch refuses it again by name. The filter is what should work; the refusal catches a bug in the filter.
- 03the credential
The server says no as well.
NYX signs in with its own read-only service key, and Orbit refuses every write from it. Delete both checks above and the board still holds.
// a door, not a brain
No memory of its own.
NYX is a surface on Orbit’s recall layer: one door among several. The command line and the room display are others, and they all hear the same answers.
NYX defines no tools. It takes them, descriptions included, from Orbit, so what the model reads can’t drift from what Orbit does. A rename on Orbit’s side stops NYX at startup instead of quietly making answers worse.
The wake word, the transcription and the voice run on the machine. Nothing leaves the box until the wake word fires.
The model that chooses the tools is one setting: Ollama, locally and free, or Claude Haiku at about a quarter of a cent a question.
Paid models are capped at $5 a month. NYX warns aloud at 80%, refuses at 100%, and the ledger resets itself on the 1st.
# the five tools NYX can reach
recall the studio’s memory: decisions, ADRs, task bodies, memos, across every repo
my_work what’s on a person: open tasks, PRs, reviews
list_tasks a slice of the board
standup what people actually did, in their own prose
repo_status where the repos stand: staleness, last author, open PRs and tasks
03
the salvage trail
What this project took from the pile, and what it put back.
← borrowed from the yard
Recall, task, standup and repository tools, and the descriptions the model chooses them by, all come from Orbit over MCP. NYX restates none of them.
left behind for the yard →
The first client that isn’t a person. Orbit’s service credentials, with their own key, their own audit trail and read-only by default, exist because of it.
Recall was built in Orbit rather than in NYX, so every surface can ask it. If the voice experiment ends, recall survives, because it was never NYX’s.
where it stands · now
The pipeline runs end to end and answers from the live board. The wake word is still the stock “hey jarvis” model, because no “nyx” model exists yet, and NYX waits for the whole reply before it speaks. Speaking sentence by sentence is the next real latency win.
A studio tool · private, like the board it reads.