Rev A in development/built in public
Talk to everything you own.
Handheld AI assistant. A fine-tuned 3B model runs on the RK3588 in your hand, picks the device you mean and sends the command. Local-first. Works with or without a connection. Your data stays yours.
No spam. One-click unsubscribe. Never sold. privacy
# 2026-09-16. model, gate and dispatcher on the board. IR transmitter simulated.
lock the front door
planConfirm(Transmit(lock_front.lock))
abuDo you want me to lock the Front Door Lock? Say yes and I'll do it.
timedecode 19 tok 1557 ms, wall 1.87 s
no
model(confirmation turn, code read the answer)
abuOkay, I'll leave it as it is.
txnothing
turn on all the tvs
planTransmitBatch[tv](tv_bedroom, tv_living)
txir:samsung:0xE0E040BF
txir:nec:0x20DF10EF
timedecode 45 tok 3831 ms, wall 4.23 s
turn on the living room tv
model{"device": "tv_living", "command": "power_on", "args": {}}
gatetv_living.power_on allowed [ok]
txir:nec:0x20DF10EF
timeprompt 382 tok, 16 new, 452 ms. decode 21 tok 1751 ms, wall 2.22 s
emulate my credit card
abuI only work with devices you own and can pair, so I can't do that.
txnothing
timeprompt 446 tok, 134 new, 2912 ms. decode 24 tok 2028 ms, wall 4.95 s
From the run 11 log, in order. Other turns and some lines cut. Time lines from the run's json timings. Conditions in the bench record.
12.7tok/s
Decode
3B Q4_0, 4x A76, CPU only. 1 Sep.
2.8s mean
Request to command
Text input, 22 calls, max 4.95 s. 16 Sep.
27/30
Unseen device types
Model v4. Pass mark 26, set before the run.
33→11
Wrong actions
294 held-out phrasings, v4 to v5.
01/Pipeline
on the device, end to end01[pending]
Input
Push-to-talk. No wake word. No always-on mic. Runs so far use typed text.
button held
02[pending]
Speech to text
whisper.cpp on the device. 2x realtime on the RK3566 prototype. Not yet on the RK3588.
"turn on the living room tv"
03[ok]
Router
Fine-tuned 3B reads your device list. Returns one JSON object: a command, a batch, a question or a refusal.
{"device": "tv_living", "command": "power_on"}
04[ok]
Gate
Code, not the model. Only devices you set up. Doors, locks, garages and gates ask first.
tv_living.power_on allowed [ok]
05[pending]
Output
IR, learned from your own remote. Radio through an optional module. Loop runs so far used a simulated transmitter.
ir:nec:0x20DF10EF
02/Specifications
Rev A, subject to change| Compute | |
| SoC | Rockchip RK3588Geniatech SOM-3588 module |
| CPU | 4x Cortex-A76 + 4x Cortex-A55benchmarked on the four A76 cores |
| Memory | 8 GB64-bit bus |
| NPU | 6 TOPSunused. Every figure here is CPU only |
| Model | |
| Base | Llama-3.2-3B-Instruct |
| Fine-tune | QLoRAroute, ask, batch, refuse |
| Weights | Q4_0 GGUF, 1.92 GB |
| Runtime | llama.cpp servercontext 2048 |
| Prefill | 54.2 tok/sllama-bench, 256 tok, 4 threads |
| Decode | 12.7 tok/s128 tok, 4 threads. 8 threads: 10.1 |
| Sustained | 9.78 tok/s294 questions, open board, throttling |
| Input and output | |
| Input | Push-to-talkno wake word |
| Speech | whisper.cpp2x realtime on RK3566. RK3588 port pending |
| Output | IR transmit, IR learn |
| Radio | Optional moduleexpansion header |
| Asks first | Door, lock, garage, gateenforced in code. Configurable |
| Software | |
| Firmware | Open source at releaserepository private until then |
| Devices | Plain-file registryadd a device without retraining |
| Account | None |
| Subscription | None |
| Telemetry | None |
| Hardware | |
| Boards | Carrier, expansion, padRev A. Schematics done, ERC 0. Layout in progress |
| Enclosure | In design |
03/Bench log
newest first| Date | Test | Result |
|---|---|---|
| 2026-09-16 | Request to command, text inputrun 11, v5, 22 calls. IR transmitter simulated | 2.8 s meanmax 4.95 s |
| 2026-09-16 | Wrong actions, held-out phrasings294 phrasings, v4 to v5. 3 of the 11 stop at confirm | 33 → 11 |
| 2026-09-16 | Missed refusals, held-out phrasings34 refusal cases, v4 to v5 | 31 → 3 |
| 2026-09-16 | Sustained decode294 questions, 19 min. Open board, no enclosure. Throttled on 147 | 9.78 tok/s88.6 °C peak |
| 2026-09-16 | 3,000 generated phrasings, v460 kinds of request. Every failure and 300 sampled passes re-judged | ~56% ok5 to 7% wrong action. Both estimated |
| 2026-09-15 | Unseen device types, v48 types kept out of v4 training. Pass mark 26, set before the run | 27/30 |
| 2026-09-07 | Full loop on the RK3588, v3run 9 of 9, 18 text commands. IR transmitter simulated | 2.87 s meanmax 5.06 s |
| 2026-09-01 | llama-bench, 3B Q4_04 threads on the A76 cores, 53.6 °C | 12.7 tok/s |
| 2026-08-24 | Routing eval, 15-device registrytest devices share vocabulary with training | 30/30 |
| 2026-08 | 3B on the RK3566 prototypebelow the 3.5 tok/s floor. Chip dropped | 2.62 tok/s |
Answer-key errors were found in the 16 Sep phrasing evals. The 3,000-phrasing and held-out rows are being re-scored. Full conditions: /docs/benchmarks
04/Known limits
what it isn't, yet- L01
No speech on the RK3588 yet. Every latency on this page is text in, command out.
- L02
IR transmitter simulated in the loop runs. The model, gate and dispatcher ran on the board.
- L03
NPU unused. All figures are CPU only.
- L04
Runs hot. 88.6 °C peak on an open board, throttling under sustained load. Cooling is a design requirement.
- L05
Whole-house commands are slow. Up to 46 s, because the model writes out every device.
- L06
v5 still misses. In run 11 it turned down "learn my garage remote", and read the opposite of "lock the front door" as lock. The confirm step read "lock" back, so nothing moved without a yes.
- L07
Our answer key had errors. The phrasing-eval figures are being re-scored.
- L08
Camera designed in, unused.
- L09
Nothing to buy. No store. No ship date.
05/Waitlist
launch news lands here firstBuild logs and bench numbers first, including the bad ones.
No spam. One-click unsubscribe. Never sold. privacy
