App completa (frontend + backend Rust con hot reload)

June 2, 2026 · View on GitHub

OxideTerm

⚡ OxideTerm

Un workspace SSH local-first per chi vive nel terminale.
Connettiti una volta a una macchina remota e lavora con shell, file, porte, trasferimenti, editor leggero e BYOK AI da un unico posto.
App Tauri nativa · SSH puro in Rust · nessun account per i workflow SSH principali
Zero Electron. Zero OpenSSL. Zero telemetria. Zero abbonamento. BYOK-first. SSH puro in Rust.

Versione Piattaforma Licenza Rust Tauri Download totali

Scarica ultima versione Scarica ultima beta

🌐 oxideterm.app — Documentation & website

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

OxideTerm AI opening a terminal demo

Guarda OxideSens seguire una richiesta dell’utente e aprire un terminale dentro OxideTerm.


Cosa puoi fare

  • Gestire affiancati terminali SSH, SFTP, port forwarding, trasferimenti nel terminale e shell locali
  • Continuare a lavorare durante piccoli problemi di rete con Grace Period reconnect
  • Usare il tuo provider AI per ispezionare sessioni live ed eseguire azioni approvate

Perché OxideTerm?

Se ti interessa...OxideTerm offre...
Un nodo remoto, molti strumentiTerminale, SFTP, port forwarding, trzsz, mini IDE, monitoraggio e contesto AI restano legati allo stesso workspace SSH
Workflow SSH local-firstSSH, SFTP, forwarding, shell locale e configurazione funzionano senza registrazione; la sincronizzazione cloud è opzionale via plugin ufficiale
BYOK AI invece di crediti piattaformaOxideSens usa il tuo endpoint OpenAI/Ollama/DeepSeek/OpenAI-compatible con supporto MCP e RAG
Riconnessione stabileGrace Period prova la vecchia connessione per 30 s prima di sostituirla, così vim/htop/yazi possono sopravvivere a brevi interruzioni
App nativa in Rust puroApp nativa Tauri 2.0, russh 0.59 compilato con ring, niente Electron, niente OpenSSL/libssh2
Sicurezza credenzialiPassword e chiavi API restano nel portachiavi OS, i metadati sono sigillati localmente e .oxide usa ChaCha20-Poly1305 + Argon2id

Che cos’è / cosa non è

OxideTerm si concentra sui workflow SSH local-first. È pensato per chi vuole tenere terminale, file, porte, trasferimenti, editing leggero e contesto AI attorno alle proprie macchine e ai propri nodi remoti.

Non vuole essere una piattaforma cloud Agent né un progetto centrato solo sui benchmark di rendering del terminale. La direzione è più stretta: far sembrare il lavoro remoto un workspace locale, senza account OxideTerm.


Screenshot

Terminale SSH + OxideSens AI

Terminale SSH con barra laterale OxideSens AI
Gestore file SFTP

Gestore file SFTP a doppio pannello con coda di trasferimento
IDE integrato (CodeMirror 6)

Modalità IDE integrata con editor CodeMirror 6
Port forwarding intelligente

Port forwarding intelligente con rilevamento automatico

Download

Scarica l'ultima versione da GitHub Releases.


Panoramica delle funzionalità

