# Codeg

[![Release](https://img.shields.io/github/v/release/xintaofei/codeg)](https://github.com/xintaofei/codeg/releases)
[![License](https://img.shields.io/github/license/xintaofei/codeg)](../../LICENSE)
[![Tauri](https://img.shields.io/badge/Tauri-2.x-24C8DB)](https://tauri.app/)
[![Next.js](https://img.shields.io/badge/Next.js-16-black)](https://nextjs.org/)
[![Docker](https://img.shields.io/badge/Docker-ready-2496ED)](../../Dockerfile)

<p>
  <a href="../../README.md">English</a> |
  <a href="./README.zh-CN.md">简体中文</a> |
  <a href="./README.zh-TW.md">繁體中文</a> |
  <a href="./README.ja.md">日本語</a> |
  <a href="./README.ko.md">한국어</a> |
  <strong>Español</strong> |
  <a href="./README.de.md">Deutsch</a> |
  <a href="./README.fr.md">Français</a> |
  <a href="./README.pt.md">Português</a> |
  <a href="./README.ar.md">العربية</a>
</p>

Codeg (Code Generation) es un espacio de trabajo empresarial para codificación
con múltiples agentes.
Integra agentes locales de codificación con IA (Claude Code, Codex CLI, OpenCode,
Gemini CLI, OpenClaw, Cline, etc.) en una aplicación de escritorio, servidor independiente
o contenedor Docker — permitiendo el desarrollo remoto desde cualquier navegador — con agregación
de conversaciones, desarrollo paralelo con `git worktree`, gestión de MCP/Skills,
interacción con canales de chat (Telegram, Lark, iLink, etc.) y flujos integrados de Git/archivos/terminal.

![gallery](../images/gallery.svg)

## Interfaz principal
![Codeg Light](../images/main-light.png#gh-light-mode-only)
![Codeg Dark](../images/main-dark.png#gh-dark-mode-only)

## Configuración
| Agentes | MCP | Skills | Control de versiones | Servicio web |
| :---: | :---: | :---: | :---: | :---: |
| ![Agents](../images/1-light.png#gh-light-mode-only) ![Agents](../images/1-dark.png#gh-dark-mode-only) | ![MCP](../images/2-light.png#gh-light-mode-only) ![MCP](../images/2-dark.png#gh-dark-mode-only) | ![Skills](../images/3-light.png#gh-light-mode-only) ![Skills](../images/3-dark.png#gh-dark-mode-only) | ![Version Control](../images/4-light.png#gh-light-mode-only) ![Version Control](../images/4-dark.png#gh-dark-mode-only) | ![Web Service](../images/5-light.png#gh-light-mode-only) ![Web Service](../images/5-dark.png#gh-dark-mode-only) |

## Puntos destacados

- Espacio de trabajo unificado para múltiples agentes en el mismo proyecto
- Ingesta local de conversaciones con renderizado estructurado
- Desarrollo paralelo con flujos integrados de `git worktree`
- **Inicio de Proyecto** — crea nuevos proyectos visualmente con vista previa en tiempo real
- **Canales de Chat** — conecta Telegram, Lark (Feishu), iLink (Weixin) y más a tus agentes de codificación para notificaciones en tiempo real, interacción completa con sesiones y control remoto de tareas
- Gestión de MCP (escaneo local + búsqueda/instalación desde registro)
- Gestión de Skills (ámbito global y por proyecto)
- Gestión de cuentas remotas de Git (GitHub y otros servidores Git)
- Modo de servicio web — accede a Codeg desde cualquier navegador para trabajo remoto
- **Despliegue como servidor independiente** — ejecuta `codeg-server` en cualquier servidor Linux/macOS, accede desde el navegador
- **Soporte Docker** — `docker compose up` o `docker run`, con token/puerto personalizables, persistencia de datos y montaje de directorios de proyecto
- Ciclo de ingeniería integrado (árbol de archivos, diff, cambios git, commit, terminal)

## Inicio de Proyecto

Crea nuevos proyectos visualmente con una interfaz de panel dividido: configura a la izquierda, vista previa en tiempo real a la derecha.

![Project Boot Light](../images/project-boot-light.png#gh-light-mode-only)
![Project Boot Dark](../images/project-boot-dark.png#gh-dark-mode-only)

### Qué ofrece

- **Configuración visual** — selecciona estilo, tema de color, biblioteca de iconos, fuente, radio de borde y más desde menús desplegables; la vista previa se actualiza instantáneamente
- **Vista previa en vivo** — visualiza el aspecto elegido renderizado en tiempo real antes de crear nada
- **Creación con un clic** — presiona "Crear proyecto" y el launcher ejecuta `shadcn init` con tu preset, plantilla de framework (Next.js / Vite / React Router / Astro / Laravel) y gestor de paquetes (pnpm / npm / yarn / bun)
- **Detección de gestores de paquetes** — verifica automáticamente qué gestores están instalados y muestra sus versiones
- **Integración fluida** — el proyecto recién creado se abre directamente en el workspace de Codeg

Actualmente soporta scaffolding de proyectos **shadcn/ui**, con un diseño basado en pestañas preparado para más tipos de proyectos en el futuro.

## Canales de Chat

Conecta tus aplicaciones de mensajería favoritas — Telegram, Lark (Feishu), iLink (Weixin) y más — a tus agentes de codificación IA. Crea tareas, envía mensajes de seguimiento, aprueba permisos, reanuda sesiones y monitorea la actividad directamente desde el chat — recibe respuestas del agente en tiempo real con detalles de llamadas a herramientas, solicitudes de permisos y resúmenes de finalización sin necesidad de abrir un navegador.

### Canales soportados

| Canal | Protocolo | Estado |
| --- | --- | --- |
| Telegram | Bot API (HTTP long-polling) | Integrado |
| Lark (Feishu) | WebSocket + REST API | Integrado |
| iLink (Weixin) | WebSocket + REST API | Integrado |

> Se planean más canales (Discord, Slack, DingTalk, etc.) para futuras versiones.

### Características principales

- **Interacción de sesiones** — ejecuta sesiones completas de agente: `/folder` para elegir proyecto, `/agent` para seleccionar agente, `/task <descripción>` para iniciar una tarea, envía mensajes de seguimiento como texto plano. `/resume` para continuar una sesión anterior, `/cancel` para cancelar, `/sessions` para listar las sesiones activas
- **Control de permisos** — los agentes solicitan permisos de ejecución de herramientas directamente en el chat; `/approve` (o `/approve always` para aprobación automática) y `/deny`
- **Notificaciones de eventos** — las finalizaciones de turno, llamadas a herramientas y errores de los agentes se envían en tiempo real con formato enriquecido
- **Comandos de consulta** — `/search <palabra clave>`, `/today`, `/status`, `/help` para búsquedas rápidas; prefijo de comando configurable
- **Informes diarios** — resumen diario automatizado a una hora programada, incluyendo recuento de conversaciones, desglose por tipo de agente y actividad del proyecto
- **Multi-idioma** — plantillas de mensajes en 10 idiomas (inglés, chino simplificado/tradicional, japonés, coreano, español, alemán, francés, portugués, árabe)
- **Credenciales seguras** — los tokens se almacenan en el llavero del SO, nunca se exponen en archivos de configuración ni logs
- **Mensajes enriquecidos** — formato Markdown para Telegram, diseño de tarjetas para Lark; respaldo en texto plano para todas las plataformas

### Configuración

1. Crea un canal en **Configuración → Canales de Chat** (elige Telegram, Lark o iLink)
2. Introduce tu token de bot (Telegram), credenciales de la app (Lark) o escanea el código QR para iniciar sesión (iLink) — almacenados de forma segura en el llavero del SO
3. Configura los filtros de eventos y la programación opcional del informe diario
4. Conecta — los mensajes empiezan a fluir cuando los agentes emiten eventos

## Agentes compatibles

| Agente | Ruta de variable de entorno | Ruta por defecto en macOS / Linux | Ruta por defecto en Windows |
| --- | --- | --- | --- |
| Claude Code | `$CLAUDE_CONFIG_DIR/projects` | `~/.claude/projects` | `%USERPROFILE%\\.claude\\projects` |
| Codex CLI | `$CODEX_HOME/sessions` | `~/.codex/sessions` | `%USERPROFILE%\\.codex\\sessions` |
| OpenCode | `$XDG_DATA_HOME/opencode/opencode.db` | `~/.local/share/opencode/opencode.db` | `%USERPROFILE%\\.local\\share\\opencode\\opencode.db` |
| Gemini CLI | `$GEMINI_CLI_HOME/.gemini` | `~/.gemini` | `%USERPROFILE%\\.gemini` |
| OpenClaw | — | `~/.openclaw/agents` | `%USERPROFILE%\\.openclaw\\agents` |
| Cline | `$CLINE_DIR` | `~/.cline/data/tasks` | `%USERPROFILE%\\.cline\\data\\tasks` |

> Nota: las variables de entorno tienen prioridad sobre las rutas de respaldo.

## Inicio rápido

### Requisitos

- Node.js `>=22` (recomendado)
- pnpm `>=10`
- Rust stable (2021 edition)
- Dependencias de compilación de Tauri 2 (solo modo escritorio)

Ejemplo para Linux (Debian/Ubuntu):

```bash
sudo apt-get update
sudo apt-get install -y \
  libwebkit2gtk-4.1-dev \
  libayatana-appindicator3-dev \
  librsvg2-dev \
  patchelf
```

### Desarrollo

```bash
pnpm install

# Exportación estática del frontend a out/
pnpm build

# Aplicación de escritorio completa (Tauri + Next.js)
pnpm tauri dev

# Solo frontend
pnpm dev

# Compilación de escritorio
pnpm tauri build

# Servidor independiente (sin Tauri/GUI necesario)
pnpm server:dev

# Compilar binario de servidor para producción
pnpm server:build

# Lint
pnpm eslint .

# Verificaciones de Rust (ejecutar en src-tauri/)
cargo check
cargo clippy
cargo build
```

### Despliegue del servidor

Codeg puede ejecutarse como un servidor web independiente sin entorno de escritorio.

#### Opción 1: Instalación en una línea (Linux / macOS)

```bash
curl -fsSL https://raw.githubusercontent.com/xintaofei/codeg/main/install.sh | bash
```

Instalar una versión específica o en un directorio personalizado:

```bash
curl -fsSL https://raw.githubusercontent.com/xintaofei/codeg/main/install.sh | bash -s -- --version v0.5.2 --dir ~/.local/bin
```

Luego ejecutar:

```bash
codeg-server
```

#### Opción 2: Instalación en una línea (Windows PowerShell)

```powershell
irm https://raw.githubusercontent.com/xintaofei/codeg/main/install.ps1 | iex
```

O instalar una versión específica:

```powershell
.\install.ps1 -Version v0.5.2
```

#### Opción 3: Descargar desde GitHub Releases

Los binarios precompilados (con recursos web incluidos) están disponibles en la página de [Releases](https://github.com/xintaofei/codeg/releases):

| Plataforma | Archivo |
| --- | --- |
| Linux x64 | `codeg-server-linux-x64.tar.gz` |
| Linux arm64 | `codeg-server-linux-arm64.tar.gz` |
| macOS x64 | `codeg-server-darwin-x64.tar.gz` |
| macOS arm64 | `codeg-server-darwin-arm64.tar.gz` |
| Windows x64 | `codeg-server-windows-x64.zip` |

```bash
# Ejemplo: descargar, extraer y ejecutar
tar xzf codeg-server-linux-x64.tar.gz
cd codeg-server-linux-x64
CODEG_STATIC_DIR=./web ./codeg-server
```

#### Opción 4: Docker

```bash
# Usando Docker Compose (recomendado)
docker compose up -d

# O ejecutar directamente con Docker
docker run -d -p 3080:3080 -v codeg-data:/data ghcr.io/xintaofei/codeg:latest

# Con token personalizado y directorio de proyecto montado
docker run -d -p 3080:3080 \
  -v codeg-data:/data \
  -v /path/to/projects:/projects \
  -e CODEG_TOKEN=your-secret-token \
  ghcr.io/xintaofei/codeg:latest
```

La imagen Docker utiliza una compilación multi-etapa (Node.js + Rust → runtime Debian slim) e incluye `git` y `ssh` para operaciones con repositorios. Los datos se persisten en el volumen `/data`. Opcionalmente, puedes montar directorios de proyecto para acceder a repositorios locales desde el contenedor.

#### Opción 5: Compilar desde el código fuente

```bash
pnpm install && pnpm build          # compilar frontend
cd src-tauri
cargo build --release --bin codeg-server --no-default-features
CODEG_STATIC_DIR=../out ./target/release/codeg-server
```

#### Configuración

Variables de entorno:

| Variable | Valor por defecto | Descripción |
| --- | --- | --- |
| `CODEG_PORT` | `3080` | Puerto HTTP |
| `CODEG_HOST` | `0.0.0.0` | Dirección de enlace |
| `CODEG_TOKEN` | *(aleatorio)* | Token de autenticación (se imprime en stderr al iniciar) |
| `CODEG_DATA_DIR` | `~/.local/share/codeg` | Directorio de base de datos SQLite |
| `CODEG_STATIC_DIR` | `./web` o `./out` | Directorio de exportación estática de Next.js |

## Arquitectura

```text
Next.js 16 (Static Export) + React 19
        |
        | invoke() (desktop) / fetch() + WebSocket (web)
        v
  ┌─────────────────────────┐
  │   Transport Abstraction  │
  │  (Tauri IPC or HTTP/WS) │
  └─────────────────────────┘
        |
        v
┌─── Tauri Desktop ───┐    ┌─── codeg-server ───┐
│  Tauri 2 Commands    │    │  Axum HTTP + WS    │
│  (window management) │    │  (standalone mode)  │
└──────────┬───────────┘    └──────────┬──────────┘
           └──────────┬───────────────┘
                      v
            Shared Rust Core
              |- AppState
              |- ACP Manager
              |- Parsers (conversation ingestion)
              |- Chat Channels
              |- Git / File Tree / Terminal
              |- MCP marketplace + config
              |- SeaORM + SQLite
                      |
              ┌───────┼───────┐
              v       v       v
  Local Filesystem  Git   Chat Channels
    / Git Repos    Repos  (Telegram, Lark, iLink)
```

## Restricciones

- El frontend usa exportación estática (`output: "export"`)
- Sin rutas dinámicas de Next.js (`[param]`); se usan parámetros de consulta en su lugar
- Parámetros de comandos Tauri: `camelCase` en frontend, `snake_case` en Rust
- TypeScript en modo estricto

## Privacidad y seguridad

- Enfoque local por defecto para análisis, almacenamiento y operaciones de proyecto
- El acceso a la red solo ocurre mediante acciones iniciadas por el usuario
- Soporte de proxy del sistema para entornos empresariales
- El modo de servicio web utiliza autenticación basada en tokens

## Agradecimientos

- [LinuxDO](https://linux.do) — la comunidad donde todo comenzó
- [ACP](https://agentclientprotocol.com) — el Agent Client Protocol (ACP) es la base que permite a Codeg conectarse con múltiples agentes

## Licencia

Apache-2.0. Ver `LICENSE`.
