YZ

y0rd1n/zai

Developer tools
0 stars Quality 65 Trend 20MIT

Una pizarra de escritorio con un espacio independiente para cada proyecto. Abre chats de Codex, Claude y Zai Agent, un navegador, terminales y notas; mueve las ventanas a tu gusto o conviértelas en...

Overview

Una pizarra de escritorio con un espacio independiente para cada proyecto. Abre chats de Codex, Claude y Zai Agent, un navegador, terminales y notas; mueve las ventanas a tu gusto o conviértelas en iconos sin detener sus sesiones. - Chats propios de Codex y Claude con respuestas en streaming, Markdown, herramientas, errores y solicitudes de permiso. Conexión a los agentes locales mediante sus interfaces oficiales. - Selectores de modelo, esfuerzo y velocidad por chat, consultados a cada agente. Menús con búsqueda de modelos, descripciones, selección por teclado y adaptación al espacio disponible. Límites de cuenta con porcentajes y reinicios cuando el proveedor los publica. - Permisos nativos por chat: acceso a archivos, aprobaciones y red en Codex; modos de permisos de Claude, incluida la aceptación de ediciones y planificación. - Conexiones entre chats y navegadores mediante puntos que puedes arrastrar.

README

zai.

Tus agentes, herramientas e ideas. En el mismo lugar.

Una pizarra de escritorio con un espacio independiente para cada proyecto. Abre chats de Codex, Claude y Zai Agent, un navegador, terminales y notas; mueve las ventanas a tu gusto o conviértelas en iconos sin detener sus sesiones.

Lo que incluye

  • Chats propios de Codex y Claude con respuestas en streaming, Markdown, herramientas, errores y solicitudes de permiso. Conexión a los agentes locales mediante sus interfaces oficiales.
  • Selectores de modelo, esfuerzo y velocidad por chat, consultados a cada agente. Menús con búsqueda de modelos, descripciones, selección por teclado y adaptación al espacio disponible. Límites de cuenta con porcentajes y reinicios cuando el proveedor los publica.
  • Permisos nativos por chat: acceso a archivos, aprobaciones y red en Codex; modos de permisos de Claude, incluida la aceptación de ediciones y planificación.
  • Conexiones entre chats y navegadores mediante puntos que puedes arrastrar. Los agentes pueden leer y controlar los navegadores conectados con herramientas MCP propias. El hilo muestra pulsos al realizar acciones y devolver resultados.
  • Mensajes y herramientas en secuencia cronológica, conservada al reabrir la app.
  • Medidor de contexto y compactación manual en Codex, Claude y Zai Agent. Imágenes pegadas, adjuntas o arrastradas al chat y citas con @imagen1. Autocompletado de archivos con @, comandos con / y skills con $.
  • Ventanas movibles y redimensionables, ampliación, iconos movibles y organización automática. La barra superior reúne todas las ventanas minimizadas y permite restaurarlas, incluso desde otro proyecto o fuera del área visible. Los borradores y las páginas permanecen abiertos al minimizar.
  • Proyectos con carpeta, conversaciones y distribución independientes. Cambiar de estancia mantiene los agentes activos.
  • Navegador Chromium integrado, navegación atrás y adelante, recarga y herramientas de desarrollo. Las páginas están aisladas del acceso a Node y a la API de Zai.
  • Terminal real en la carpeta del proyecto y notas editables.
  • Registro de actividad, guardado local, exportación e importación de copias.
  • Tema claro y oscuro, colores de acento, panel de proyectos y barra movibles, pizarra con desplazamiento y zoom y buscador de acciones.

Zai Agent, APIs y fondos

Zai Agent es un motor original incluido en la aplicación, sin instalar otro CLI. Abre Nueva ventana → Zai Agent y elige DeepSeek, OpenRouter, Ollama Cloud, Ollama local o una API de chat compatible en el selector de conexiones. Se abre el formulario del proveedor para añadir tu API key; al guardar, la conexión queda seleccionada. El botón junto al selector permite editar tus conexiones o añadir otra. También están en Preferencias → Conexiones de IA. Vincula la carpeta del proyecto para trabajar con sus archivos. Los modelos se consultan al servidor; también puedes indicar uno manualmente. Ollama Cloud se conecta directamente; Ollama local necesita que su servicio y sus modelos estén instalados.