CategoriaFunzionalità
TerminalePTY locale (zsh/bash/fish/pwsh/WSL2), SSH remoto, terminali seriali locali, pannelli divisi, broadcast input, registrazione/riproduzione sessioni (asciicast v2), rendering WebGL, 30+ temi + editor personalizzato, palette comandi (⌘K), modalità zen, trasferimento file trzsz integrato
SSH e autenticazionePool di connessioni e multiplexing, ProxyJump (salti illimitati) con grafo topologico, riconnessione automatica con periodo di grazia, Inoltro agente. Auth: password, chiave SSH (RSA/Ed25519/ECDSA), SSH Agent, certificati, 2FA interattivo da tastiera, Known Hosts TOFU
SFTPBrowser a doppio pannello, drag-and-drop, anteprima intelligente (immagini/video/audio/codice/PDF/hex/font), coda di trasferimento con progresso ed ETA, segnalibri, estrazione archivi
Modalità IDECodeMirror 6 con 30+ linguaggi, albero file + stato Git, multi-tab, risoluzione conflitti, terminale integrato. Agente remoto opzionale per Linux (9 architetture aggiuntive)
Port forwardingLocale (-L), remoto (-R), SOCKS5 dinamico (-D), I/O message-passing senza lock, ripristino automatico alla riconnessione, report di terminazione, timeout di inattività
IA (OxideSens)Assistente orientato ai target per connessioni salvate, sessioni SSH live, buffer del terminale, percorsi SFTP, impostazioni e voci della knowledge base; può diagnosticare output remoto, eseguire comandi approvati, ispezionare file e spiegare guasti senza un account OxideTerm
PluginCaricamento ESM runtime, 18 namespace API, 24 componenti UI Kit, API congelata + ACL Proxy, circuit breaker, disattivazione automatica in caso di errori
CLICompanion oxt: JSON-RPC 2.0 tramite Unix Socket / Named Pipe, status/health/list/forward/config/connect/focus/attach/SFTP/import/AI, output leggibile + JSON
SicurezzaExport .oxide crittografato (ChaCha20-Poly1305 + Argon2id 256 MB), configurazione locale cifrata a riposo, portachiavi OS, Touch ID (macOS), keystore crittografato portatile, TOFU chiave host, pulizia memoria zeroize
i18n11 lingue: EN, 简体中文, 繁體中文, 日本語, 한국어, FR, DE, ES, IT, PT-BR, VI

Sotto il cofano

OxideTerm mantiene una superficie local-first, ma internamente è costruito per workflow SSH intensivi. I dettagli completi sono conservati sotto.

Architettura, internals SSH, riconnessione, AI, forwarding, plugin e altro

Architettura — Comunicazione a doppio piano

OxideTerm separa i dati del terminale dai comandi di controllo in due piani indipendenti:

┌─────────────────────────────────────┐
│        Frontend (React 19)          │
│  xterm.js 6 (WebGL) + 19 stores     │
└──────────┬──────────────┬───────────┘
           │ Tauri IPC    │ WebSocket (binario)
           │ (JSON)       │ porta per sessione
┌──────────▼──────────────▼───────────┐
│         Backend (Rust)              │
│  NodeRouter → SshConnectionRegistry │
│  Wire Protocol v1                   │
│  [Type:1][Length:4][Payload:n]      │
└─────────────────────────────────────┘
  • Piano dati (WebSocket): ogni sessione SSH ottiene la propria porta WebSocket. I byte del terminale fluiscono come frame binari con header Type-Length-Payload — nessuna serializzazione JSON, nessuna codifica Base64, zero overhead nel percorso critico.
  • Piano di controllo (Tauri IPC): gestione connessioni, operazioni SFTP, inoltri, configurazione — JSON strutturato, ma fuori dal percorso critico.
  • Indirizzamento per nodo: il frontend non tocca mai sessionIdconnectionId. Tutto viene indirizzato tramite nodeId, risolto atomicamente lato server dal NodeRouter. La riconnessione SSH modifica il connectionId sottostante — ma SFTP, IDE e inoltri non sono minimamente coinvolti.

🔩 SSH puro in Rust — russh 0.59

L'intero stack SSH è russh 0.59 compilato con il backend crittografico ring:

  • Zero dipendenze C/OpenSSL — l'intero stack crittografico è in Rust. Niente più debug «quale versione di OpenSSL?».
  • Protocollo SSH2 completo: scambio chiavi, canali, sottosistema SFTP, port forwarding
  • Suite crittografiche ChaCha20-Poly1305 e AES-GCM, chiavi Ed25519/RSA/ECDSA
  • AgentSigner personalizzato: avvolge il SSH Agent di sistema e implementa il trait Signer di russh, risolvendo problemi di bound Send RPITIT clonando &AgentIdentity in un valore posseduto prima di attraversare .await
pub struct AgentSigner { /* wraps system SSH Agent */ }
impl Signer for AgentSigner { /* challenge-response via Agent IPC */ }
  • Supporto piattaforma: Unix (SSH_AUTH_SOCK), Windows (\\.\pipe\openssh-ssh-agent)
  • Catene proxy: ogni salto utilizza l'autenticazione Agent in modo indipendente
  • Riconnessione: AuthMethod::Agent riprodotto automaticamente

🔄 Riconnessione intelligente con periodo di grazia

