Press to talk, flip to mute microphone, get a blink when it's done.
CapSol turns a roughly $10 TRIKI Cap into a tiny wireless controller for Codex Voice. Put it on your desk, use it without looking for a hotkey, and let the LED tell you when Codex has finished a task.
TRIKI Control is the original open-source GitHub project behind the cap's independently reverse-engineered protocol.
See what the TRIKI Cap is and how to get one.
No installer, no account, no terminal. Just a Cap for your Sol.
MIT licensed · Windows / Linux · Portable, no install
- Codex
MicroNano - Controls
- Quick start
- The tray and Advanced
- How it works
- Building from source
- Platform notes
- Documentation
- Credits, trademarks, license
The TRIKI Cap is a bottle-cap-sized Bluetooth device with a motion sensor, a physical wake/pairing button, and an LED. CapSol connects that hardware to the Codex desktop app and keeps the interaction deliberately small:
- press the cap to start or stop Codex Voice;
- turn it upside down to use Toggle Mute inside Codex;
- turn it right to approve or left to decline an active Codex request;
- see two clear LED pulses when a Codex task finishes;
- see the cap's battery level from the tray or Advanced.
CapSol runs quietly in the system tray. It discovers the user's current Codex Voice, Toggle Mute, Approve request, and Decline request shortcuts dynamically, so changing a binding in Codex does not require a CapSol restart or a second configuration. Opening the portable executable again never starts a second controller process.
| Do this with the cap | In Codex |
|---|---|
| Press while connected | Toggle Codex Voice |
| Press while offline | Wake the cap and reconnect |
Press again once the tray shows monitoring |
Toggle Codex Voice |
| Flip it upside down | Toggle Mute inside Codex Voice |
| Return it upright | Unmute if CapSol muted it |
| Turn right while Codex shows a request | Approve the active request |
| Turn left while Codex shows a request | Decline the active request |
| Finish a Codex task | The LED pulses twice |
- Grab
CapSol-Windows-x86_64.exefrom Releases. - Double-click it. Windows SmartScreen may warn about an unknown publisher; this is an unsigned hobby build, so choose More info > Run anyway if you trust the file.
- CapSol appears in the system tray and connects to the TRIKI Cap.
- Press the cap to toggle Voice. Flip it upside down while Voice is active to toggle mute. When Codex shows an approval request, turn the cap right to approve or left to decline.
That is it. Nothing is installed and CapSol bundles its own runtime. Settings
live in %APPDATA%\Capsol for compatibility with earlier builds.
- Grab
CapSol-Linux-x86_64.tar.gzfrom Releases. - Open it in the desktop archive manager and extract the folder.
- Double-click
CapSol. Choose Run if the file manager asks whether to run or display it.
The current portable build targets x86-64 X11 desktops. It includes the CapSol
runtime, tray dependencies, and shortcut tool. Settings live in
$XDG_CONFIG_HOME/capsol or ~/.config/capsol.
The tray menu stays intentionally small:
- current TRIKI, battery, Voice, microphone, and orientation status;
- enable or disable CapSol;
- toggle Voice;
- open
Advanced…; - quit.
Advanced… is limited to the controls that belong there:
- button and upside-down bindings;
- the four Codex shortcuts currently resolved by CapSol;
- one orientation-sensitivity control;
- one approval-rotation sensitivity control;
- LED blink when a Codex task finishes;
- optional LED blink after every Codex Voice reply (off by default);
- current TRIKI battery percentage.
Changing a Codex shortcut does not require restarting CapSol. The app reads the
active realtimeVoice, realtimeVoice.toggleMicrophoneMute,
approval.approve, and approval.decline bindings again whenever it sends a
command. Approve and Decline use Codex's Enter and Escape defaults when the
user has not customized them.
Short version: CapSol connects directly to the cap over Bluetooth Low Energy and keeps its motion stream active. The hardware does not expose a clean "button pressed" notification. While connected, CapSol recognizes the measured UART marker burst produced while the physical button is down. During LED activity, observable movement is additionally required so LED traffic cannot be mistaken for a press. While offline, the first press wakes the cap; CapSol waits for a real connected-stream marker before it allows a Voice action.
Voice state comes from Codex's local realtime lifecycle. Task-complete LED
alerts come from Codex's local completed-turn records, with desktop
turn-complete notifications as a fallback. The optional per-reply Voice alert
uses Codex's completed local Voice transcripts and is disabled by default.
CapSol controls mute through Codex's own configured Toggle Mute command; it
does not mute the system microphone. Battery percentage comes from the cap's
standard BLE Battery Level characteristic.
The long version - including connected and offline button detection, orientation filtering, dynamic shortcut discovery, and LED signaling - is in docs/how-it-works.md.
Ordinary use never requires Python or a terminal. Contributors can find the source layout and the standalone Windows/Linux packaging flow in docs/build.md.
- Windows. CapSol is a self-contained portable
.exe. The build is currently unsigned, so SmartScreen may show an unknown-publisher warning. - Linux. The portable x86-64 build supports shortcut injection on X11. Wayland compositors may block synthetic shortcuts by design.
- Bluetooth. Both platforms still depend on the operating system's working Bluetooth service.
- Button inference. TRIKI does not expose a dedicated press notification. CapSol recognizes its measured UART marker while connected. The advertising payload after an offline button wake is identical to ordinary autonomous advertising, so an advertisement alone never toggles Voice. If the cap was fully offline, the wake press reconnects it and the next connected press toggles Voice.
- Turn calibration. Approval turns become available after roughly 1.2 seconds of stationary gyro calibration following a connection. A completed turn rearms only after a short cooldown and 250 ms of genuine rest.
- Historical task completions found when CapSol starts are ignored. A new LED signal is retried for up to 15 seconds while the LED is busy or the cap is reconnecting, then discarded.
- CapSol briefly focuses the Codex window when sending an app-scoped shortcut, then restores the previously focused window.
- Per-reply Voice blinking relies on Codex's local realtime continuity record. If a Codex desktop version does not publish that record, task-complete blinking continues to work but the optional per-reply signal is unavailable.
- How CapSol works: button inference, offline wake, orientation, battery, Codex state, dynamic bindings, and LED alerts.
- BLE protocol notes: service UUIDs, stream command, motion frames, battery reads, and LED writes used by CapSol.
- Building & packaging: source layout and standalone builds for Windows and Linux.
- Contributing: project scope and contribution guidelines.
- Changelog: user-visible changes.
- Credits: authorship, device attribution, and independence.
Made by Wojciech "Koksny" Górny.
CapSol builds on the independently reverse-engineered protocol work from
TRIKI Control. The cap itself is
Triki / model CAP001, produced by Caps Apps and distributed by Żabka.
CapSol is an independent, open-source project. It is not affiliated with, endorsed by, or sponsored by OpenAI, Caps Apps, Żabka, or their partners. "Codex", "TRIKI", "Żabka", and related names and logos belong to their respective owners. CapSol ships none of their software.
Released under the MIT License.
Protocol knowledge and the tray image originate from the MIT-licensed TRIKI Control project. See Third-party notices.
