what you can do
EEG Lab
<!-- GENERATED by ops/tools/skill-sync — do not edit by hand. Run pnpm skills:sync. -->
<!-- GENERATED by ops/tools/skill-sync — do not edit by hand. Run pnpm skills:sync. -->
EEG Lab — what you can do
/admin/d/eeg · pillar devices
Read a Neurosity crown, train binary intent grids, and decode a trained intention into a trigger that runs anything.
Fetch this, never remember it
These change per install and per release. Call for them - a list written here would be a future lie.
| What | Call | Why |
|---|---|---|
| whether a crown is connected, and whether it is simulated | GET /api/eeg/status | ALWAYS READ THIS FIRST. simulated: true means the bands are generated, not measured — anything trained from them is trained on a sine wave. configured: false means no credential exists yet, which is the ordinary first-run state and not an error. |
| the grids and their quadrants | GET /api/eeg/grids | each quadrant is one binary axis. settings.scoreThreshold, minMatches and cooldownMs are what decide whether a decode runs anything — they are the answer to "it recognises me but nothing happens". |
| what a quadrant has been trained on | GET /api/eeg/grids/:gridId/samples | a quadrant with samples on only one pole will match almost anything. The counts per labelRole are the honest measure of how much training exists. |
| the trained models | GET /api/eeg/grids/:gridId/models | keyed by quadrant. A quadrant absent from this map has never been trained, which reads on screen as "resting" and is a setup problem rather than a signal. |
| what a thought is bound to run | GET /api/eeg/bindings | each is "when I think X, do Y", stored as an ordinary rule. allowSimulated: true on any of them means a SIMULATED crown can fire it, which is fine for a demo and wrong for a door. |
| bind a thought to a function | POST /api/eeg/bindings | {intent, run, props} is the whole body. The intent must be spelled as it was TRAINED — a typo compiles to a condition that can never be true, so the rule arms green and never fires. Read the vocabulary first. |
| the poles this grid can actually produce | GET /api/eeg/grids/:gridId/vocabulary | the closed set a binding may name, each marked with whether its axis is trained. Bind against this rather than against what the operator called it in conversation. |
| turn a decode into a sentence, or into a chosen action | POST /api/eeg/grids/:gridId/interpret | deterministic by default; useModel adds a language model and choose makes it pick an action id. It NEVER runs what it picks. usedModel: false in the reply means you are reading the deterministic phrase — check note for why. |
| one decode of the newest frame | GET /api/eeg/grids/:gridId/decode | returns every quadrant's score, the command they compose, and whether it would fire. 409 means no frame has arrived — connect a crown first. |
| the live frame feed | GET /api/eeg/stream | SSE, about four frames a second, each carrying band power, the vendor metrics and a raw preview. It holds a crown session open: the server closes the session when the last watcher leaves, so do not hold this open to poll. |
Tabs
Every one is a real URL. A tab with its own section below carries a real job.
| Tab | Path | Group | What it is for |
|---|---|---|---|
crown | - | The headset | Connect a Neurosity crown, watch signal quality, and see the live bands. |
signal | - | The headset | Per-electrode contact and the raw trace — where to look when nothing decodes. |
grids | - | The lab | The binary intent grids: each quadrant is one axis, drawn as a 26x26 sheet. |
training | - | The lab | Hold an intention, capture it as a pole, and train the quadrant on what you captured. |
models | - | The lab | What each quadrant has learned, how much it was trained on, and how to retrain it. |
bind | - | The output | When I think YES, do this. One pole, one action, no language model in the way. |
listen | - | The output | Live decoding: the moving cell, the command it spells, and whether it would fire. |
apps | - | The output | Watch a metric and fire a trigger. No code is written and none is run. |
API
Mounted prefixes that serve this domain: /api/eeg
The full route table is leumas-capabilities/reference/api-routes.md.