La maggior parte dei client SSH distrugge tutto alla disconnessione e riparte da zero. L'orchestratore di riconnessione di OxideTerm adotta un approccio fondamentalmente diverso:

  1. Rilevamento del timeout heartbeat WebSocket (300 s, calibrato per macOS App Nap e throttling dei timer JS)
  2. Snapshot dello stato completo: pannelli terminale, trasferimenti SFTP in corso, port forward attivi, file IDE aperti
  3. Sondaggio intelligente: eventi visibilitychange + online attivano keepalive SSH proattivo (~2 s di rilevamento contro 15–30 s di timeout passivo)
  4. Periodo di grazia (30 s): sonda la vecchia connessione SSH via keepalive — se si ripristina (es.: cambio di access point WiFi), le tue app TUI (vim, htop, yazi) sopravvivono completamente intatte
  5. Se il recupero fallisce → nuova connessione SSH → ripristino automatico degli inoltri → ripresa dei trasferimenti SFTP → riapertura dei file IDE

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

Tutta la logica passa attraverso un ReconnectOrchestratorStore dedicato — zero codice di riconnessione sparso in hook o componenti.

🛡️ Pool di connessioni SSH

SshConnectionRegistry con conteggio dei riferimenti supportato da DashMap per accesso concorrente senza lock:

  • Una connessione, molti consumatori: terminale, SFTP, port forward e IDE condividono una singola connessione SSH fisica — nessun handshake TCP ridondante
  • Macchina a stati per connessione: connecting → active → idle → link_down → reconnecting
  • Gestione del ciclo di vita: timeout di inattività configurabile (5 min / 15 min / 30 min / 1 h / mai), intervallo keepalive di 15 s, rilevamento guasti heartbeat
  • Heartbeat WsBridge: intervallo di 30 s, timeout di 5 min — tollera macOS App Nap e throttling JS del browser
  • Propagazione a cascata: guasto dell'host di salto → tutti i nodi a valle automaticamente marcati come link_down con sincronizzazione dello stato
  • Disconnessione per inattività: emette connection_status_changed al frontend (non solo node:state interno), prevenendo desincronizzazione dell'interfaccia

🤖 OxideSens AI

Assistente IA incentrato sulla privacy con due modalità di interazione:

  • Pannello inline (⌘I): comandi terminale rapidi, output iniettato tramite bracketed paste
  • Chat laterale: conversazioni persistenti con cronologia completa
  • Contesto workspace orientato ai target: vede connessioni salvate, sessioni SSH live, buffer del terminale, percorsi SFTP, impostazioni e voci della knowledge base come target del workspace
  • Azioni approvate: può diagnosticare output remoto, eseguire comandi approvati, ispezionare file e spiegare guasti senza richiedere un account OxideTerm
  • Supporto MCP: connessione a server Model Context Protocol esterni (stdio e SSE) per integrazione di strumenti di terze parti
  • Knowledge base RAG (v0.20): importa documenti Markdown/TXT in collezioni con scope (globale o per connessione). La ricerca ibrida fonde indice di keyword BM25 + similarità coseno vettoriale tramite Reciprocal Rank Fusion. Chunking consapevole del Markdown che preserva la gerarchia dei titoli. Tokenizer a bigrammi CJK per cinese/giapponese/coreano.
  • Provider: OpenAI, Ollama, DeepSeek, OneAPI, o qualsiasi endpoint /v1/chat/completions
  • Sicurezza: chiavi API conservate nel portachiavi OS; su macOS, la lettura delle chiavi è protetta da Touch ID tramite LAContext — nessun entitlement o firma del codice richiesti, in cache dopo la prima autenticazione per sessione

Port Forwarding — I/O senza lock

Inoltro locale (-L), remoto (-R) e SOCKS5 dinamico (-D) completo:

  • Architettura message-passing: il canale SSH è posseduto da un singolo task ssh_io — nessun Arc<Mutex<Channel>>, eliminando completamente la contesa mutex
  • Report di terminazione: i task di inoltro segnalano attivamente il motivo di uscita (disconnessione SSH, chiusura porta remota, timeout) per diagnostica chiara
  • Ripristino automatico: gli inoltri Suspended riprendono automaticamente alla riconnessione senza intervento dell'utente
  • Timeout di inattività: FORWARD_IDLE_TIMEOUT (300 s) previene l'accumulo di connessioni zombie

📦 trzsz — Trasferimento File Integrato

