OpenRender
Tu IA de chat favorita, con control total de una carpeta de tu PC. Convierte DeepSeek, Gemini, Kimi, GLM, Qwen, Arena o Meta AI en un agente real que lee, crea y edita archivos, busca en el código y ejecuta comandos de terminal — todo dentro de la carpeta que tú elijas.
Versión: 0.0.1 beta · Plataforma: Windows · Licencia: GPL-3.0
🌐 English TL;DR
OpenRender turns your normal AI chat (DeepSeek, Gemini, Kimi, GLM, Qwen, Arena, Meta AI — no API keys) into a coding agent with full control of a local project folder: it explores the code, reads/creates/edits files, greps content and runs terminal commands (installs, builds, tests, git), sandboxed to the folder you pick. A browser extension injects commands into the chat; a small local bridge (OpenRender.exe) executes them. Load openrender-extension/ unpacked in Chrome/Edge, run the exe, pick a folder, press Start agent. Free, GPL-3.0.
📖 Índice
- Qué es y qué hace
- Cómo funciona (arquitectura)
- Instalación para usuarios
- Uso diario
- Los 12 comandos del agente
- Seguridad: qué puede y qué no puede hacer
- Estructura del proyecto
- Compilar desde fuente
- Tests
- Configuración avanzada
- Solución de problemas
- Roadmap y limitaciones
- Créditos y licencia
🤖 Qué es y qué hace
Los modelos de IA web (DeepSeek, Gemini…) son excelentes programando, pero no pueden tocar tu disco: solo escriben texto que tú tienes que copiar y pegar archivo por archivo.
OpenRender cierra ese hueco. Es un puente entre el chat y tu disco:
- El modelo escribe comandos JSON dentro de su respuesta normal (
{"command": "edit_file", ...}) - La extensión de navegador detecta esos comandos en la página del chat
- El puente local (
OpenRender.exe) los ejecuta contra tu carpeta - El resultado vuelve al chat como otro mensaje, y la IA continúa sola
El resultado: pides "arregla el bug del login y corre los tests" y la IA explora el proyecto, lee los archivos, aplica los cambios, ejecuta npm test y te reporta — sin que toques el teclado.
Características
⚙️ Cómo funciona (arquitectura)
┌─────────────────────────┐
│ Chat web (DeepSeek, │ El modelo responde con texto +
│ Gemini, Kimi, GLM, │ comandos JSON dentro de bloques
│ Qwen, Arena, Meta AI) │ de código
└───────────┬─────────────┘
│ la extensión lee la página (DOM)
┌───────────▼─────────────┐
│ Extensión Chrome/Edge │ openrender-extension/
│ - bucle agéntico │ parser → executor → feedback
│ - UI: barra, chips, │
│ menú de carpetas │
└───────────┬─────────────┘
│ WebSocket ws://127.0.0.1:17613
┌───────────▼─────────────┐
│ Puente local │ bridge.py → dist/OpenRender.exe
│ - lanza servidores MCP │ (PyInstaller: Python incluido)
│ - enruta cada comando │
│ - selector de carpeta │
└───────────┬─────────────┘
│ stdio (JSON-RPC, protocolo MCP)
┌───────────▼─────────────┐
│ Servidor workspace │ workspace_mcp.py
│ (embebido en el exe) │ 12 herramientas sobre TU carpeta
└───────────┬─────────────┘
▼
📂 Documentos/mi-proyecto/
Flujo de un comando:
- Tú pides algo en el chat.
- La IA responde con un bloque
jsontipo{"command": "read_file", "params": {"path": "src/app.py"}}. - La extensión lo parsea (
core/parser.js), lo valida contra el catálogo de herramientas y lo envía al puente por WebSocket (background.js). - El puente lo enruta al servidor correcto y espera el resultado (con reintentos, watchdogs y auto-restart si el servidor murió).
- El resultado vuelve al chat como mensaje del usuario ("Output of 'read_file': …"), camuflado visualmente como una tarjeta.
- La IA lo lee y decide el siguiente paso. Y así hasta terminar.
Todo es local: ni tu código ni tu carpeta salen de tu máquina (solo viajan al chat lo que la IA lee explícitamente, igual que si pegaras los archivos a mano).
🚀 Instalación para usuarios
Requisitos: Windows 10/11 x64 + Chrome o Edge. No necesita Python ni nada más (todo va dentro del exe).
Opción A — Instalador (recomendado)
- Descarga y ejecuta
OpenRender-Setup-0.0.1-beta.exe - Siguiente → Siguiente. Se instala en
Documentos\OpenRender:
Con accesos directos en escritorio y menú inicio.Documentos\OpenRender\ ├── OpenRender.exe ← el programa ├── openrender-extension\ ← la extensión └── LEEME.txt ← guía rápida
Opción B — Portable
Descarga OpenRender-0.0.1-beta-windows-x64.zip, descomprímelo donde quieras. Mismo contenido.
ℹ️ Windows mostrará un aviso azul ("Windows protegió tu PC") porque el exe no está firmado digitalmente: Más información → Ejecutar de todas formas.
Primera ejecución (asistida)
Al abrir OpenRender.exe por primera vez aparece un tutorial de 3 pasos:
- Cargar la extensión (única vez):
chrome://extensions→ Modo de desarrollador → Cargar descomprimida → selecciona la carpetaopenrender-extension. El tutorial te ofrece abrir esa carpeta automáticamente. - Escribe
s(Listo) → se abre el selector para elegir tu carpeta de proyecto. - Listo. Las siguientes veces entra directo con la carpeta guardada.
🖱️ Uso diario
Ejemplos de peticiones reales:
"Explora el proyecto y explícame cómo está estructurado"
"Añade validación al formulario de registro y prueba que funciona"
"Este test falla: averigua por qué y arréglalo"
"Crea un endpoint /api/users con tests"
"Sube todos los cambios a un branch nuevo"
"Cambia el nombre de la función procesar() a process_order() en todo el proyecto"
Panel ⌄ de la barra: cambiar de carpeta de trabajo (historial con 1 clic), + Añadir carpeta (selector nativo), cambiar de IA, prompt personalizado, gestionar servidores MCP addon.
Cambiar de proyecto: también puedes tocar otra carpeta del historial en cualquier momento — la IA pasa a trabajar ahí al instante y la anterior queda fuera de su alcance.
🛠️ Los 12 comandos del agente
La IA solo puede usar estos comandos (los descubre con list_commands al empezar):
Además mantiene memoria persistente en PROJECT_MEMORY.md: arquitectura, convenciones, decisiones y preferencias del usuario, compartidas entre todas las sesiones.
🔒 Seguridad
- Sandbox estricto: toda ruta se resuelve dentro de la carpeta elegida.
../, rutas absolutas externas y unit links fuera → rechazados. La raíz nunca se puede borrar ni mover. - Borrados protegidos:
delete_pathes permanente; el sistema prompt ordena a la IA confirmar contigo antes de cualquier borrado más allá de lo que pediste explícitamente. - Solo localhost: el puente escucha en
127.0.0.1:17613; nada expuesto a la red. - Tú eliges la carpeta: la IA solo ve lo que esté dentro. Cambias de proyecto = cambia su mundo.
- Código abierto: todo lo que ejecuta está en este repo, auditable línea por línea.
Aun así: es una beta con control real de tu disco. Usa git, revisa lo que hace y no le des carpetas con secretos (.env, llaves) si no hace falta.
📂 Estructura del proyecto
OpenRender/
├── bridge.py # Puente WebSocket ↔ servidores MCP (stdio)
│ # - selector/tutorial de carpeta (1ª vez)
│ # - cambio de carpeta en caliente (desde el chat)
│ # - auto-restart de servidores, watchdogs
│ # - modo empaquetado: se relanza como worker
├── workspace_mcp.py # Servidor MCP principal: 12 herramientas de
│ # archivos+terminal sobre la carpeta elegida
├── config.json # Estado local (carpeta activa, historial) - NO se sube
├── config.example.json # Plantilla de configuración
├── start.bat / MacOS_Start.command # Lanzadores para desarrollo (sin exe)
│
├── openrender-extension/ # Extensión de navegador (Chrome/Edge, MV3)
│ ├── manifest.json
│ ├── background.js # WebSocket al puente + caché de estado
│ ├── core/
│ │ ├── main.js # Bucle agéntico + UI (barra, chips, menú)
│ │ ├── parser.js # Parser de comandos JSON (tolerante a Markdown)
│ │ └── config.js # System prompt + notas de herramientas
│ ├── providers/ # Un adaptador DOM por sitio de chat:
│ │ ├── deepseek.js # deepseek.js, gemini.js, kimi.js, glm.js,
│ │ ├── gemini.js # qwen.js(+qwen-net.js), arena.js, meta.js
│ │ └── … # (selectores, envío, detección de generación)
│ ├── overlay.css # Estilos de barra/chips/menú
│ └── popup.html/js # Popup del icono: estado del puente
│
├── build.py # Empaqueta el exe (PyInstaller) + zip portable
├── build_installer.bat # Compila el instalador (Inno Setup)
├── installer/OpenRender-installer.iss
│
├── test_workspace_mcp.py # 30 pruebas del servidor de archivos
├── test_bridge_e2e.py # Puente completo por WebSocket (13 checks)
├── test_exe_e2e.py # El exe empaquetado, end-to-end
└── test_installer.py # Instalar→arrancar→desinstalar del setup
Detalles de diseño clave:
- Protocolo MCP estándar (JSON-RPC sobre stdio): cualquier servidor MCP puede añadirse como addon desde el panel; el puente agrega sus herramientas y enruta por nombre.
- Un exe, dos roles: en modo empaquetado,
bridge.pyse relanza a sí mismo con--workspace-workerpara servir el workspace embebido. - Provider pattern:
core/main.jsnunca toca el DOM del chat; cada sitio tiene su adaptador. Añadir una nueva IA = un archivo nuevo enproviders/. - Anti-fragilidad del loop: timeouts duros en cada llamada, reintentos ante caídas transitorias, deduplicación de comandos tras recargas, pausa automática cuando la pestaña pierde el foco.
🔨 Compilar desde fuente
Requisitos: Python 3.9+ y pip install pyinstaller pillow.
python build.py rem → dist\OpenRender.exe + release\*.zip
build_installer.bat rem → installer-output\OpenRender-Setup-*.exe (requiere Inno Setup, gratis)
Para probar en desarrollo sin empaquetar: start.bat (busca Python solo, instala websockets si falta).
✅ Tests
python test_workspace_mcp.py rem protocolo MCP: 30 pruebas (CRUD, grep, seguridad CRLF…)
python test_bridge_e2e.py rem arranque real del puente + cambio de carpeta en caliente
python test_exe_e2e.py rem lo mismo contra dist\OpenRender.exe
python test_installer.py rem instalación silenciosa → arranque → desinstalación
node test-parser.js rem (en openrender-extension\) parser de comandos
⚙️ Configuración avanzada
config.json (junto al exe; ver config.example.json):
{
"workspaceFolder": "D:\\proyectos\\mi-app", // carpeta activa ("" = preguntar)
"workspaceHistory": ["D:\\proyectos\\mi-app"], // historial del menú (máx 8)
"mcpServers": {
"workspace": { "command": "workspace_mcp.py", "args": [] },
"blender": { "command": "npx", "args": ["-y", "@alguna/mcp-blender"] }
}
}
Añadir otro servidor MCP (Blender, Sketchfab…): panel ⌄ → MCP servers → nombre + comando de inicio. Se reinicia el puente y sus herramientas aparecen junto a las del workspace.
🩺 Solución de problemas
Logs detallados: ventana del puente y logs\bridge_debug.log (junto al exe).
🗺️ Roadmap y limitaciones
Beta actual (0.0.1): Windows only · la extensión debe cargarse a mano (Chrome/Edge no permiten instalar extensiones desde programas externos) · Gemini/Kimi pueden ser inestables en sesiones largas (en Arena usa modo Direct) · run_command bloquea hasta 10 min máximo.
Ideas en cola: firma digital del instalador · publicación en Chrome Web Store · versión macOS/Linux del exe · streaming del output de comandos largos · selección múltiple de carpetas simultáneas.
💬 Créditos y licencia
OpenRender es un fork fuertemente retrabajado de ZeroScript Free (de agente de Roblox Studio a agente de carpetas locales), que a su vez toma ideas de conexión MCP-addon de javnpa. Gracias a ambos. 🙏
Licencia GPL-3.0 — ver LICENSE. Úsalo, modifícalo y compártelo libremente.
Hecho con ❤️ para dejar de copiar y pegar código a mano.