RokDock is a cross-platform desktop control center for Roku development. It brings the whole Roku workflow into one window: discover devices on your network, open BrightScript debug terminals, drive an on-screen remote, sideload channels, capture and compare device screenshots, automate device tests, fire deeplinks, build SceneGraph image assets, and read the official Roku developer docs in-app. An opt-in AI assistant is built in.
It is for Roku channel developers who are tired of juggling a telnet client, the ECP
curl commands, the deeplink tester, an image editor, and a browser tab of docs.
RokDock is one tool for all of it.
rokdock_demo.mp4
Connect and debug
- Device discovery - automatic SSDP discovery plus manual device entries by IP.
- Debug terminal - a multi-tab telnet terminal with BrightScript syntax highlighting, search, command history, output streaming to a file, and click-to-open detection of JSON payloads and URLs in the log.
Control and test
- Virtual remote - an on-screen ECP remote with configurable keyboard bindings and a text-entry field.
- Sideloading - upload a
.zip(or signed.pkg) channel package straight to a developer-mode device. - Screenshot capture - pull device screenshots, then zoom, pan, measure, compare against reference overlays (onion-skin), and auto-refresh, with a saved history.
- Deeplinks - reusable launch and input deeplink presets, fired at the selected device and shareable via the RokuDeepLinking JSON format.
- Automation scripts - sequence device actions as typed steps, record from the remote, and import/export RASP (Roku Automation Script Protocol) YAML.
Build assets
- 9-Patch editor - author stretchable
.9.pngassets with live previews and paired 1080p/720p export. - SVG converter - rasterize and quantize SVGs to Roku-ready PNGs, with per-color recoloring before export.
- JSON viewer - a CodeMirror 6 editor for the JSON you click out of the terminal, with format, minify, sort, fold, and nested-JSON unescaping.
Reference and AI
- Developer Docs - an in-app browser for the official Roku documentation, with full-text search, a What's New change feed, browser-style history, and an offline cache.
- roBot (Beta) - an opt-in assistant with swappable providers (Anthropic, Gemini, OpenAI-compatible, or a local CLI such as Claude, Copilot, Gemini, or Codex) and per-prompt redaction of device IPs, names, and serials.
The app
- Light, dark, and system theming with a UI scale and color tint.
- Launch any tool on its own (per-tool shortcut, file association, or
--tool). - Automatic update checks on launch and from the Help menu (installed builds).
Most users should grab a packaged build. Download the latest from the Releases page and pick the artifact for your platform:
| Platform | Artifact |
|---|---|
| Windows (installer) | RokDock-<version>-Setup-win-x64.exe |
| Windows (portable) | RokDock-<version>-Portable-win-x64.exe |
| macOS (Apple silicon or Intel) | RokDock-<version>-mac-arm64.dmg / RokDock-<version>-mac-x64.dmg |
| Linux (AppImage) | RokDock-<version>-linux-x64.AppImage |
| Linux (Debian/Ubuntu) | RokDock-<version>-linux-x64.deb |
macOS. The macOS build is signed with a Developer ID certificate and notarized, so it should open normally with no extra steps. The following is troubleshooting only: if macOS ever refuses to open the app (Gatekeeper reports it is damaged or from an unidentified developer, usually after a download the browser flags), clear the quarantine attribute and reopen it:
xattr -cr /Applications/RokDock.appWindows. The installer adds Start Menu shortcuts (including one per tool). The portable build runs without installing and writes no registry or Start Menu entries, so it adds no shortcuts or file associations by design.
Linux. The AppImage runs anywhere. The .deb integrates RokDock and its per-tool
launchers into the application menu on Debian and Ubuntu.
Full guides for every screen and feature live in docs/user/:
- Getting Started - install, first launch, and the workspace layout
- Devices - discovery, manual devices, ports, properties, developer mode
- Terminal - the debug terminal, search, history, and URL/JSON interaction
- Remote Control - the virtual remote and keyboard control
- Screenshot Preview - capture, zoom, overlays, measurement, history
- Sideloading - installing channel packages on a device
- Deeplinks - configuring and launching deeplink presets
- Script Editor - automation scripts and RASP
- Capture Preview - the live HDMI capture feed
- JSON Viewer - inspecting JSON from terminal output
- 9-Patch Editor - stretchable image assets
- SVG Converter - SVG to quantized PNG
- Developer Docs - the in-app Roku documentation browser
- roBot - the AI assistant and provider configuration
- Settings - the full settings reference, tab by tab
- Keyboard Shortcuts - the shortcut reference
- Themes - app theme, syntax themes, and fonts
Developer notes: Release Builds.
The editors and the docs browser also open on their own, without the dock:
- Per-tool shortcuts - the installer adds a shortcut for each tool (JSON Editor, SVG Converter, 9-Patch Editor, Script Editor, Developer Docs).
- File associations - opening a
.json,.svg,.rasp, or.rscriptfile launches the matching tool (opt-in, set up by the installer). - Command line -
RokDock --tool <json|svg|ninepatch|script|docs> [path]opens a single tool, optionally loading a file.
A tool opened this way runs in its own window and coexists with the same tool opened from the dock. See Getting Started.
RokDock is an Electron app built with electron-vite, React, and TypeScript.
Prerequisites: Node.js 20 or newer (the Vite 7 toolchain needs 20.19+ or 22.12+) and npm.
npm ci # install exactly from the committed lockfile
npm run dev # launch the app with hot reloadUse npm install only when intentionally adding or changing a dependency.
Build and verify:
npm run build # bundle main, preload, and renderer
npm run verify # the gate: typecheck + lint + prose check + unit tests
npm run verify:full # verify plus the Playwright end-to-end suiteNote that npm run build does not type-check, so npm run verify is the real gate.
The same gate runs in CI on every pull request and push to main
(.github/workflows/ci.yml).
Package installers (per platform, from a matching OS):
npm run dist:win # Windows (NSIS installer + portable)
npm run dist:mac # macOS (DMG + ZIP)
npm run dist:linux # Linux (AppImage + deb)| Path | Responsibility |
|---|---|
src/main |
Electron main process: window lifecycle, IPC handlers, and device services (SSDP, ECP, telnet, sideload, screenshots) |
src/preload |
The secure context-bridge API exposed to the renderer |
src/renderer |
The React UI and Zustand state: the dock and every tool window |
src/shared |
Types and constants shared across processes (no DOM or Electron imports) |
src/ai-core |
The portable, dependency-free AI engine: adapters, streaming, and redaction |
scripts |
Build, packaging, and documentation-capture tooling |
tests |
Vitest unit/integration tests and the Playwright E2E suite, mirroring src/ |
The debug terminal, tokenized and themed, with a JSON payload detected and ready to open in the editor.
The full on-screen remote, plus saved deeplink presets you can fire in a click.
Built-in tools: a JSON viewer, a 9-Patch editor, and an SVG recolor/exporter.
The in-app Developer Docs: the official Roku documentation with full-text search and a What's New feed.
The Screenshot Viewer, comparing a captured device frame against a safe-zone overlay.
The roBot panel, grounded in the Roku docs.
More figures are in the user guide.
RokDock is developed and tested primarily on Windows. macOS and Linux builds are provided on a best-effort basis and may have rough edges (for example, macOS needs Local Network and Screen Recording permissions for device discovery and capture). Reports and fixes for macOS and Linux are welcome.
Contributions are welcome. See CONTRIBUTING.md for setup, the code conventions, the verification gate to run before opening a pull request, and how the test suite exercises device-facing logic without a real Roku.
Apache License 2.0. See LICENSE and THIRD-PARTY-NOTICES.md.