Carica e scarica file direttamente attraverso la sessione SSH — senza connessione SFTP:

  • Protocollo integrato: i file viaggiano come frame Base64 all'interno del flusso terminale esistente — funziona in modo trasparente attraverso catene ProxyJump e tmux senza porte o agenti aggiuntivi
  • Bidirezionale: il server esegue tsz <file> per inviare file al client; trz avvia il caricamento lato client; supporto drag-and-drop
  • Supporto directory: trasferimenti ricorsivi tramite trz -d / tsz -d
  • Limiti di trasferimento: limiti configurabili per sessione per dimensione del blocco, numero di file e byte totali
  • I/O nativo Tauri: lettura e scrittura di file tramite dialoghi nativi Tauri e Rust I/O — nessun vincolo di memoria del browser
  • Notifiche in tempo reale: notifiche Toast per avvio, completamento, annullamento ed errori — incluso un suggerimento quando viene rilevato trzsz ma la funzione è disabilitata
  • Attivare in Impostazioni → Terminale → Trasferimento Integrato

🔌 Sistema di plugin runtime

Caricamento ESM dinamico con superficie API congelata e rinforzata in sicurezza:

  • API PluginContext: 18 namespace — terminal, ui, commands, settings, lifecycle, events, storage, system
  • 24 componenti UI Kit: componenti React precostruiti (pulsanti, campi di input, dialoghi, tabelle…) iniettati nelle sandbox dei plugin tramite window.__OXIDE__
  • Membrana di sicurezza: Object.freeze su tutti gli oggetti di contesto, ACL basata su Proxy, whitelist IPC, circuit breaker con disattivazione automatica dopo errori ripetuti
  • Moduli condivisi: React, ReactDOM, zustand, lucide-react esposti per l'uso dei plugin senza duplicazione dei bundle

⚡ Rendering adattivo

Scheduler di rendering a tre livelli che sostituisce il batching fisso di requestAnimationFrame:

LivelloTriggerFrequenzaBeneficio
BoostDati frame ≥ 4 KB120 Hz+ (ProMotion nativo)Elimina il lag di scorrimento su cat largefile.log
NormaleDigitazione standard60 Hz (RAF)Base fluida
Inattivo3 s senza I/O / tab nascosto1–15 Hz (decadimento esponenziale)Carico GPU quasi nullo, risparmio batteria

Le transizioni sono completamente automatiche — guidate dal volume dei dati, dall'input utente e dall'API Page Visibility. I tab in background continuano a svuotare i dati tramite timer di inattività senza svegliare RAF.

🔐 Export crittografato .oxide

Backup di connessione portatile e a prova di manomissione:

  • Crittografia autenticata ChaCha20-Poly1305 AEAD
  • KDF Argon2id: costo memoria di 256 MB, 4 iterazioni — resistente al brute-force GPU
  • Checksum di integrità SHA-256
  • Embedding opzionale delle chiavi: chiavi private codificate in base64 nel payload crittografato
  • Analisi preliminare: breakdown dei tipi di autenticazione, rilevamento chiavi mancanti prima dell'export

📡 ProxyJump — Multi-hop con consapevolezza topologica

  • Profondità della catena illimitata: Client → Salto A → Salto B → … → Destinazione
  • Parsing automatico di ~/.ssh/config, costruzione del grafo topologico, pathfinding Dijkstra per la rotta ottimale
  • Nodi di salto riutilizzabili come sessioni indipendenti
  • Propagazione di guasti a cascata: host di salto down → tutti i nodi a valle automaticamente marcati come link_down

⚙️ Terminale locale — PTY thread-safe

Shell locale multipiattaforma tramite portable-pty 0.8, protetto dal feature gate local-terminal:

  • MasterPty avvolto in std::sync::Mutex — thread I/O dedicati mantengono le letture PTY bloccanti fuori dall'event loop di Tokio
  • Rilevamento automatico della shell: zsh, bash, fish, pwsh, Git Bash, WSL2
  • cargo build --no-default-features rimuove PTY per build mobile/leggeri

🪟 Ottimizzazione Windows

  • ConPTY nativo: invoca direttamente l'API Windows Pseudo Console — supporto completo TrueColor e ANSI, nessun WinPTY legacy
  • Scanner shell: rileva automaticamente PowerShell 7, Git Bash, WSL2, CMD tramite Registro e PATH