El esfuerzo se obtiene de los metadatos del proveedor: effort.supported_levels en DeepSeek, reasoning en OpenRouter y thinking.values de /api/show en Ollama. Se respeta el valor predeterminado y los modelos con razonamiento obligatorio. Más opciones de generación permite limitar la salida y, si el modelo lo anuncia, fijar un presupuesto de razonamiento en tokens. Elegir un esfuerzo elimina ese presupuesto y viceversa. OpenRouter también permite priorizar menor latencia o más tokens por segundo mediante sus preferencias de servidor; el coste puede variar. Las APIs que no ofrecen un modo rápido conservan la velocidad estándar.

El motor ofrece streaming, archivos y búsquedas dentro del proyecto, ediciones, terminal, planes, preguntas, skills, revisiones con un subagente de solo lectura, sesiones persistentes y compacción de contexto. Descubre SKILL.md del proyecto y del usuario, y lee AGENTS.md, CLAUDE.md y .zai/instructions.md de la raíz. Las escrituras guardan una copia anterior dentro del directorio de la sesión. Los modos son Preguntar, Ediciones, Plan y Autónomo. Los comandos se ejecutan con los permisos de tu usuario; este motor no incluye un sandbox del sistema. El acceso a navegadores se controla con los mismos cables y aprobaciones.

Esta primera versión no reproduce todas las funciones de Claude Code: no tiene su sistema de plugins, hooks, equipos, servidores MCP externos configurables, memoria automática ni restauración gráfica de checkpoints. Las revisiones secundarias son de solo lectura. Su utilidad depende del soporte de herramientas y la calidad del modelo. La investigación de motores compara el diseño propio, Pi y OpenCode y describe las diferencias.

Las claves se conservan en el proceso principal y se cifran con el almacén del sistema cuando está disponible. Si Linux usa basic_text, o el almacén está bloqueado, la clave dura solo la sesión y la interfaz lo indica. No se guardan en workspace.json ni en las exportaciones. Cambiar el servidor elimina la clave anterior y reinicia el contexto del agente.

En Preferencias → El fondo de tu espacio puedes elegir un color, importar una imagen y ajustar su intensidad. Crear con IA admite OpenRouter, una API de imágenes compatible, Automatic1111/Forge (--api) y ComfyUI. Para ComfyUI pega un workflow exportado en formato API con {{prompt}} en el texto positivo. Los motores y modelos locales se instalan por separado; Zai conecta sus servicios. La generación remota usa tu cuenta y puede tener coste. Cancelar deja de esperar; el servidor local puede continuar su tarea. Las imágenes se copian a la biblioteca local de Zai y no viajan dentro de una copia JSON de la pizarra.

Rendimiento y GPU

La aceleración por hardware está en modo automático: Chromium utiliza la GPU cuando la tarjeta y su controlador lo permiten. Preferencias → Rendimiento y gráficos muestra el estado real de composición, rasterización y WebGL, y permite desactivar/reactivar ese modo para el próximo inicio. Los fallos o incompatibilidades del controlador mantienen la alternativa de software; no se fuerza una GPU bloqueada.

El arrastre mueve la ventana y los cables una vez por fotograma, sin reconstruir los chats ni guardar la pizarra por cada movimiento. La posición se confirma al soltar el ratón. La transformación de composición se retira al terminar, y el zoom de reposo conserva el texto nítido. Los mensajes anteriores se reutilizan cuando llega un nuevo fragmento de respuesta. Las preferencias se cargan al abrirlas.

Ejecutar

Para desarrollar necesitas Node.js 24. Codex y Claude requieren sus CLI y una sesión iniciada; Zai Agent usa las conexiones configuradas dentro de la app. La instalación empaquetada incluye el motor de Zai y no necesita Node externo.

npm ci
npm run dev

Para abrir la compilación de producción:

npm run build
npm start

Para usar Codex, instala Codex CLI y ejecuta codex login. Para Claude, instala Claude Code y ejecuta claude auth login. Zai utiliza sus sesiones locales y no requiere una clave API propia.

