README.es.md

June 2, 2026 · View on GitHub

OxideTerm

⚡ OxideTerm

Un workspace SSH local-first para quienes viven en la terminal.
Conéctate una vez a una máquina remota y trabaja con su shell, archivos, puertos, transferencias, editor ligero y BYOK AI desde un solo lugar.
App nativa Tauri · SSH puro en Rust · sin cuenta para los workflows SSH principales
Zero Electron. Zero OpenSSL. Zero telemetría. Zero suscripción. BYOK-first. SSH puro en Rust.

Versión Plataforma Licencia Rust Tauri Descargas totales

Descargar última versión Descargar última beta

🌐 oxideterm.app — Documentation & website

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Français | Deutsch | Español | Italiano | Português | Tiếng Việt

OxideTerm AI opening a terminal demo

Mira cómo OxideSens sigue una petición del usuario y abre una terminal dentro de OxideTerm.


Qué puedes hacer

  • Gestionar en paralelo terminales SSH, SFTP, port forwards, transferencias in-terminal y shells locales
  • Seguir trabajando ante cortes de red con Grace Period reconnect
  • Usar tu propio proveedor de IA para inspeccionar sesiones activas y ejecutar acciones aprobadas

¿Por qué OxideTerm?

Si te importa...OxideTerm te da...
Un nodo remoto, muchas herramientasTerminal, SFTP, port forwarding, trzsz, mini IDE, monitorización y contexto de IA siguen unidos al mismo workspace SSH
Workflows SSH local-firstSSH, SFTP, forwarding, shell local y configuración funcionan sin registro; la sincronización cloud es opcional vía plugin oficial
BYOK AI en vez de créditos de plataformaOxideSens usa tu endpoint OpenAI/Ollama/DeepSeek/OpenAI-compatible con soporte MCP y RAG
Reconexión estableGrace Period sondea la conexión anterior durante 30 s antes de reemplazarla, para que vim/htop/yazi sobrevivan a cortes breves
App nativa en Rust puroApp nativa Tauri 2.0, russh 0.59 compilado con ring, sin Electron ni OpenSSL/libssh2
Seguridad de credencialesContraseñas y claves API quedan en el llavero del sistema, los metadatos se sellan localmente y .oxide usa ChaCha20-Poly1305 + Argon2id

Qué es / qué no es

OxideTerm se centra en workflows SSH local-first. Está pensado para usuarios que quieren mantener terminal, archivos, puertos, transferencias, edición ligera y contexto de IA alrededor de sus propias máquinas y nodos remotos.

No pretende ser una plataforma cloud de agentes ni un proyecto centrado solo en benchmarks de renderizado de terminal. La dirección es más concreta: que el trabajo remoto se sienta como un workspace local, sin cuenta de OxideTerm.


Capturas de pantalla

Terminal SSH + OxideSens AI

Terminal SSH con barra lateral OxideSens AI
Gestor de archivos SFTP

Gestor de archivos SFTP de doble panel con cola de transferencias
IDE integrado (CodeMirror 6)

Modo IDE integrado con editor CodeMirror 6
Reenvío de puertos inteligente

Reenvío de puertos inteligente con detección automática

Descarga

Descargue la última versión desde GitHub Releases.


Resumen de funcionalidades