E altro ancora

  • Modalità IDE: CodeMirror 6 via SFTP, 24 linguaggi, albero file con stato Git, multi-scheda, risoluzione conflitti — agente remoto opzionale (~1 MB) per funzionalità avanzate su Linux
  • Profiler risorse: CPU/memoria/rete in tempo reale tramite canale SSH persistente che legge /proc/stat, calcolo basato su delta, degradazione automatica a solo RTT su sistemi non-Linux
  • Motore temi personalizzato: 30+ temi integrati, editor visuale con anteprima live, 20 campi xterm.js + 24 variabili colore UI, derivazione automatica dei colori UI dalla palette del terminale
  • Registrazione sessioni: formato asciicast v2, registrazione e riproduzione complete
  • Broadcast input: digita una volta, invia a tutti i pannelli divisi — operazioni batch sui server
  • Galleria sfondi: immagini di sfondo per tab, 16 tipi di tab, controllo opacità/sfocatura/adattamento
  • Companion CLI (oxt): binario di ~1 MB, JSON-RPC 2.0 tramite Unix Socket / Named Pipe, status/health/list/forward/config/connect/focus/attach/SFTP/import/AI con output leggibile o --json
  • WSL Graphics ⚠️ sperimentale: visualizzatore VNC integrato — 9 ambienti desktop + modalità singola applicazione, rilevamento WSLg, Xtigervnc + noVNC

Plugin ufficiali

PluginDescrizioneRepository
Cloud SyncSincronizzazione self-hosted crittografata — carica e importa snapshot .oxide tramite WebDAV, HTTP JSON, Dropbox, Git o S3oxideterm.cloud-sync
Telnet ClientClient Telnet nativo per router, switch e dispositivi legacy — nessun binario esterno richiestooxideterm.telnet
📸 11 lingue in azione

English

简体中文

繁體中文

日本語

한국어

Français

Deutsch

Español

Italiano

Português

Tiếng Việt

Requisiti runtime

OxideTerm usa il runtime WebView nativo fornito dal sistema operativo. La maggior parte degli utenti lo ha già installato; installalo manualmente solo se l'app non si avvia o se l'ambiente è air-gapped.

PiattaformaDipendenza runtime
WindowsWebView2 Runtime — preinstallato su Windows 10 (1803+) e Windows 11. Per ambienti air-gap / intranet, utilizzare l'installer standalone Evergreen (offline, ~170 MB) o distribuire il runtime a versione fissa tramite criteri di gruppo.
macOSNessuna (utilizza WebKit nativo)
Linuxlibwebkit2gtk-4.1 (generalmente preinstallato sui desktop moderni)

Modalità portatile

OxideTerm supporta una modalità portatile completamente autonoma — tutti i dati (connessioni, segreti, impostazioni) vengono memorizzati accanto al binario dell’applicazione, ideale per chiavette USB o ambienti offline.

Attivazione

Opzione A — File marcatore (il più semplice): create un file vuoto chiamato portable (senza estensione) accanto all’applicazione.

PiattaformaDove posizionare il file portable
macOSAccanto a OxideTerm.app (stessa directory)
WindowsAccanto a OxideTerm.exe
Linux (AppImage)Accanto al file .AppImage
/my-usb/
├── OxideTerm.app   (or .exe / .AppImage)
├── portable        ← file vuoto creato da voi
└── data/           ← creato automaticamente al primo avvio

Opzione B — portable.json (directory dati personalizzata): posizionate un file portable.json nella stessa posizione:

{
  "enabled": true,
  "dataDir": "my-data"
}
  • enabled è true per default se omesso
  • dataDir deve essere un percorso relativo (.. non consentito); default è data

Come funziona

  1. Primo avvio — La schermata di bootstrap vi chiederà di creare una password portatile. Questa password cifra il keystore locale (ChaCha20-Poly1305 + Argon2id) e protegge tutti i segreti salvati.
  2. Avvii successivi — Inserite la password per sbloccare. Su macOS con Touch ID, potete attivare lo sblocco biometrico in Settings → General → Portable Runtime.
  3. Blocco istanza — Solo un’istanza di OxideTerm alla volta può utilizzare la directory portatile (data/.portable.lock).
  4. Gestione — Modificate la password portatile o attivate lo sblocco biometrico in Settings → General → Portable Runtime.
  5. Portabilità — Copiate l’intera cartella (applicazione + marcatore portable + data/) su un altro computer. La password viaggia con il keystore.

Tip

Gli aggiornamenti automatici sono disabilitati in modalità portatile. Per aggiornare, sostituite il binario dell’applicazione mantenendo la directory data/.


Avvio rapido

Prerequisiti

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

Sviluppo

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

# Compilare il CLI companion (necessario per le funzionalità CLI)
pnpm cli:build

# App completa (frontend + backend Rust con hot reload)
pnpm run tauri dev

# Solo frontend (Vite sulla porta 1420)
pnpm dev

# Build di produzione
pnpm run tauri build

Stack tecnologico

LivelloTecnologiaDettagli
FrameworkTauri 2.0Binario nativo, 25–40 MB
RuntimeTokio + DashMap 6Completamente asincrono, mappe concorrenti senza lock
SSHrussh 0.59 (ring)Puro Rust, zero dipendenze C, SSH Agent
PTY localeportable-pty 0.8Feature-gated, ConPTY su Windows
FrontendReact 19.1 + TypeScript 5.8Vite 7, Tailwind CSS 4
StatoZustand 519 store specializzati
Terminalexterm.js 6 + WebGLAccelerato da GPU, 60 fps+
EditorCodeMirror 630+ modalità linguaggio
CrittografiaChaCha20-Poly1305 + Argon2idAEAD + KDF ad alto consumo di memoria (256 MB)
Storageredb 2.1Store KV embedded
i18ni18next 2511 lingue × 22 namespace
PluginESM RuntimePluginContext congelato + 24 UI Kit
CLIJSON-RPC 2.0Unix Socket / Named Pipe

Dimensioni del progetto

Misurato con tokei, escludendo dipendenze e artefatti di build.

MetricaDimensione attuale
Codice totale286K+
TypeScript / TSX130K+
Rust100K+
Codice dei test frontend24K+
File di test frontend128
File sorgente (src + src-tauri/src)664

Sicurezza

AspettoImplementazione
PasswordPortachiavi OS (macOS Keychain / Windows Credential Manager / libsecret)
Keystore portatileVault crittografato con ChaCha20-Poly1305 accanto all’applicazione, binding biometrico opzionale tramite portachiavi OS
Chiavi API IAPortachiavi OS + autenticazione biometrica Touch ID su macOS
Export.oxide: ChaCha20-Poly1305 + Argon2id (256 MB di memoria, 4 iterazioni)
MemoriaSicurezza della memoria di Rust + zeroize per la pulizia dei dati sensibili
Chiavi hostTOFU con ~/.ssh/known_hosts, rifiuta le modifiche (prevenzione MITM)
PluginObject.freeze + ACL Proxy, circuit breaker, whitelist IPC
WebSocketToken monouso con limiti di tempo

Roadmap

  • Forwarding dell'agente SSH
  • Supporto completo ProxyCommand
  • Registrazione audit
  • Miglioramenti Agent
  • Ricerca sessioni e cambio rapido
  • Migrazione nativa in Rust via GPUI — [in corso]

Supporto e manutenzione

OxideTerm è mantenuto da un singolo sviluppatore con il massimo impegno possibile. Le segnalazioni di bug e le regressioni riproducibili hanno la priorità; le richieste di funzionalità sono benvenute, ma non sempre verranno implementate.

Se OxideTerm aiuta il tuo workflow, una stella su GitHub, una riproduzione di issue, una correzione di traduzione, un plugin o una pull request aiutano il progetto ad andare avanti.


Licenza

GPL-3.0 — questo software è software libero rilasciato sotto la Licenza Pubblica Generale GNU v3.0.

È possibile utilizzare, modificare e distribuire liberamente questo software secondo i termini della GPL-3.0. Qualsiasi opera derivata deve essere distribuita sotto la stessa licenza.

OxideTerm è passato da PolyForm Noncommercial 1.0.0 a GPL-3.0 a partire dalla v1.0.0. Il cambio è stato intenzionale: niente cosplay "open source" con trappole non commerciali o clausole anti-concorrenza, ma libertà copyleft chiara per utenti, fork, redistributori e operatori commerciali.

Codice pubblico non significa automaticamente open source. Se un progetto mostra una licenza open source nota ma aggiunge clausole come "niente redistribuzione", "niente repackaging", "niente prodotti concorrenti" o "niente piattaforme di distribuzione non autorizzate", è più marketing source-available che la libertà che gli utenti si aspettano dall'open source. OxideTerm non aggiunge clausole di non concorrenza o anti-redistribuzione: i termini GPL-3.0 sono tutti i termini.

Testo completo: Licenza Pubblica Generale GNU v3.0


Ringraziamenti

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


271.000+ righe di Rust e TypeScript — costruito con ⚡ e ☕

Star History

Star History Chart