Desktop dashboard for Claude Code's CLI toolkit feature flags.
Switchboard is built with zero-native — a Zig native host paired with a Next.js frontend rendered in a system WebView. Delivers a single binary for Linux and macOS with no Electron overhead.
- Zig 0.16.0
- Node 20+
- Linux: GTK 4 + WebKitGTK 6 (
libgtk-4-dev libwebkitgtk-6.0-devon Debian/Ubuntu) - macOS: Xcode command line tools
- zero-native framework at
/home/linuxbrew/.linuxbrew/lib/node_modules/zero-native(override with-Dzero-native-path=...)
Install dependencies:
npm install --prefix frontendDevelopment with hot reload:
zig build devProduction build and launch:
zig build runRun tests:
zig build testPackage for distribution:
zig build packageBuild and version management:
make build # bump BUILD, sync to app.zon, rebuild
make run # dev build + launchInstall Linux desktop entry:
make installDiagnose your setup:
zero-native doctor --manifest app.zon- Source:
frontend/app/ - Production export:
frontend/out/ - Dev server:
http://127.0.0.1:3000/ - Flag state is persisted to browser localStorage under the key
switchboard.flags
Switchboard defaults to the system WebView. You can switch to Chromium/CEF:
zero-native cef install
zig build run -Dweb-engine=chromiumFor automated setup with CEF auto-install at build time:
zig build run -Dweb-engine=chromium -Dcef-auto-install=trueUse -Dcef-dir=/path/to/cef to specify a custom CEF location.
Verify your web engine setup:
zero-native doctor --web-engine chromiumLogs are written to:
~/.local/state/dev.zero_native.claude-feature-flag-app/logs/zero-native.jsonl
Override the log directory during development:
export ZERO_NATIVE_LOG_DIR=/custom/pathControl log output format:
export ZERO_NATIVE_LOG_FORMAT=text # plain text
export ZERO_NATIVE_LOG_FORMAT=jsonl # JSON lines (default)