CategoríaFuncionalidades
TerminalPTY local (zsh/bash/fish/pwsh/WSL2), SSH remoto, terminales serie locales, paneles divididos, difusión de entrada, grabación/reproducción de sesiones (asciicast v2), renderizado WebGL, 30+ temas + editor personalizado, paleta de comandos (⌘K), modo zen, transferencia de archivos trzsz integrada
SSH y autenticaciónPool de conexiones y multiplexación, ProxyJump (saltos ilimitados) con grafo topológico, reconexión automática con período de gracia, Reenvío de agente. Auth: contraseña, clave SSH (RSA/Ed25519/ECDSA), SSH Agent, certificados, 2FA interactivo por teclado, Known Hosts TOFU
SFTPNavegador de doble panel, arrastrar y soltar, vista previa inteligente (imágenes/vídeo/audio/código/PDF/hex/fuentes), cola de transferencias con progreso y ETA, marcadores, extracción de archivos
Modo IDECodeMirror 6 con 30+ lenguajes, árbol de archivos + estado Git, multi-pestaña, resolución de conflictos, terminal integrado. Agente remoto opcional para Linux (9 arquitecturas adicionales)
Reenvío de puertosLocal (-L), remoto (-R), SOCKS5 dinámico (-D), I/O por paso de mensajes sin bloqueo, restauración automática en reconexión, informe de fallos, tiempo de inactividad
IA (OxideSens)Asistente orientado a objetivos para conexiones guardadas, sesiones SSH activas, buffers de terminal, rutas SFTP, ajustes y entradas de la base de conocimiento; puede diagnosticar salida remota, ejecutar comandos aprobados, inspeccionar archivos y explicar fallos sin una cuenta de OxideTerm
PluginsCarga ESM en tiempo de ejecución, 18 espacios de nombres API, 24 componentes UI Kit, API congelada + ACL Proxy, disyuntor, desactivación automática en caso de errores
CLICompanion oxt: JSON-RPC 2.0 vía Unix Socket / Named Pipe, status/health/list/forward/config/connect/focus/attach/SFTP/import/AI, salida legible + JSON
SeguridadExportación .oxide cifrada (ChaCha20-Poly1305 + Argon2id 256 MB), configuración local cifrada en reposo, llavero del SO, Touch ID (macOS), almacén de claves cifrado portátil, TOFU de clave de host, limpieza de memoria zeroize
i18n11 idiomas: EN, 简体中文, 繁體中文, 日本語, 한국어, FR, DE, ES, IT, PT-BR, VI

Bajo el capó

OxideTerm mantiene una superficie local-first, pero por dentro está construido para workflows SSH intensivos. Los detalles completos de implementación se conservan abajo.

Arquitectura, internals SSH, reconexión, IA, forwarding, plugins y más

Arquitectura — Comunicación de doble plano

OxideTerm separa los datos del terminal de los comandos de control en dos planos independientes:

┌─────────────────────────────────────┐
│        Frontend (React 19)          │
│  xterm.js 6 (WebGL) + 19 stores     │
└──────────┬──────────────┬───────────┘
           │ Tauri IPC    │ WebSocket (binario)
           │ (JSON)       │ puerto por sesión
┌──────────▼──────────────▼───────────┐
│         Backend (Rust)              │
│  NodeRouter → SshConnectionRegistry │
│  Wire Protocol v1                   │
│  [Type:1][Length:4][Payload:n]      │
└─────────────────────────────────────┘
  • Plano de datos (WebSocket): cada sesión SSH obtiene su propio puerto WebSocket. Los bytes del terminal fluyen como tramas binarias con encabezado Type-Length-Payload — sin serialización JSON, sin codificación Base64, cero sobrecarga en la ruta crítica.
  • Plano de control (Tauri IPC): gestión de conexiones, operaciones SFTP, reenvíos, configuración — JSON estructurado, pero fuera de la ruta crítica.
  • Direccionamiento por nodo: el frontend nunca toca sessionId ni connectionId. Todo se direcciona mediante nodeId, resuelto atómicamente en el servidor por el NodeRouter. La reconexión SSH cambia el connectionId subyacente — pero SFTP, IDE y reenvíos no se ven afectados en absoluto.

🔩 SSH puro en Rust — russh 0.59

Toda la pila SSH es russh 0.59 compilada contra el backend criptográfico ring:

  • Cero dependencias C/OpenSSL — toda la pila criptográfica es Rust. No más depuración de «¿qué versión de OpenSSL?».
  • Protocolo SSH2 completo: intercambio de claves, canales, subsistema SFTP, reenvío de puertos
  • Suites de cifrado ChaCha20-Poly1305 y AES-GCM, claves Ed25519/RSA/ECDSA
  • AgentSigner personalizado: envuelve el SSH Agent del sistema e implementa el trait Signer de russh, resolviendo problemas de bounds Send RPITIT clonando &AgentIdentity a un valor propio antes de cruzar .await
pub struct AgentSigner { /* wraps system SSH Agent */ }
impl Signer for AgentSigner { /* challenge-response via Agent IPC */ }
  • Soporte de plataforma: Unix (SSH_AUTH_SOCK), Windows (\\.\pipe\openssh-ssh-agent)
  • Cadenas proxy: cada salto usa autenticación Agent de forma independiente
  • Reconexión: AuthMethod::Agent se reproduce automáticamente

🔄 Reconexión inteligente con período de gracia

La mayoría de los clientes SSH destruyen todo al desconectarse y empiezan de nuevo. El orquestador de reconexión de OxideTerm adopta un enfoque fundamentalmente diferente:

  1. Detección del timeout de heartbeat WebSocket (300 s, calibrado para macOS App Nap y throttling de timers JS)
  2. Snapshot del estado completo: paneles del terminal, transferencias SFTP en curso, reenvíos de puertos activos, archivos IDE abiertos
  3. Sondeo inteligente: eventos visibilitychange + online disparan keepalive SSH proactivo (~2 s de detección frente a 15–30 s de timeout pasivo)
  4. Período de gracia (30 s): sondea la conexión SSH antigua vía keepalive — si se recupera (ej.: cambio de punto de acceso WiFi), tus aplicaciones TUI (vim, htop, yazi) sobreviven completamente intactas
  5. Si la recuperación falla → nueva conexión SSH → restauración automática de reenvíos → reanudación de transferencias SFTP → reapertura de archivos IDE

Pipeline: queued → snapshot → grace-period → ssh-connect → await-terminal → restore-forwards → resume-transfers → restore-ide → verify → done

Toda la lógica se ejecuta a través de un ReconnectOrchestratorStore dedicado — cero código de reconexión disperso en hooks o componentes.

🛡️ Pool de conexiones SSH

SshConnectionRegistry con conteo de referencias respaldado por DashMap para acceso concurrente sin bloqueo:

  • Una conexión, muchos consumidores: terminal, SFTP, reenvíos de puertos e IDE comparten una única conexión SSH física — sin handshakes TCP redundantes
  • Máquina de estados por conexión: connecting → active → idle → link_down → reconnecting
  • Gestión del ciclo de vida: timeout de inactividad configurable (5 min / 15 min / 30 min / 1 h / nunca), intervalo keepalive de 15 s, detección de fallos de heartbeat
  • Heartbeat WsBridge: intervalo de 30 s, timeout de 5 min — tolera macOS App Nap y throttling JS del navegador
  • Propagación en cascada: fallo del host de salto → todos los nodos siguientes marcados automáticamente como link_down con sincronización de estado
  • Desconexión por inactividad: emite connection_status_changed al frontend (no solo node:state interno), previniendo desincronización de la interfaz

🤖 OxideSens AI

Asistente de IA centrado en la privacidad con dos modos de interacción:

  • Panel inline (⌘I): comandos rápidos de terminal, salida inyectada vía bracketed paste
  • Chat lateral: conversaciones persistentes con historial completo
  • Contexto de workspace orientado a objetivos: ve conexiones guardadas, sesiones SSH activas, buffers de terminal, rutas SFTP, ajustes y entradas de la base de conocimiento como objetivos del workspace
  • Acciones aprobadas: puede diagnosticar salida remota, ejecutar comandos aprobados, inspeccionar archivos y explicar fallos sin requerir una cuenta de OxideTerm
  • Soporte MCP: conexión a servidores Model Context Protocol externos (stdio & SSE) para integración de herramientas de terceros
  • Base de conocimiento RAG (v0.20): importa documentos Markdown/TXT en colecciones con alcance (global o por conexión). La búsqueda híbrida fusiona índice de palabras clave BM25 + similitud coseno vectorial vía Reciprocal Rank Fusion. Fragmentación compatible con Markdown que preserva la jerarquía de encabezados. Tokenizer de bigramas CJK para chino/japonés/coreano.
  • Proveedores: OpenAI, Ollama, DeepSeek, OneAPI, o cualquier endpoint /v1/chat/completions
  • Seguridad: claves API almacenadas en el llavero del SO; en macOS, la lectura de claves protegida por Touch ID vía LAContext — sin entitlements ni firma de código requeridos, en caché tras la primera autenticación por sesión

Reenvío de puertos — I/O sin bloqueo

Reenvío local (-L), remoto (-R) y dinámico SOCKS5 (-D) completo:

  • Arquitectura por paso de mensajes: el canal SSH es propiedad de una única tarea ssh_io — sin Arc<Mutex<Channel>>, eliminando la contención mutex por completo
  • Informe de fallos: las tareas de reenvío informan activamente la razón de salida (desconexión SSH, cierre de puerto remoto, timeout) para diagnósticos claros
  • Restauración automática: los reenvíos Suspended se reanudan automáticamente en reconexión sin intervención del usuario
  • Timeout de inactividad: FORWARD_IDLE_TIMEOUT (300 s) previene la acumulación de conexiones zombi

📦 trzsz — Transferencia de Archivos Integrada

Sube y descarga archivos directamente a través de la sesión SSH — sin conexión SFTP:

  • Protocolo integrado: los archivos viajan como tramas Base64 dentro del flujo terminal existente — funciona de forma transparente a través de cadenas ProxyJump y tmux sin puertos ni agentes adicionales
  • Bidireccional: el servidor ejecuta tsz <archivo> para enviar archivos al cliente; trz inicia la subida del cliente; compatible con arrastrar y soltar
  • Soporte de directorios: transferencias recursivas mediante trz -d / tsz -d
  • Límites de transferencia: límites configurables por sesión para tamaño de bloque, cantidad de archivos y bytes totales
  • I/O nativo de Tauri: lecturas y escrituras de archivos mediante diálogos nativos de Tauri y Rust I/O — sin restricciones de memoria del navegador
  • Notificaciones en vivo: notificaciones Toast para inicio, finalización, cancelación y errores — incluyendo un aviso cuando se detecta trzsz pero la función está desactivada
  • Activar en Configuración → Terminal → Transferencia Integrada

🔌 Sistema de plugins en tiempo de ejecución

Carga ESM dinámica con una superficie API congelada y reforzada en seguridad:

  • API PluginContext: 18 espacios de nombres — terminal, ui, commands, settings, lifecycle, events, storage, system
  • 24 componentes UI Kit: componentes React preconstruidos (botones, campos de entrada, diálogos, tablas…) inyectados en sandboxes de plugins vía window.__OXIDE__
  • Membrana de seguridad: Object.freeze en todos los objetos de contexto, ACL basada en Proxy, lista blanca IPC, disyuntor con desactivación automática tras errores repetidos
  • Módulos compartidos: React, ReactDOM, zustand, lucide-react expuestos para uso de plugins sin duplicar bundles

⚡ Renderizado adaptativo

Planificador de renderizado de tres niveles que reemplaza el batching fijo de requestAnimationFrame:

NivelDisparadorFrecuenciaBeneficio
BoostDatos de trama ≥ 4 KB120 Hz+ (ProMotion nativo)Elimina el lag de desplazamiento en cat largefile.log
NormalEscritura estándar60 Hz (RAF)Base fluida
Inactivo3 s sin E/S / pestaña oculta1–15 Hz (decaimiento exponencial)Carga GPU casi nula, ahorro de batería

Las transiciones son completamente automáticas — impulsadas por el volumen de datos, la entrada del usuario y la API Page Visibility. Las pestañas en segundo plano siguen vaciando datos vía timer de inactividad sin despertar RAF.

🔐 Exportación cifrada .oxide

Respaldo de conexión portátil e inviolable:

  • Cifrado autenticado ChaCha20-Poly1305 AEAD
  • KDF Argon2id: coste de memoria de 256 MB, 4 iteraciones — resistente a fuerza bruta GPU
  • Suma de verificación de integridad SHA-256
  • Incrustación opcional de claves: claves privadas codificadas en base64 en la carga útil cifrada
  • Análisis previo: desglose de tipos de autenticación, detección de claves faltantes antes de la exportación

📡 ProxyJump — Multi-salto con consciencia topológica

  • Profundidad de cadena ilimitada: Cliente → Salto A → Salto B → … → Destino
  • Análisis automático de ~/.ssh/config, construcción del grafo topológico, algoritmo de Dijkstra para la ruta óptima
  • Nodos de salto reutilizables como sesiones independientes
  • Propagación de fallos en cascada: host de salto caído → todos los nodos siguientes marcados automáticamente como link_down

⚙️ Terminal local — PTY thread-safe

Shell local multiplataforma vía portable-pty 0.8, protegido por feature gate local-terminal:

  • MasterPty envuelto en std::sync::Mutex — hilos de E/S dedicados mantienen las lecturas PTY bloqueantes fuera del bucle de eventos de Tokio
  • Detección automática de shell: zsh, bash, fish, pwsh, Git Bash, WSL2
  • cargo build --no-default-features elimina PTY para builds móviles/ligeros

🪟 Optimización Windows

  • ConPTY nativo: invoca directamente la API Windows Pseudo Console — soporte completo TrueColor y ANSI, sin WinPTY obsoleto
  • Escáner de shells: detecta automáticamente PowerShell 7, Git Bash, WSL2, CMD vía Registro y PATH

Y más

  • Modo IDE: CodeMirror 6 vía SFTP, 24 lenguajes, árbol de archivos con estado Git, multi-pestaña, resolución de conflictos — agente remoto opcional (~1 MB) para funcionalidades mejoradas en Linux
  • Perfilador de recursos: CPU/memoria/red en vivo vía canal SSH persistente leyendo /proc/stat, cálculo basado en deltas, degradación automática a solo RTT en sistemas no Linux
  • Motor de temas personalizado: 30+ temas integrados, editor visual con vista previa en vivo, 20 campos xterm.js + 24 variables de color UI, derivación automática de colores UI desde la paleta del terminal
  • Grabación de sesiones: formato asciicast v2, grabación y reproducción completas
  • Difusión de entrada: escribe una vez, envía a todos los paneles divididos — operaciones de servidor por lotes
  • Galería de fondos: imágenes de fondo por pestaña, 16 tipos de pestañas, control de opacidad/desenfoque/ajuste
  • Companion CLI (oxt): binario de ~1 MB, JSON-RPC 2.0 vía Unix Socket / Named Pipe, status/health/list/forward/config/connect/focus/attach/SFTP/import/AI con salida legible o --json
  • WSL Graphics ⚠️ experimental: visor VNC integrado — 9 entornos de escritorio + modo aplicación única, detección WSLg, Xtigervnc + noVNC

Plugins oficiales

PluginDescripciónRepositorio
Cloud SyncSincronización autoalojada cifrada — carga e importa instantáneas .oxide mediante WebDAV, HTTP JSON, Dropbox, Git o S3oxideterm.cloud-sync
Telnet ClientCliente Telnet nativo para routers, switches y dispositivos legacy — sin necesidad de binario externooxideterm.telnet
📸 11 idiomas en acción

English

简体中文

繁體中文

日本語

한국어

Français

Deutsch

Español

Italiano

