Saltar al contenido
LEX
Teclado: pulsa / o Comando K para preguntar o saltar, acento grave para abrir el terminal.

LEX · el pase

Comanda

Comanda

#

Desde
Hora
Pedido

Marchar

ES · DE · EN

Volver al Lab

Herramientas04 / 12

LaunchDeck

Un Novation Launchpad como superficie de control programable

Estado
Funciona, sin desplegar
Periodo
2026 →
Rol
Diseño y desarrollo, de principio a fin
Para
Desarrolladores y usuarios avanzados que quieren controles físicos para su escritorio y sus agentes de IA.

Problema

Una cuadrícula de pads RGB es una gran interfaz física, pero fuera del software musical no hace nada. Mientras tanto, los agentes de programación se detienen una y otra vez a pedir permiso, y cada respuesta obliga a cambiar de ventana.

Una aplicación de escritorio en Rust y Tauri que convierte un Novation Launchpad en una superficie de control para el ordenador: los pads abren aplicaciones, pulsan atajos, llaman a servicios y se iluminan para mostrar estado. Los agentes de IA pueden ocupar pads, de modo que una petición de permiso se aprueba o se rechaza con una pulsación.

Caso de estudio

LaunchDeck sigue una regla: Rust es dueño del runtime y React solo edita, visualiza y configura. Cerrar la ventana no detiene los pads; la aplicación sigue funcionando desde la bandeja del sistema.

Un workspace contiene superficies, páginas y pads. Cada pad tiene una acción y una lista de reglas de feedback que leen estado en vivo o reaccionan a eventos, para que la luz siempre diga algo cierto. El motor Auto Context cambia de página según la aplicación que está en primer plano. Incluye un Launchpad X simulado, así que todo funciona sin hardware.

Agent Control lleva los agentes de IA a la cuadrícula. Claude Code se conecta mediante sus hooks y otros agentes a través de un puente WebSocket versionado en localhost. Registrarse nunca concede control y ninguna petición se aprueba por defecto: los timeouts, los errores y los reinicios terminan siempre sin decisión.

Es mi primer proyecto con un stack fuera de mi trabajo web habitual: Rust, Tauri, MIDI y SysEx, y un sandbox de plugins en WebAssembly. La versión 0.3.0 es la primera alpha externa.

Arquitectura

Una aplicación Tauri 2: el núcleo en Rust ejecuta dispositivos, estado, eventos, acciones, plugins y agentes sobre Tokio, y un editor en React 19 se comunica con él mediante comandos y eventos de Tauri; cada payload se valida con Zod en un lado y en Rust en el otro. El MIDI pasa por midir detrás de un trait de backend, así que los tests usan un falso en memoria. Un único modelo de dispositivo sirve al Launchpad X y al Mini MK3 a partir de perfiles de datos: identifica la unidad con una consulta SysEx, la pone en Programmer Mode, envía solo los LED que cambian y devuelve el dispositivo tal como lo encontró. Los plugins corren en Wasmtime con límites de fuel, tiempo y memoria, y solo llegan a la red a través de un broker del host limitado a los orígenes que el usuario autorizó.

Decisiones técnicas

  1. Rust es dueño del runtime y la interfaz solo configura, así que los pads siguen funcionando con la ventana cerrada.
  2. Un Launchpad simulado integrado, escrito a partir de los manuales de Novation e independiente del códec, para contrastar el protocolo sin hardware.
  3. Plugins en un sandbox de Wasmtime sin sockets directos: el acceso a la red pasa por un broker que comprueba cada dirección resuelta frente a lo que el usuario autorizó.
  4. Las aprobaciones de agentes fallan cerradas: registrarse nunca concede control y ninguna petición se aprueba por defecto.
  5. Reglas de arquitectura impuestas por scripts y tests, incluido uno que falla si el dominio de agentes nombra a un proveedor.

Retos y compromisos

Construir contra un hardware que nunca se llegó a conectar: el protocolo MIDI se implementó y se probó byte a byte a partir de los manuales de Novation, y el Launchpad X y el Mini MK3 físicos aún están por verificar. El otro reto fue dejar que plugins y agentes de terceros actúen en el ordenador sin confiar en ellos.

Resultados verificados

  • v0.3.0, la primera alpha externa
  • 1.299 tests de Rust y 594 tests de TypeScript en verde en macOS
  • Hooks de Claude Code verificados en vivo; los payloads capturados sirven como fixtures de test
  • 313 commits, licencia MIT
  • Aún sin verificar en hardware físico; Windows y Linux no compilados para la 0.3.0

Los estados son factuales: nada se presenta más terminado de lo que está.

Stack

Enlaces

Pregunta o salta

Escribe una pregunta o un nombre. La navegación es determinista — no es un chatbot.

Pulsa / o ⌘K