Dentro de Zai, vincula la carpeta de un proyecto y escribe en un chat. El selector de modelo ofrece el catálogo de la CLI o un identificador personalizado. También puedes elegir esfuerzo y velocidad cuando el modelo los admita. El modo rápido puede consumir más cuota o tener un coste mayor. En «Uso» se muestran únicamente los periodos publicados por la cuenta (5 horas, semanal, mensual u otros), con su porcentaje y fecha de reinicio. Algunas conexiones por API o proveedores personalizados no exponen estos límites; Zai lo indica y muestra el consumo de la conversación cuando el agente lo informa. Las operaciones que el proveedor someta a aprobación aparecerán en el chat.

Pulsa el medidor junto al uso de la cuenta para ver los tokens del contexto activo y compactarlo. Codex utiliza thread/compact/start; Claude ejecuta su /compact; Zai Agent resume el historial y reemplaza el contexto solo si el resumen termina correctamente. La conversación visible se conserva. Los datos estimados llevan ≈, los límites desconocidos se indican y el consumo acumulado se muestra aparte. La compactación puede consumir tokens del modelo configurado.

En el campo de mensaje, @ busca archivos de la carpeta vinculada e imágenes del chat; / ofrece las acciones de Zai y los comandos que Claude anuncia para el SDK; $ lista las skills del agente y, en Codex, sus conexiones habilitadas cuando su CLI las publica. Las opciones aparecen al escribir o pulsar sus botones. Usa ↑/↓ y Tab o Enter para insertarlas, Escape para cerrar y Enter para enviar. Los archivos seleccionados se incluyen como contexto de texto (hasta 150 KB por archivo y 300 KB en conjunto). Zai Agent descubre skills en .zai/skills, .agents/skills, .claude/skills y .codex/skills, del proyecto y del usuario.

Pega una imagen con Ctrl+V (⌘V en macOS), arrástrala al campo o usa el clip. «Citar» inserta una referencia como @imagen1; también puedes volver a citar una imagen de mensajes anteriores después de compactar. Se admiten hasta 8 imágenes, 5 MB por imagen y 20 MB por mensaje. PNG, JPEG, WebP y GIF se normalizan a PNG estático; los archivos se guardan en el directorio privado de Zai, separados del JSON de la pizarra. Las copias JSON contienen referencias, no los archivos de las imágenes. Zai Agent requiere que el modelo anuncie visión; un modelo de solo texto no recibe imágenes silenciosamente.

El icono de escudo abre «Permisos». Codex permite elegir solo lectura, escritura en el proyecto o acceso completo, junto con su política de aprobaciones y acceso a red de los comandos. Claude ofrece sus modos nativos de aprobación. Las opciones se aplican al siguiente turno y quedan guardadas en ese chat.

Para conectar un navegador, arrastra uno de los puntos de su cabecera hasta un punto de Codex, Claude o Zai Agent en el mismo proyecto. También puedes pulsar ambos puntos con el ratón o con Enter. Pide al agente que use el navegador conectado: puede navegar, leer la página, pulsar elementos, escribir en campos, elegir opciones, enviar teclas, desplazarse y tomar capturas. El acceso del navegador se configura por separado en «Permisos»: solo lectura, preguntar por cada interacción o control. Los modos de solo lectura de Codex y Plan de Claude impiden modificar el navegador. Los pulsos del hilo corresponden a acciones reales, incluso al minimizar la ventana. La lectura sigue disponible al minimizar; para tomar capturas, restaura el navegador y mantén visible su proyecto en la pizarra. Para desconectar, abre el indicador de conexiones en el pie del navegador, o selecciona el hilo y pulsa Supr/Backspace o su botón. Durante una operación activa o en cola del navegador la desconexión se bloquea; vuelve a estar disponible al terminar. Desconectarlo revoca el acceso y cancela aprobaciones pendientes.

npm run dev:web abre la vista previa en http://127.0.0.1:4317. En ese modo puedes probar la pizarra y el guardado en el navegador; los agentes, las carpetas, la terminal y el navegador integrado necesitan Electron.

Sistemas y paquetes

La aplicación usa Electron y tiene configuración de empaquetado para:

