Plan hibrido SaaS + runner local: Komandesk vendible
Fecha: 2026-05-28
Estado: plan operativo para Komandesk
Proyecto: Komandesk
Tesis
Komandesk debe venderse como plano de control para proyectos ejecutables, no como un agente magico.
La arquitectura correcta es hibrida:
- SaaS como plano de control: workspaces, proyectos, scope, planes, tareas, specs, permisos, auditoria, cola, dispatch, memoria y metricas.
- Runner local como plano de ejecucion: acceso a disco autorizado, repos locales, CLIs instalados, sesiones del usuario, herramientas privadas y modelos locales.
- Workers remotos o repo/remoto como alternativa cuando el trabajo no necesita disco local.
Esta separacion resuelve la friccion central: un SaaS puro no puede prometer acceso al disco del usuario. Un runner local autorizado si puede trabajar en el entorno del usuario, siempre que declare capacidades, rutas permitidas y deje trazabilidad.
Viabilidad de usar agentes locales con suscripciones del usuario
No es fantasia. Es viable con condiciones.
Hecho comprobado en esta maquina:
codex existe localmente y responde como codex-cli 0.133.0.
opencode existe localmente y responde como 1.2.25.
Fuentes consultadas el 2026-05-28:
- OpenAI Codex CLI: https://developers.openai.com/codex/cli
- OpenCode Providers: https://opencode.ai/docs/providers/
Lectura practica:
- Codex CLI corre localmente, puede leer, cambiar y ejecutar codigo en el directorio seleccionado, y puede autenticarse con cuenta ChatGPT o API key. OpenAI indica que planes ChatGPT Plus, Pro, Business, Edu y Enterprise incluyen Codex.
- OpenCode soporta multiples proveedores, modelos locales, credenciales con
/connect, OpenCode Go/Zen, API keys y autenticacion ChatGPT Plus/Pro para OpenAI.
Por tanto, un runner local puede lanzar runtimes instalados como codex, opencode, claude, hermes, ollama o similares si:
- el usuario los instalo en su maquina;
- el usuario los autentico bajo su propia cuenta o API key;
- el runtime permite uso no interactivo o suficientemente automatizable;
- la tarea corre dentro de rutas autorizadas;
- Komandesk no captura ni revende credenciales personales;
- el resultado vuelve con evidencia, logs filtrados, tiempo y estado.
Lo que no debe prometerse:
- usar la suscripcion personal del usuario desde el servidor SaaS;
- guardar usuario/password de ChatGPT u otros proveedores en Komandesk;
- saltarse limites, terminos o rate limits del proveedor;
- ejecutar cambios locales sin consentimiento, sandbox o scope de ruta.
La promesa vendible seria:
> Conecta tu maquina como runner local y Komandesk coordinara tareas que se ejecutan con tus herramientas, tus sesiones y tus modelos autorizados.
Dos escenarios de producto
Escenario A: uso personal/local-first
Objetivo: potencia maxima para usuario tecnico.
- Komandesk puede estar en SaaS o local.
- El runner local es protagonista.
- El usuario aprovecha Codex, OpenCode, modelos locales, repos y CLIs propios.
- Las credenciales pueden vivir en la maquina o en vault del workspace.
- El producto debe priorizar velocidad, control y trazabilidad.
Riesgo:
- demasiado poder sin guardrails puede crear errores caros.
Respuesta:
- gates humanos en acciones sensibles;
- ruta permitida por proyecto;
- preflight antes de primera ejecucion;
- evidencia obligatoria antes de cerrar.
Escenario B: SaaS vendible/equipo
Objetivo: producto entendible, soportable y cobrable.
- SaaS gestiona usuarios, workspaces, proyectos, permisos y auditoria.
- Workers remotos ejecutan tareas sin datos locales.
- Runner local se ofrece como conector instalado por cliente cuando hace falta acceso a disco/modelos locales.
- Repositorios por proyecto permiten un tercer camino reproducible.
Riesgo:
- vender autonomia antes de que haya readiness real.
Respuesta:
- onboarding guiado por modo de ejecucion;
- readiness por proyecto;
- limites claros de lo que hace SaaS, runner local y repo/remoto;
- primera ejecucion siempre supervisada.
Cuellos de botella actuales
- Demasiados controles visibles en vistas principales.
Solucion: dejar busqueda, orden inteligente y accesos rapidos; mover filtros secundarios a "mas filtros" o preferencias.
- Contexto de proyecto todavia disperso.
Solucion: crear memoria de proyecto con scope, plan activo, specs, decisiones, conversaciones resumidas, repos, targets y runners.
- Asistente IA demasiado generico.
Solucion: convertirlo en asistente contextual por proyecto/tarea, con historial recuperable, modelo visible y memoria resumida.
- Ejecucion local no empaquetada.
Solucion: MVP de runner local instalable con token de vinculacion, heartbeat, rutas permitidas y adapters para runtimes.
- Modelos y runtimes mezclados conceptualmente.
Solucion: separar profile, agente, runtime, proveedor, modelo y credencial. El usuario elige "tipo de trabajo"; infra resuelve runtime/modelo.
- Automatizaciones recurrentes fragiles.
Solucion: cada recurrente debe tener proyecto, owner, output esperado, fallback, evidencia, watchdog y alerta de sistema si falla.
- QA y cierre no uniformes.
Solucion: todo cierre de IA requiere evidencia minima, tiempo registrado y criterio de verificacion segun tipo de tarea.
- SaaS puro tiene promesas imposibles.
Solucion: posicionamiento honesto: SaaS coordina; runner local ejecuta local; repo/remoto ejecuta reproducible.
Arquitectura objetivo
Plano de control SaaS
Responsabilidades:
- autenticar usuarios y workspaces;
- mantener proyectos, planes, specs y tareas;
- conservar memoria y conversaciones por proyecto;
- decidir readiness;
- encolar tareas;
- auditar cambios;
- almacenar evidencias no sensibles;
- mostrar salud de runners/workers;
- gestionar vault de credenciales cuando aplique.
No debe:
- leer disco local directamente;
- ejecutar comandos locales sin runner;
- guardar credenciales personales de CLIs interactivos;
- ocultar que runtime/modelo ejecuto cada tarea.
Plano de ejecucion local
Responsabilidades:
- correr en maquina autorizada;
- anunciar heartbeat y capacidades;
- limitar rutas de trabajo;
- lanzar runtimes instalados;
- usar sesiones/API keys que el usuario ya configuro;
- devolver resultado, diff, logs filtrados, artefactos y tiempo;
- bloquear si falta permiso, ruta, runtime o modelo.
Adapters iniciales:
codex: CLI local de OpenAI Codex.
opencode: CLI local multiproveedor.
ollama/local model: modelos locales cuando existan.
shell controlado: comandos permitidos para preflight y checks.
Repo/remoto
Responsabilidades:
- crear/enlazar repo por proyecto;
- branch/worktree por ejecucion;
- commit/PR como evidencia;
- soportar GitHub primero, sin cerrar puerta a GitLab, Forgejo/Gitea y Git generico.
Modelo de asistente IA
El asistente debe dejar de ser solo chat general. Debe tener memoria por proyecto.
Entidades recomendadas:
project_conversations: hilos por proyecto, tarea o decision.
project_memory: resumen vivo con decisiones, limites, links, repos y riesgos.
assistant_runs: cada respuesta con modelo, runtime, fuentes usadas y coste/tiempo estimado.
model_profiles: perfiles visibles como "rapido", "razonamiento", "codigo", "revision", "local".
Reglas:
- el asistente siempre debe saber workspace/proyecto/tarea activa;
- si no hay proyecto, debe pedir o proponer clasificacion;
- las conversaciones importantes se resumen al cerrar;
- no debe mezclar decisiones de un proyecto con otro;
- el modelo usado debe ser visible y configurable por perfil.
Fases
Fase 1: Simplificar cartera de proyectos
Objetivo: encontrar y decidir rapido sin llenar la UI de filtros.
Entregables:
- busqueda como accion principal;
- chips rapidos: prioridad, recientes, bloqueados, archivados;
- filtros avanzados plegados;
- departamento/workspace visible solo cuando aporta decision;
- nombres cortos y descripcion breve poblados en proyectos clave.
Estimacion: 8-14 h.
Criterio de cierre:
- un usuario con 25-30 proyectos puede encontrar Flowtitude, Expofrutas o Komandesk en menos de 10 segundos.
Fase 2: Memoria y asistente por proyecto
Objetivo: que la IA recuerde contexto sin depender de chat infinito.
Entregables:
- modelo de conversaciones por proyecto/tarea;
- resumen de memoria por proyecto;
- selector visible de modelo/perfil;
- asistente abre con contexto del proyecto activo;
- historial recuperable desde cockpit.
Estado 2026-05-28:
- DB/API preparada para memoria, conversaciones y
assistant_runs.
- Asistente con contexto del proyecto activo e historial guardable.
- Selector de intencion IA (
rapido, razonamiento, codigo, revision, local) conectado a defaults de tarea y execution_contract.
Estimacion: 16-28 h.
Criterio de cierre:
- al abrir un proyecto se puede ver que se decidio, por que, que esta bloqueado y que modelo/runner intervino.
Fase 3: Runner local MVP
Objetivo: ejecutar tareas en maquina del usuario con permisos claros.
Entregables:
- token de vinculacion por workspace/proyecto;
- worker local con heartbeat;
- declaracion de runtimes disponibles;
- allowlist de rutas;
- preflight de ruta/runtime/modelo;
- adapter inicial
opencode;
- adapter inicial
codex si soporta modo no interactivo estable en el entorno;
- logs filtrados y evidencia sincronizada.
Estado 2026-05-29:
- Contrato base
local_runner_bindings definido.
- Endpoints base
GET/POST/PATCH/DELETE /api/local-runners.
- Heartbeat
POST /api/local-runners/heartbeat conectado a worker_heartbeats.
- Token de runner creado como API token revocable con scopes minimos.
- Launcher local conectado a
OPS_RUNNER_TOKEN, allowlist de rutas y adapters iniciales opencode/codex.
- Doctor/preflight
npm run runner:local:doctor creado para validar API, token, rutas, runtimes, herramientas auxiliares y heartbeat.
- Modo offline
npm run runner:local:doctor -- --offline disponible para preparar la maquina antes de crear el token.
Estimacion: 24-48 h.
Criterio de cierre:
- una tarea pequena puede ejecutarse localmente, tocar un repo autorizado y volver con evidencia, tiempo y estado.
Trabajo pendiente inmediato:
- pairing guiado desde UI con comando copiable;
- piloto end-to-end sobre repo autorizado;
- instalador o script bootstrap por sistema operativo;
- daemon/servicio persistente;
- rotacion de token y revocacion mas visibles.
Fase 4: Catalogo de modelos, perfiles y credenciales
Objetivo: que el usuario elija capacidad, no combinaciones tecnicas confusas.
Entregables:
- catalogo: profile -> agente -> runtime -> proveedor -> modelo;
- soporte BYOK y BYOS, bring your own key/subscription;
- validacion de credenciales por runtime;
- modelos locales declarados por runner;
- coste/tiempo estimado por perfil;
- fallback explicito, nunca silencioso.
Estado 2026-05-28:
- API
GET /api/security/runtime-catalog creada para explicar profile -> agente -> runtime -> proveedor -> modelo -> credencial/runner.
- Vista tecnica en
Gestion -> Credenciales muestra estado por agente, credenciales usables, runners frescos, modelos, proveedores y perfiles enlazados.
- Politica BYOK/BYOS visible: workspace/account como automatizable, personal-only no automatizable, BYOS sujeto a runner local y preflight.
- Documento tecnico:
docs/architecture/runtime-model-credential-catalog.md.
Estimacion: 16-32 h.
Criterio de cierre:
- se puede explicar por que una tarea usa
opencode + OpenAI, codex + ChatGPT, ollama local o worker remoto.
Fase 5: Fiabilidad, QA y automatizaciones encadenadas
Objetivo: que las automatizaciones dejen de parecer magia fragil.
Entregables:
- recurrentes con proyecto obligatorio o excepcion explicita;
- watchdog de recurrentes y dispatch;
- alertas de sistema solo para fallos reales;
- reintentos con limite;
- evidencia obligatoria;
- QA por tipo de tarea;
- dashboard de salud por proyecto.
Estado 2026-05-28:
- Dispatch stale abre/reabre alerta de sistema al mover una tarea atascada a
waiting.
- Scheduler de recurrentes abre alertas para RRULE invalida, error de scheduler o instancia activa bloqueante.
- Si una recurrente requiere correccion, el scheduler crea o reutiliza una tarea
scheduler-watchdog con tag recurring-watchdog.
- Cierre IA valida QA por tipo de tarea y exige tiempo registrado antes de
done.
Estimacion: 24-40 h.
Criterio de cierre:
- si una recurrente falla, el usuario ve que fallo, por que, donde y que tarea se creo o bloqueo.
Fase 6: Empaquetado SaaS vendible
Objetivo: convertir la arquitectura en producto explicable.
Entregables:
- onboarding por modo: SaaS worker, runner local o repo/remoto;
- instalador o script de runner;
- permisos y revocacion de dispositivo;
- recetas de casos de uso;
- planes de pricing orientativos;
- beta checklist;
- soporte de logs sin secretos.
Estado 2026-05-28:
- Readiness de proyecto crea tareas
Onboarding piloto por modo: SaaS worker, runner local o repo/remoto.
- Cada modo declara limite de promesa, checklist y primera ejecucion pequena.
- Documento publico:
docs/product/onboarding-execution-modes.md.
- Documento comercial:
docs/product/beta-pricing-2026-05-28.md.
Estimacion: 32-64 h.
Criterio de cierre:
- se puede incorporar un cliente piloto sin explicaciones improvisadas ni promesas falsas.
Tareas iniciales propuestas
- HYB F1 UI portfolio: simplificar filtros visibles y agrupar avanzados. Estimacion: 6 h.
- HYB F1 Datos portfolio: poblar nombres cortos y descripciones. Estimacion: 4 h.
- HYB F2 Modelo memoria proyecto: diseno DB/API. Estimacion: 6 h.
- HYB F2 UI asistente por proyecto: historial y contexto activo. Estimacion: 8 h.
- HYB F2 Perfiles de modelo: selector y defaults por tarea. Estimacion: 6 h.
- HYB F3 Runner local contract: token, heartbeat y capacidades. Estimacion: 8 h.
- HYB F3 Runner local MVP: proceso worker y ruta autorizada. Estimacion: 12 h.
- HYB F3 Adapter opencode: ejecucion, logs y evidencia. Estimacion: 8 h.
- HYB F3 Adapter codex: prueba no interactiva y limites. Estimacion: 8 h.
- HYB F4 Catalogo runtime/modelo/credencial. Estimacion: 10 h.
- HYB F4 BYOK/BYOS policy y UI. Estimacion: 8 h.
- HYB F5 Watchdog recurrentes/dispatch con alertas sistema. Estimacion: 10 h.
- HYB F5 QA y evidencia por tipo de tarea. Estimacion: 12 h.
- HYB F6 Onboarding SaaS/runner/repo. Estimacion: 12 h.
- HYB F6 Beta vendible y pricing inicial. Estimacion: 8 h.
Prioridad recomendada
Orden recomendado:
- Fase 1, porque reduce ruido y mejora uso inmediato.
- Fase 2, porque sin memoria el asistente seguira generando ruido.
- Fase 3, porque resuelve la promesa rota del acceso local.
- Fase 5 en paralelo parcial, porque la confianza depende de automatizaciones fiables.
- Fase 4 despues de tener runner real, para no modelar en abstracto.
- Fase 6 cuando el piloto interno sea estable.
Decision
Construir Komandesk como producto hibrido:
- SaaS coordina, audita y vende claridad.
- Runner local ejecuta cuando el trabajo necesita la maquina del usuario.
- Repo/remoto cubre equipos que prefieren Git como frontera.
- El asistente recuerda por proyecto y no inventa contexto.
- Los modelos son configurables, pero el producto vende resultados verificables, no nombres de modelos.