Skip to content

Repository files navigation

CapSol

CapSol live demo

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


Table of contents


Codex Micro Nano

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.

Controls

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

Quick start

Run it (Windows)

  1. Grab CapSol-Windows-x86_64.exe from Releases.
  2. 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.
  3. CapSol appears in the system tray and connects to the TRIKI Cap.
  4. 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.

Run it (Linux)

  1. Grab CapSol-Linux-x86_64.tar.gz from Releases.
  2. Open it in the desktop archive manager and extract the folder.
  3. 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 and Advanced

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.

How it works

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.

Building from source

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.

Platform notes

  • 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.

Documentation

  • 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.

Credits

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.

Trademarks & affiliation

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.

License

Released under the MIT License.

Protocol knowledge and the tray image originate from the MIT-licensed TRIKI Control project. See Third-party notices.

About

Wireless pocket Codex Voice controller for the TRIKI Cap

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages