# OpenFlow **OpenFlow es un constructor visual de flujos de trabajo de IA multiagente.** Arrastra tarjetas de rol a un lienzo, conecta una tubería (planificador → arquitecto → programador), guárdala y ejecútala con agentes paralelos reales. OpenFlow es un proyecto propio. Está construido sobre [opencode](https://github.com/anomalyco/opencode) —y se distribuye como un fork del mismo—, cuyo motor headless (`opencode serve`) impulsa los agentes por debajo. Todo el código propio de OpenFlow vive en [`packages/flow`](packages/flow); no se modifica ningún paquete upstream, de modo que el motor OpenCode se mantiene al día y las fusiones con upstream siguen siendo limpias. El README original de OpenCode aparece a continuación. ### Instalación **Requisitos previos** - [Bun](https://bun.sh) 1.3 o posterior — el único runtime que OpenFlow necesita (ejecuta el motor, el build y el lienzo). Usa `bun --version` para comprobarlo. - [Git](https://git-scm.com). **Obtener el código** ```bash git clone https://github.com/SeeRay11/OpenFlow.git cd OpenFlow bun install ``` `bun install` descarga todo el workspace: el motor OpenCode más el código propio de OpenFlow en [`packages/flow`](packages/flow). La primera instalación es grande; descarga las dependencias nativas del motor. Un paso `postinstall` marca como ejecutables los binarios auxiliares precompilados de `node-pty`, y en Windows retorna de inmediato. ### Detener lo que ya esté en ejecución OpenFlow usa dos puertos: **4096** para el motor y **5174** para el lienzo. Si una ejecución anterior los sigue ocupando, arrancar el motor a mano falla con `Error: Unexpected error` / `ServeError`: es un puerto ocupado, no una instalación rota. `bun openflow.ts` se encarga de esto: reutiliza un puerto que ya está sirviendo y libera el que dejó ocupado una ejecución muerta. Mata los procesos antiguos tú mismo solo cuando quieras un motor realmente nuevo — por ejemplo tras editar `opencode.json`, ya que el motor cachea la configuración del proyecto al arrancar y no vuelve a leerla. **Windows (PowerShell)** ```powershell Get-NetTCPConnection -LocalPort 4096,5174 -State Listen -ErrorAction SilentlyContinue | Select-Object -ExpandProperty OwningProcess -Unique | ForEach-Object { taskkill /pid $_ /T /F } ``` **macOS / Linux** ```bash lsof -t -i :4096 -i :5174 | xargs kill -9 ``` Ambos comandos son seguros cuando no hay nada escuchando: simplemente no encuentran ningún proceso. Matan cualquier proceso en esos puertos, así que comprueba antes si ejecutas algo más ahí: ```powershell Get-NetTCPConnection -LocalPort 4096,5174 -State Listen | Select-Object LocalPort,OwningProcess ``` ```bash lsof -i :4096 -i :5174 ``` **Si el motor falla con `database is locked`,** ya hay otro motor de opencode ejecutándose en otro sitio: una segunda copia de OpenFlow, o uno que dejó un lanzador anterior. Todos los motores comparten una única base de datos en tu directorio de datos de opencode, así que el segundo en arrancar no puede abrirla. Liberar los puertos no sirve aquí, porque ese motor puede no estar ocupándolos. Detenlo por lo que está ejecutando: ```powershell Get-CimInstance Win32_Process -Filter "Name='bun.exe'" | Where-Object { $_.CommandLine -match 'openflow\.ts|src/index\.ts serve|packages/flow dev' } | ForEach-Object { Stop-Process -Id $_.ProcessId -Force } ``` ```bash pkill -f 'openflow\.ts|src/index\.ts serve|packages/flow dev' ``` Después vuelve a iniciar OpenFlow. Si ocurre siempre, lo más probable es que tengas OpenFlow clonado en dos sitios y se arranquen los dos: quédate con uno. ### Ejecutar Un solo comando arranca ambos procesos, igual en todas las plataformas: ```bash bun openflow.ts ``` Arranca el motor, espera hasta que responda y luego abre el lienzo en http://localhost:5174; Ctrl+C detiene ambos. Un puerto que dejó ocupado una ejecución muerta se libera primero, y un puerto que ya está sirviendo se reutiliza en lugar de arrancarse dos veces. Dos scripts ligeros envuelven ese mismo archivo para quienes prefieren el lanzador de su plataforma. No tienen lógica propia: solo traducen las flags a las variables de entorno que `openflow.ts` ya lee. ```powershell .\openflow.ps1 ``` ```bash ./openflow.sh ``` **En Windows ese script puede negarse a arrancar:** PowerShell no ejecuta scripts locales sin firmar de forma predeterminada, así que `.\openflow.ps1` puede fallar con *"openflow.ps1 cannot be loaded because running scripts is disabled on this system"*. Un repositorio descargado como ZIP en lugar de clonado también queda marcado como procedente de internet, lo que lo bloquea por una segunda vía. `bun openflow.ts` no está sujeto a ninguna de las dos y es el camino más corto para sortear ambas. Para usar el script en su lugar, permite los scripts locales en tu propia cuenta y desbloquea el archivo si vino de un ZIP: ```powershell Set-ExecutionPolicy -Scope CurrentUser RemoteSigned Unblock-File .\openflow.ps1 ``` Las flags son opcionales, y las tres superficies se resuelven en el mismo plan: | PowerShell | shell | entorno | qué hace | |---|---|---|---| | `-Project ` | `-p`, `--project ` | `OPENFLOW_PROJECT` | el repositorio que los agentes leen y escriben — **editan archivos reales** | | `-ServerPort ` | `-s`, `--server-port ` | `OPENCODE_SERVER_URL` | puerto del motor, 4096 por defecto | | `-Built` | `-b`, `--built` | `OPENFLOW_BUILT=1` | compilar y servir el bundle estático en lugar de ejecutar vite | | `-Manage` | `-m`, `--manage` | `FLOW_MANAGE_SERVER=1` | dejar que el lienzo sea dueño del motor, lo que hace funcionar su botón de reinicio | | `-Help` | `-h`, `--help` | — | imprimir la lista de flags | | — | — | `OPENFLOW_DRY_RUN=1` | imprimir el plan resuelto y no arrancar nada | O arranca los dos procesos a mano. Primero el servidor: ```bash bun run --cwd packages/opencode --conditions=browser src/index.ts serve --port 4096 ``` Luego el lienzo, en http://localhost:5174: ```bash bun run --cwd packages/flow dev ``` O ejecútalo compilado, lo que sirve la misma aplicación sin vite: ```bash bun run --cwd packages/flow build && bun run --cwd packages/flow start ``` ---

OpenCode logo

OpenFlow is an independent fork. It is not affiliated with, sponsored by, or endorsed by the OpenCode team.

El agente de programación con IA de código abierto.

Discord npm Build status

English | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | 日本語 | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe | Українська | বাংলা | Ελληνικά | Tiếng Việt

[![OpenCode Terminal UI](packages/web/src/assets/lander/screenshot.png)](https://opencode.ai) --- ### Instalación ```bash # YOLO curl -fsSL https://opencode.ai/install | bash # Gestores de paquetes npm i -g opencode-ai@latest # o bun/pnpm/yarn scoop install opencode # Windows choco install opencode # Windows brew install anomalyco/tap/opencode # macOS y Linux (recomendado, siempre al día) brew install opencode # macOS y Linux (fórmula oficial de brew, se actualiza menos) sudo pacman -S opencode # Arch Linux (Stable) paru -S opencode-bin # Arch Linux (Latest from AUR) mise use -g opencode # cualquier sistema nix run nixpkgs#opencode # o github:anomalyco/opencode para la rama dev más reciente ``` > [!TIP] > Elimina versiones anteriores a 0.1.x antes de instalar. ### App de escritorio (BETA) OpenCode también está disponible como aplicación de escritorio. Descárgala directamente desde la [página de releases](https://github.com/anomalyco/opencode/releases) o desde [opencode.ai/download](https://opencode.ai/download). | Plataforma | Descarga | | --------------------- | ---------------------------------- | | macOS (Apple Silicon) | `opencode-desktop-mac-arm64.dmg` | | macOS (Intel) | `opencode-desktop-mac-x64.dmg` | | Windows | `opencode-desktop-windows-x64.exe` | | Linux | `.deb`, `.rpm`, o AppImage | ```bash # macOS (Homebrew) brew install --cask opencode-desktop # Windows (Scoop) scoop bucket add extras; scoop install extras/opencode-desktop ``` #### Directorio de instalación El script de instalación respeta el siguiente orden de prioridad para la ruta de instalación: 1. `$OPENCODE_INSTALL_DIR` - Directorio de instalación personalizado 2. `$XDG_BIN_DIR` - Ruta compatible con la especificación XDG Base Directory 3. `$HOME/bin` - Directorio binario estándar del usuario (si existe o se puede crear) 4. `$HOME/.opencode/bin` - Alternativa por defecto ```bash # Ejemplos OPENCODE_INSTALL_DIR=/usr/local/bin curl -fsSL https://opencode.ai/install | bash XDG_BIN_DIR=$HOME/.local/bin curl -fsSL https://opencode.ai/install | bash ``` ### Agentes OpenCode incluye dos agentes integrados que puedes alternar con la tecla `Tab`. - **build** - Por defecto, agente con acceso completo para tareas de desarrollo - **plan** - Agente de solo lectura para análisis y exploración de código - Deniega ediciones de archivos por defecto - Pide permiso antes de ejecutar comandos bash - Ideal para explorar codebases desconocidas o planificar cambios Además, incluye un subagente **general** para búsquedas complejas y tareas de varios pasos. Se usa internamente y se puede invocar con `@general` en los mensajes. Más información sobre [agentes](https://opencode.ai/docs/agents). ### Documentación Para más información sobre cómo configurar OpenCode, [**ve a nuestra documentación**](https://opencode.ai/docs). ### Contribuir Si te interesa contribuir a OpenCode, lee nuestras [docs de contribución](./CONTRIBUTING.md) antes de enviar un pull request. ### Proyectos basados en OpenCode Si estás trabajando en un proyecto basado en OpenCode y usas "opencode" como parte del nombre, por ejemplo, "opencode-dashboard" u "opencode-mobile", agrega una nota en tu README para aclarar que no está hecho por el equipo de OpenCode y que no está afiliado con nosotros de ninguna manera. --- **Únete a nuestra comunidad** [Discord](https://discord.gg/opencode) | [X.com](https://x.com/opencode)