Sistema Paquete
Linux, incluido Fedora AppImage y RPM
Windows Instalador NSIS
macOS Intel y Apple Silicon DMG independiente para x64 y arm64
npm run dist

Construye en el sistema de destino para compilar sus dependencias nativas. Los paquetes aparecen en release/. La firma de distribución de Windows y macOS requiere configurar certificados propios; no se incluyen certificados en el repo.

Si Fedora no tiene FUSE 2, puedes abrir el AppImage sin instalarlo utilizando el modo de extracción, también probado con el navegador y la terminal:

APPIMAGE_EXTRACT_AND_RUN=1 /ruta/al/archivo.AppImage

La versión inicial se ha probado localmente en Fedora. El workflow de CI está preparado para verificar compilación, interfaz, Electron y empaquetado en Linux, Windows y macOS. Esto no sustituye pruebas manuales en los tres sistemas.

Los instaladores oficiales se descargan en GitHub Releases. El workflow Build installers and publish se activa al subir una etiqueta vX.Y.Z, o de forma manual indicando una etiqueta existente. La etiqueta debe coincidir con package.json y apuntar a un commit de main. Solo Y0RD1N puede ejecutarlo. Cada sistema compila sus paquetes y prueba la aplicación empaquetada, incluidos el navegador real, la terminal, las conexiones API y el guardado. La publicación se hace cuando pasan las cuatro variantes. Se comprueban las sumas SHA-256 antes y después de subir los archivos a GitHub y se incluye SHA256SUMS.txt.

Las versiones publicadas son inmutables: sus instaladores y su etiqueta no se pueden sustituir. Las correcciones se distribuyen con una nueva versión. Esta primera distribución no incluye certificados de editor de Microsoft o Apple; los DMG tienen firma ad hoc y no están notarizados. El sistema operativo puede solicitar autorización manual para abrirlos.

Control del repositorio

Zai sigue siendo público y se distribuye bajo MIT. El desarrollo oficial está reservado a @Y0RD1N y las pull requests están deshabilitadas. Las reglas de GitHub restringen la creación, modificación y eliminación de ramas y etiquetas al propietario. Los workflows utilizan acciones oficiales fijadas a commits completos, sin credenciales persistidas en Git y con lectura por defecto. Solo el trabajo final de publicación obtiene escritura para subir los instaladores. Consulta la política de mantenimiento.

En Fedora, la compilación de node-pty puede necesitar gcc-c++, make y Python. Para generar RPM instala también las herramientas de RPM de tu sistema.

Atajos

Acción Atajo
Buscar acciones Ctrl K / ⌘ K
Mover la pizarra Espacio + arrastrar, H o botón central
Seleccionar V
Encuadrar ventanas F
Nueva nota N
Zoom Ctrl / ⌘ + rueda
Enviar / nueva línea Enter / Shift Enter

Validación

npm run check
npm run test:unit
npx playwright install chromium
npm test
npm run build
npm run test:desktop
npm run test:providers

En Linux sin sesión gráfica, ejecuta la prueba de escritorio con xvfb-run -a -s '-screen 0 1920x1080x24' npm run test:desktop. Las pruebas automáticas usan perfiles y carpetas temporales. La prueba de protocolos inicia las CLI sin enviar un prompt ni pedir una inferencia. Los adaptadores API y la generación de fondos se prueban con servidores HTTP aislados y respuestas simuladas; no se realizan inferencias pagadas ni se utilizan claves personales.

También se verificó una respuesta real de ambos agentes usando los conectores de Zai, sin solicitar herramientas ni modificaciones de archivos.

Consulta la arquitectura para los protocolos y la separación entre interfaz y procesos. T3 Code se consultó como referencia de arquitectura; esta implementación se escribió desde cero, sin incorporar código de ese proyecto.

Licencia

Proyecto de Yordi (Y0RD1N), distribuido bajo la licencia MIT. Al reutilizar copias o partes sustanciales del código, se deben conservar su aviso de copyright y de licencia. Las dependencias conservan sus respectivas licencias.

View this README on GitHub

Recommended Tools

Try a different keyword or remove a filter.

Install

npx skillfish add y0rd1n/zai