Português

Tiếng Việt

Requisitos de runtime

OxideTerm usa el runtime WebView nativo proporcionado por el sistema operativo. La mayoría de los usuarios ya lo tienen instalado; instálelo manualmente solo si la app no se inicia o si su entorno está aislado.

PlataformaDependencia en tiempo de ejecución
WindowsWebView2 Runtime — preinstalado en Windows 10 (1803+) y Windows 11. Para entornos sin conexión / intranet, utilice el instalador independiente Evergreen (sin conexión, ~170 MB) o despliegue el runtime de versión fija mediante directivas de grupo.
macOSNinguna (usa WebKit nativo)
Linuxlibwebkit2gtk-4.1 (generalmente preinstalado en escritorios modernos)

Modo portátil

OxideTerm admite un modo portátil totalmente autónomo: todos los datos (conexiones, secretos, configuración) se almacenan junto al binario de la aplicación, ideal para memorias USB o entornos sin conexión.

Activación

Opción A — Archivo marcador (lo más sencillo): cree un archivo vacío llamado portable (sin extensión) junto a la aplicación.

PlataformaDónde colocar el archivo portable
macOSJunto a OxideTerm.app (mismo directorio)
WindowsJunto a OxideTerm.exe
Linux (AppImage)Junto al archivo .AppImage
/my-usb/
├── OxideTerm.app   (or .exe / .AppImage)
├── portable        ← archivo vacío creado por usted
└── data/           ← creado automáticamente en el primer inicio

Opción B — portable.json (directorio de datos personalizado): coloque un archivo portable.json en la misma ubicación:

{
  "enabled": true,
  "dataDir": "my-data"
}
  • enabled es true por defecto si se omite
  • dataDir debe ser una ruta relativa (no se permite ..); por defecto es data

Cómo funciona

  1. Primer inicio — La pantalla de arranque le pedirá que cree una contraseña portátil. Esta contraseña cifra el almacén de claves local (ChaCha20-Poly1305 + Argon2id) y protege todos los secretos guardados.
  2. Inicios posteriores — Introduzca la contraseña para desbloquear. En macOS con Touch ID, puede activar el desbloqueo biométrico en Settings → General → Portable Runtime.
  3. Bloqueo de instancia — Solo una instancia de OxideTerm puede usar el directorio portátil a la vez (data/.portable.lock).
  4. Gestión — Cambie la contraseña portátil o active el desbloqueo biométrico en Settings → General → Portable Runtime.
  5. Portabilidad — Copie toda la carpeta (aplicación + marcador portable + data/) a otra máquina. La contraseña viaja con el almacén de claves.

Tip

Las actualizaciones automáticas están desactivadas en modo portátil. Para actualizar, sustituya el binario de la aplicación y conserve el directorio data/.


Inicio rápido

Requisitos previos

  • Rust 1.85+
  • Node.js 18+ (pnpm recomendado)
  • Herramientas de plataforma:
    • macOS: Xcode Command Line Tools
    • Windows: Visual Studio C++ Build Tools
    • Linux: build-essential, libwebkit2gtk-4.1-dev, libssl-dev

Desarrollo

git clone https://github.com/AnalyseDeCircuit/oxideterm.git
cd oxideterm && pnpm install

# Compilar el CLI companion (requerido para funciones CLI)
pnpm cli:build

# Aplicación completa (frontend + backend Rust con hot reload)
pnpm run tauri dev

# Solo frontend (Vite en el puerto 1420)
pnpm dev

# Build de producción
pnpm run tauri build

Stack tecnológico

