spot-router turns a typed request into one of 1,050 commands in about 4 ms, on CPU, offline. It is a small static-embedding model in pure Go. Spot runs the command itself when the router is sure and hands everything else to a bigger AI.
Spot is a Spotlight-style launcher for Mac and Windows, with a daemon and CLI on Linux. Type play rajini jailer 2 song and increase volume: Spot plays the first YouTube result and raises the volume in about 1 second. No AI call happens on that path.
The router does one job. It reads your words and names the command. It does not write text, chat or plan.
Two rankers, one fused list, one gate.
The router looks up a vector for each word piece and takes the mean. No transformer runs at query time, so a CPU answers in about 4 ms.
A word-match ranker scores the same request. It tolerates typos and prefixes.
The two ranked lists merge by rank, not by raw score, so neither scale dominates.
When the router is sure, Spot runs the command directly.
Fine-tuning uses contrastive loss (MultipleNegativesRankingLoss) on (phrasing → command) pairs and takes about 1 minute on a Mac CPU. A small LLM generated 10,527 natural phrasings: Tanglish, typos and questions.
First guess / in the top 3, on 50 held-out real requests.
| Request | Should go to |
|---|---|
| make it louder | volume up |
| shut up | mute |
| who is the prime minister of india | the AI, not a command |
A wrong first guess costs nothing when the gate holds: the request goes to the AI instead of running the wrong thing.
spot-router "make it louder" prints JSON. spot-router --serve answers one query per stdin line. It runs on macOS, Linux (x64, arm64, arm, including the Raspberry Pi) and Windows.
spot.deemwar.com (downloads page, being built now).
Sources: spot-router evaluation on 50 held-out requests; Spot build notes (binary size, model size, latency, training time).