roku-dev-studio
Este servidor fornece uma interface de Model Context Protocol (MCP) para agentes de IA controlarem, depurarem e desenvolverem em dispositivos Roku por meio do aplicativo Roku Dev Studio.
Documentação
Roku Dev Studio
Ferramentas de Desenvolvimento Roku para macOS, Windows e Linux — Controle Remoto, Side-loading de Apps, automação ECP, RALE / App Connector, Network Inspector, Action Scripts, servidor MCP para agentes de IA (Cursor, Claude, VS Code) e uma CLI rds. Suporta dispositivos na rede local e dispositivos conectados via internet.
Um aplicativo desktop multiplataforma abrangente para controlar e desenvolver em dispositivos Roku pela sua rede local ou via servidor remoto usando o Protocolo de Controle Externo (ECP).
Por que Roku Dev Studio? (vs. ferramentas oficiais da Roku)
O desenvolvimento Roku normalmente é dividido em várias ferramentas oficiais separadas e de propósito único — a Roku Remote Tool, o instalador de sideload baseado em navegador, telnet bruto, RALE, sca-cmd — que não conversam entre si. O Roku Dev Studio não substitui os protocolos próprios da Roku (ECP, RALE, telnet, sca-cmd) — ele os integra em uma única GUI, uma única CLI (rds) e um único servidor MCP:
| Tarefa | Sem Roku Dev Studio | Com Roku Dev Studio |
|---|---|---|
| Controle remoto | A Roku Remote Tool oficial, ou chamadas ECP keypress brutas via curl/Postman | Uma aba: D-Pad completo, teclado remoto e um mini-controle flutuante |
| Sideloading | O instalador baseado em navegador do dispositivo ou uma extensão do VS Code — um IP por vez | Sideload Relay — um único push do seu IDE instala, inicia e captura o console em todos os dispositivos de destino |
| Console de depuração | telnet <ip> 8085 em um terminal bruto ou através de uma IDE — sem busca/filtro/salvamento em ambos os casos | Um console estruturado com busca, filtragem e logs salvos |
| Depuração BrightScript | O protocolo de depuração por socket, utilizável principalmente através da extensão de uma única IDE | Um depurador autônomo: breakpoints, execução passo a passo, pilha de chamadas, variáveis, watch |
| Inspeção de apps (RALE) | RALE sozinho apenas inspeciona nós SceneGraph — sem como chamar funções de um canal ou trocar dados com ele | App Connector — estende o RALE com a capacidade de chamar funções do seu próprio canal e trocar dados (estilo GET/POST), desbloqueando automações que não existiam antes |
| Tráfego de rede | Um proxy MITM configurado separadamente (Charles/mitmproxy/Fiddler) com configuração manual do dispositivo | Proxy MITM local integrado + captura de pacotes opcional via hotspot |
| Análise estática | Saída sca-cmd verificada manualmente contra os documentos de certificação da Roku | Executa sca-cmd para você, com links diretos para os requisitos de certificação na documentação da Roku |
| Locais remotos / laboratórios | Presença física necessária — ECP só funciona na rede local | Um servidor remoto integrado faz a ponte do ECP pela internet |
| Testes repetíveis | Scripts artesanais em torno de ECP e RALE | Action Scripts — crie um fluxo (teclas, consultas, condicionais, esperas) pela GUI, ou execute-o headless via rds |
| Acesso por agentes de IA | Nada oficial | Um servidor MCP integrado permite que Cursor, Claude Desktop ou VS Code controlem um dispositivo real |
Por que construí o Roku Dev Studio?
Este repositório é um monorepo npm workspace. Execute npm install e npm start a partir da raiz do repositório para que os workspaces sejam vinculados corretamente. A instalação executa um postinstall (npm run build:libs) que compila os pacotes compartilhados roku-dev-studio-platform e roku-dev-studio-api para suas saídas dist/, que o aplicativo e o servidor remoto importam. Use npm run typecheck para uma verificação completa de TypeScript em todos os workspaces e npm test para executar testes unitários. O CI executa esses testes, além de verificações de build/sintaxe por pacote em cada push e pull request. Configuração, scripts e builds distribuíveis estão documentados em INSTALLATION.md.
Estrutura do repositório
| Local | O que é |
|---|---|
apps/roku-dev-studio/ | Aplicativo desktop Electron (processo principal, renderer, empacotamento). Builds de desenvolvimento e distribuíveis: INSTALLATION.md. |
packages/roku-dev-studio-api/ | Biblioteca Node compartilhada + CLI rds: descoberta, ECP, capturas de tela, sideload, RALE, executor de action scripts, validador headless — README do pacote. |
packages/roku-dev-studio-mcp/ | Servidor MCP que permite que agentes de IA (Cursor, Claude Desktop, VS Code) controlem um Roku através deste aplicativo — README do pacote. |
packages/roku-dev-studio-network-inspector/ | Mecanismo do Network Inspector: captura de pacotes via hotspot (DNS/SNI/HTTP) + proxy MITM local, independente de transporte para rodar tanto no aplicativo desktop quanto no servidor remoto — README do pacote. |
packages/roku-dev-studio-rce/ | Cliente Roku Cloud Emulator (RCE) — Core API (contas / dispositivos / snapshots) e Device API (proxy ECP, sockets de ponte de portas) para Rokus virtuais hospedados na nuvem, usado pelos locais RCE do aplicativo — README do pacote. |
packages/roku-dev-studio-remote-server/ | Relay HTTP/WebSocket para controlar Rokus pela internet — README do pacote. |
packages/roku-dev-studio-platform/ | Helpers compartilhados de plataforma host (identidade do SO, teclas modificadoras, path-safe, helpers de sistema de arquivos somente Node) usados pelo aplicativo e outros pacotes para que a lógica de plataforma fique em um só lugar. Compilado para dist/ em npm install — README do pacote. |
roku-components/ | Artefatos do lado BrightScript: TrackerTask.xml (adicione ao seu canal para App Connector / RALE), o scaffold SceneGraph fiddle/ e demo/ (o canal Roku Dev Studio Showcase incluído, por trás do Try Demo App) — README dos componentes. |
Autor: Hareendra Donapati
Glossário
| Termo | Significado em uma linha |
|---|---|
| ECP | External Control Protocol — API HTTP da Roku na porta 8060 (KeyPress, Launch, Query, Deep-Link). |
| Telnet 8085 / 8080 | O console de depuração BrightScript (8085) e os comandos de sistema de desenvolvimento (8080) em um Roku em Modo Desenvolvedor. |
| RALE | Roku Advanced Layout Editor — protocolo de inspeção SceneGraph da Roku via socket TCP (porta padrão 49200), falado pelo componente TrackerTask. |
| TrackerTask | O componente BrightScript que desenvolvedores de canais adicionam ao seu app para torná-lo acessível via RALE / App Connector — veja roku-components/README.md. |
| App Connector | A aba do Dev Studio que fala RALE: lista / chama os GetExternalControlFunctions do seu canal, além de funções integradas (busca de nós, editor de registro, atualização de nó). |
| Network Inspector | A aba / mecanismo do Dev Studio que inspeciona o tráfego HTTP(S) de um canal de desenvolvimento através de um proxy MITM local, com captura de pacotes opcional via hotspot. |
| Sideload | Enviar e instalar um canal de desenvolvimento .zip / .pkg em um Roku em Modo Desenvolvedor usando sua Senha de Desenvolvimento. |
| Sideload Relay | O RDS se anuncia como um Roku para que um único sideload do seu IDE / navegador seja distribuído (instalar → iniciar → console) para vários dispositivos de destino. |
| Action Script | Automação descrita em JSON que encadeia teclas, consultas, sideload, chamadas App Connector, capturas de tela, condicionais, esperas e variáveis. Criada e executada na aba Action Scripts; também executável headless via rds. |
| Servidor MCP | O servidor Model Context Protocol do Roku Dev Studio — permite que Cursor / Claude Desktop / VS Code controlem um dispositivo real através deste aplicativo enquanto ele estiver aberto. Ative clientes em Configurações → Servidor MCP. |
| Fiddle | O editor de rascunho BrightScript (Monaco + lint brighterscript) que envolve seu trecho de código em um canal temporário e o executa em um dispositivo selecionado. |
rds | A CLI de terminal fornecida pelo roku-dev-studio-api (rds discover, rds keypress, rds script run, rds rale repl, …). |
Plataformas suportadas
O Roku Dev Studio está disponível para:
| Plataforma | Opções |
|---|---|
| macOS | Instalador DMG, arquivo ZIP portátil |
| Windows | Instalador NSIS, executável portátil |
| Linux | Pacote DEB, AppImage |
| Início |
|---|
![]() |
| Controle Remoto + Desempenho do Dispositivo | App Connector (RALE) | Construtor de Action Scripts |
|---|---|---|
![]() | ![]() | ![]() |
| BrightScript Fiddle | Configurações do Servidor MCP | Dev App / Sideload |
|---|---|---|
![]() | ![]() | ![]() |
Mais capturas de tela para cada recurso: FEATURES.md.
Recursos
Veja FEATURES.md para o tour completo com capturas de tela. Índice rápido:
Controle Remoto (Controle Remoto Flutuante) · Desempenho do Dispositivo · Descoberta de Dispositivos · Iniciador e Gerenciamento de Apps · Consultas de Dispositivo · Gerenciamento de Dev Apps · Try Demo App · Sideload Relay · Console e Depuração · Janela de Portas · Monitor de Console · Depurador BrightScript · App Connector (RALE) · Network Inspector · Visualizador de Sessões de Rede · Action Scripts · Agentes de IA (Servidor MCP) · BrightScript Fiddle · Visualizador de Arquivos de Log · Análise Estática de Canal · CLI rds · Suporte a Servidor Remoto · Configurações · Troca de Idioma · Relatórios de Crash · Recursos para Desenvolvedores
Configuração do Servidor Remoto
O Roku Dev Studio pode controlar dispositivos pela internet usando uma ponte de servidor remoto, permitindo gerenciar dispositivos em Locais Remotos sem estar na mesma rede do aplicativo desktop. Execute o relay (npm run remote-server deste repositório, ou npm install -g roku-dev-studio-remote-server) e adicione-o via Adicionar Local Remoto no seletor de dispositivos. O modal tem duas abas: RDS Relay (endereço do Relay Server + porta) e RCE (nome de conta Roku Cloud Emulator + Personal Access Token). Dispositivos RCE aparecem como desligados / pendentes / em execução e devem ser iniciados primeiro (Iniciar, com opções opcionais de snapshot / firmware / Max Run Time) — ECP, sideload e console só respondem enquanto um dispositivo estiver em execução.
A configuração completa (executar o servidor como um serviço, configuração de rede/firewall, API HTTP/WebSocket e documentação Swagger) está no README do pacote do servidor remoto.
Estrutura do projeto
.
├── apps/
│ └── roku-dev-studio/ # Electron desktop app (see INSTALLATION.md)
├── packages/
│ ├── roku-dev-studio-api/ # Shared API + `rds` CLI (npm: roku-dev-studio-api)
│ ├── roku-dev-studio-mcp/ # MCP server bundled into the desktop app
│ ├── roku-dev-studio-network-inspector/ # Network capture + MITM proxy engine
│ ├── roku-dev-studio-rce/ # Roku Cloud Emulator client (accounts, devices, ECP proxy)
│ ├── roku-dev-studio-platform/ # Shared platform helpers (path-safe, OS identity)
│ └── roku-dev-studio-remote-server/ # HTTP/WS relay (npm: roku-dev-studio-remote-server)
├── roku-components/ # TrackerTask + Fiddle SceneGraph assets
├── package.json # Workspace root (workspaces: apps/*, packages/*)
├── INSTALLATION.md
└── README.md
A árvore do próprio aplicativo Electron (TypeScript main.ts / preload.ts compilado para main.bundled.cjs / preload.bundled.cjs, renderer/, assets de build) fica em apps/roku-dev-studio/.
Requisitos
Para executar o aplicativo:
- Node.js 24.17+
- npm (incluído com Node.js)
- Dispositivo Roku na rede local (ou servidor remoto para acesso remoto)
Para compilar:
- Tudo acima
- Ferramentas de build específicas da plataforma:
- macOS: Xcode Command Line Tools
- Windows: Windows SDK (para instalador NSIS)
- Linux: Ferramentas de build padrão (gcc, make, etc.)
Veja Instalação para instruções de configuração e build.
Licença
Este projeto é licenciado sob a Licença MIT.
Componentes de terceiros usados neste software e suas licenças:
| Biblioteca | Finalidade | Licença |
|---|---|---|
| @tanstack/virtual-core | Renderização de listas virtualizadas (console telnet, grandes resultados de script) | MIT |
| archiver | Criação de pacotes sideload .zip | MIT |
| brighterscript | Linting de BrightScript no editor Fiddle | MIT |
| commander | rds análise de argumentos de CLI | MIT |
| electron | Runtime do aplicativo desktop | MIT |
| electron-builder | Empacotamento e instaladores | MIT |
| form-data | Uploads HTTP multipart | MIT |
| modern-screenshot | Captura de DOM para imagem em cartões de gráfico / exportação PDF | MIT |
| monaco-editor | Editor de código (Fiddle, editores de etapas de action-script) | MIT |
| pdf-lib | Geração de PDF | MIT |
| sharp | Processamento de imagens (ícones/build) | Apache-2.0 |
| solid-js | Framework reativo que alimenta o novo renderizador | MIT |
| ws | Cliente WebSocket | MIT |
Suas dependências são usadas sob os termos declarados em package-lock.json e no repositório de cada pacote.