CapaTecnologíaDetalles
FrameworkTauri 2.0Binario nativo, 25–40 MB
RuntimeTokio + DashMap 6Completamente asíncrono, maps concurrentes sin bloqueo
SSHrussh 0.59 (ring)Puro Rust, cero dependencias C, SSH Agent
PTY localportable-pty 0.8Feature-gated, ConPTY en Windows
FrontendReact 19.1 + TypeScript 5.8Vite 7, Tailwind CSS 4
EstadoZustand 519 stores especializados
Terminalxterm.js 6 + WebGLAcelerado por GPU, 60 fps+
EditorCodeMirror 630+ modos de lenguaje
CifradoChaCha20-Poly1305 + Argon2idAEAD + KDF con alto consumo de memoria (256 MB)
Almacenamientoredb 2.1Store KV embebido
i18ni18next 2511 idiomas × 22 espacios de nombres
PluginsESM RuntimePluginContext congelado + 24 UI Kit
CLIJSON-RPC 2.0Unix Socket / Named Pipe

Tamaño del proyecto

Medido con tokei, excluyendo dependencias y artefactos de build.

MétricaTamaño actual
Código total286K+
TypeScript / TSX130K+
Rust100K+
Código de tests frontend24K+
Archivos de tests frontend128
Archivos fuente (src + src-tauri/src)664

Seguridad

AspectoImplementación
ContraseñasLlavero del SO (macOS Keychain / Windows Credential Manager / libsecret)
Almacén de claves portátilBóveda cifrada con ChaCha20-Poly1305 junto a la aplicación, vinculación biométrica opcional a través del llavero del SO
Claves API IALlavero del SO + autenticación biométrica Touch ID en macOS
Exportación.oxide: ChaCha20-Poly1305 + Argon2id (256 MB de memoria, 4 iteraciones)
MemoriaSeguridad de memoria de Rust + zeroize para limpieza de datos sensibles
Claves de hostTOFU con ~/.ssh/known_hosts, rechaza cambios (prevención MITM)
PluginsObject.freeze + ACL Proxy, disyuntor, lista blanca IPC
WebSocketTokens de un solo uso con límites de tiempo

Hoja de ruta

  • Reenvío de agente SSH
  • Soporte completo de ProxyCommand
  • Registro de auditoría
  • Mejoras del Agent
  • Búsqueda de sesiones y cambio rápido
  • Migración nativa a Rust via GPUI — [en progreso]

Soporte y mantenimiento

OxideTerm es mantenido por un desarrollador independiente con el mejor esfuerzo posible. Los informes de bugs y las regresiones reproducibles tienen prioridad; las solicitudes de funcionalidades son bienvenidas, pero no siempre se implementarán.

Si OxideTerm ayuda a su flujo de trabajo, una estrella en GitHub, una reproducción de issue, una corrección de traducción, un plugin o una pull request ayudan a que el proyecto siga avanzando.


Licencia

GPL-3.0 — este software es software libre licenciado bajo la Licencia Pública General de GNU v3.0.

Puede usar, modificar y distribuir libremente este software bajo los términos de la GPL-3.0. Cualquier trabajo derivado también debe distribuirse bajo la misma licencia.

OxideTerm cambió de PolyForm Noncommercial 1.0.0 a GPL-3.0 a partir de la v1.0.0. Hicimos este cambio deliberadamente: nada de cosplay de "open source" con trampas no comerciales o cláusulas de no competencia, sino libertad copyleft clara para usuarios, forks, redistribuidores y operadores comerciales.

Publicar el código no lo convierte automáticamente en open source. Si un proyecto muestra una licencia conocida de código abierto pero añade cláusulas como "sin redistribución", "sin reempaquetado", "sin productos competidores" o "sin plataformas de distribución no autorizadas", eso se parece más a marketing source-available que a la libertad que los usuarios esperan del open source. OxideTerm no añade cláusulas de no competencia ni contra la redistribución: los términos de GPL-3.0 son todos los términos.

Texto completo: Licencia Pública General de GNU v3.0


Agradecimientos

russh · portable-pty · Tauri · xterm.js · CodeMirror · Radix UI


271.000+ líneas de Rust y TypeScript — construido con ⚡ y ☕

Star History

Star History Chart