⚡ OxideTerm
KI-gestützter nativer Betriebsarbeitsbereich für Remote-Server — native App aus reinem Rust
SSH, Telnet, serielle Terminals, RDP/VNC, SFTP, Portweiterleitung und leichtes Editieren in einem nativen Arbeitsbereich.
GPU-gerendert. Kostenlos. Kein Konto nötig.
Kein Electron. Kein gebündeltes WebView. Keine Telemetrie. Kein Abo. BYOK zuerst. Reines Rust-SSH ohne OpenSSL/libssh2.
Open Source, lokal orientiert und GPU-gerendert mit GPUI.
English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Français | Deutsch | Español | Italiano | Português | Tiếng Việt
---
## Was OxideTerm ist
OxideTerm ist ein Open-Source-Arbeitsbereich für SSH und Remote-Betrieb. Terminal, Dateien, Portweiterleitungen, Host-Werkzeuge und Remote-Desktops bleiben in einem gemeinsamen Arbeitsbereich.
**Was Sie tun können:**
- SSH, Telnet, serielle Verbindungen, RDP/VNC, SFTP, Portweiterleitungen, lokale Shells und leichtes Editieren in einem Arbeitsbereich verwalten
- Remote-Arbeit mit Grace-Period-Wiederverbindung über kurze Netzwerkausfälle hinweg aufrechterhalten
- OxideSens aktive Sitzungen prüfen und freigegebene Arbeitsbereichsaktionen über Ihren eigenen KI-Anbieter ausführen lassen
Verbindungen und Betriebsdaten bleiben unter Ihrer Kontrolle. Für OxideSens verwenden Sie Ihren eigenen KI-Anbieter; ein Konto ist nicht erforderlich.
---
## Warum OxideTerm?
| Wenn Ihnen wichtig ist … | OxideTerm bietet Ihnen … |
|---|---|
| Ein Remote-Knoten, viele Werkzeuge | Terminal, SFTP, Portweiterleitung, RDP/VNC, trzsz, native IDE, Monitoring und OxideSens AI bleiben an denselben Arbeitsbereich gebunden |
| Eine Desktop-App ohne Electron oder gebündelte WebView | GPUI zeichnet die Oberfläche direkt auf einer GPU-Fläche, ohne Browser-Laufzeit auszuliefern |
| Local-first-Betriebsabläufe | SSH, Telnet, SFTP, Weiterleitung, RDP/VNC, lokale Shell, serielle Terminals und Konfiguration funktionieren ohne Anmeldung |
| BYOK-OxideSens-AI statt Plattformguthaben | OxideSens verwendet Ihren OpenAI-, Anthropic-, Gemini-, Ollama- oder OpenAI-kompatiblen Endpunkt mit MCP, RAG, anbieterabhängigen Denkstufen und genehmigten Arbeitsbereichsaktionen |
| Stabiles Wiederverbinden | Grace Period prüft die alte Verbindung 30 Sekunden lang, bevor sie ersetzt wird, damit TUI-Anwendungen kurze Netzunterbrechungen überstehen |
| Reines Rust-SSH und Schutz von Zugangsdaten | Der SSH-Stack nutzt `russh` + `ring` ohne OpenSSL/libssh2; gespeicherte Zugangsdaten liegen im Betriebssystem-Schlüsselbund und `.oxide`-Pakete verwenden ChaCha20-Poly1305 + Argon2id |
---
## Screenshots
Die folgenden Screenshots zeigen Terminal-, Datei-, Editor- und Weiterleitungsabläufe in OxideTerm.
SSH-Terminal + OxideSens AI
 |
SFTP-Dateimanager
 |
Integrierte IDE
 |
Intelligente Portweiterleitung
 |
---
## Für Remote-Betrieb entwickelt
OxideTerm hält Verbindungen, Dateien, Weiterleitungen, Host-Werkzeuge, Automatisierung und KI-Kontext in einem Rust-Arbeitsbereich. Werkzeuge teilen dieselbe Serveridentität und denselben Sitzungslebenszyklus.
| Aspekt | Ansatz mit gebündeltem Browser | OxideTerm |
|---|---|---|
| **Rendering** | Browser-Engine und Web-Layout | GPUI auf einer GPU-Fläche |
| **Terminal-Datenfluss** | WebSocket → JS-Ereignisschleife → xterm.js | Rust-Eingabe → `TerminalState`-Änderung → GPUI-Rendern |
| **Verbindungslebenszyklus** | Auf Frontend- und Backend-Schichten verteilt | Eine In-Process-Pipeline für Verbindung und Wiederverbindung |
| **KI-Kontext** | Über eine Anwendungsbrücke kopiert | Mit Nutzerfreigabe aus dem aktiven Arbeitsbereich aufgebaut |
| **Plugin-Laufzeit** | Browser-Skripting-Umgebung | Manifest-only-, begrenzte WASM- und vertrauensabhängige Prozesspfade |
| **CLI** | Erfordert eine laufende Desktop-App | Eigenständiges Programm mit direkter Crate-Verknüpfung |
| **Runtime-Grenze** | Desktop-Wrapper plus Browser-Laufzeit | Nativer Prozess ohne gebündelte Browser-Laufzeit |
---
## Funktionen
| Kategorie | Funktionen |
|---|---|
| **Terminal und Verbindungen** | Lokale Shells, SSH, Telnet, seriell, geteilte Bereiche, freier Eingabemodus, erweiterte Befehlsübertragung an mehrere Ziele, Multi-Hop-Routen und stabile Wiederverbindung |
| **Dateien und Remote-Bearbeitung** | SFTP, Übertragungswarteschlangen, Lesezeichen, sichere Schreibvorgänge, Projektbäume und Mehrfachbearbeitung |
| **Weiterleitung und Netzwerk** | Lokale, entfernte und dynamische SOCKS5-Weiterleitung, gespeicherte Regeln und Socket-Debugging |
| **Host-Betrieb und Remote-Desktop** | Überwachung, Prozesse, Dienste, Logs, Ports, Aufgaben, Datenträger, Pakete, Container, tmux, RDP und VNC |
| **OxideSens und Automatisierung** | Eigene KI-Anbieter, MCP, lokales RAG, Agent Skills, freigegebene Aktionen, verschlüsselte Cloud-Synchronisierung und CLI |
| **Erweiterungen und Personalisierung** | Manifest-only-, WASM- und Prozess-Plugins, eigene Tabs, Schnellbefehle, Themes, Hintergrundbilder, Tastenkürzel und 11 Sprachen |
---
*OxideSens folgt einer Nutzeranfrage und öffnet ein Terminal in OxideTerm.*
---
## Architektur
OxideTerm vereint Terminal, SSH, Telnet, RDP, VNC, SFTP, Forwarding, IDE, KI, Plugins und CLI in einer Rust-Architektur. Die technischen Details folgen unten.
Architektur, SSH-Internals, GPUI-Shell, Reconnect, KI, Plugins und mehr
### Architektur — Kern in einem Prozess, keine WebView-Bridge
```text
GPUI Render Loop
WorkspaceApp / Tab surfaces / GPUI views
│ in-process Arc<> / async
Domain Crates
NodeRouter → SshConnectionRegistry
TerminalState ← SSH PTY channel
SftpSession / ForwardingRuntime / IdeWorkspace
Ai/ACP Entities / CloudSync / Plugin Runtimes
```
Zwischen UI und SSH/Terminal-Backend gibt es keine Serialisierungsgrenze. Terminal-Bytes mutieren `TerminalState` direkt; GPUI liest den State und erzeugt GPU draw calls.
### Reines Rust-SSH — russh (ring)
- **Kein OpenSSL/libssh2 im SSH-Stack** — die SSH-Kryptografie wird von `ring` bereitgestellt
- Vollständiges SSH2: Key Exchange, Channels, SFTP-Subsystem, Portweiterleitung
- ChaCha20-Poly1305 / AES-GCM, Ed25519/RSA/ECDSA-Schlüssel
- SSH Agent unter Unix (`SSH_AUTH_SOCK`) und Windows (`\\.\pipe\openssh-ssh-agent`)
- Mehrstufiges ProxyJump mit unabhängiger Authentifizierung pro Hop
### Smart Reconnect mit Grace Period
1. SSH-keepalive timeout erkennen, ohne JavaScript timer throttling
2. Terminal-Panes, SFTP-Transfers, Forwards und IDE-Dateien snapshotten
3. Die alte Verbindung 30 Sekunden lang während der Grace Period prüfen, damit TUI-Apps Netzwerkwechsel überstehen können
4. Wenn die Wiederherstellung scheitert: neu verbinden, Forwards wiederherstellen, Transfers je nach Strategie fortsetzen oder neu versuchen und IDE-Dateien erneut öffnen
Pipeline: `queued → snapshot → grace-period → ssh-connect → await-terminal → restore-forwards → retry-or-resume-transfers → restore-ide → verify → done`
### SSH-Verbindungspool und Node-Routing
- Im Standardmodus kann eine physische SSH-Verbindung Terminal-Panes, SFTP, Port-Forwards und IDE-Arbeit bedienen; ein Terminal kann bei Bedarf eine eigene Verbindung verwenden
- Jede Verbindung durchläuft `connecting → active → idle → link_down → reconnecting`
- UI-Kommandos adressieren `nodeId`; `NodeRouter` löst die aktive `connectionId` atomar auf
- `NodeRuntimeStore` hält den Node-Laufzeitstatus und exportiert Topologie-Snapshots; Workspace-Helfer schreiben diese Snapshots in `session_tree.json`, während Live-Handles beim Start neu aufgebaut werden
- Jump-Host-Ausfälle propagieren `link_down` auf nachgelagerte Nodes
### OxideSens KI
OxideSens bleibt BYOK zuerst, mit Kontextaufbau direkt im Prozess:
- Anbieter: OpenAI, Anthropic, Gemini, Ollama oder jeder OpenAI-kompatible Endpunkt
- MCP: stdio- und SSE-Transports, Tool Discovery und Invocation
- RAG: BM25-Volltext, HNSW-Vektorindex, Reciprocal Rank Fusion, CJK-Bigram-Tokenizer
- Nachrichten an Anbieter durchlaufen eine Redigierung für Zugangsdatenmuster; Arbeitsbereichskontext und Aktionen bleiben unter Nutzerkontrolle
- API-Schlüssel liegen im Systemschlüsselbund und werden bewusst aus strukturierten Logs und Nachrichten des Desktop-Kerns ausgeschlossen
### GPUI Desktop-Shell
Die UI wird direkt mit GPUI gezeichnet, ohne DOM/CSS/JavaScript-Rendering-Pipeline:
- Workspace-Tab-Typen: lokale, SSH-, Telnet-, serielle, RDP-, VNC-, SFTP, IDE, Forwards, Settings, Plugins, Topology und mehr
- Binärer Pane-Tree mit ziehbaren Dividern, bis zu vier Panes pro Terminal-Tab
- Command Palette, globale Tastenkürzel und Sidebars bestehen aus GPUI-Primitives
- Immediate-mode Rendering reagiert auf Rust-State ohne Serialisierungs-Roundtrip
### Terminalzustand und Rendering
Terminal-Rendering wird zuerst als Rust-State modelliert und anschließend von GPUI gezeichnet:
- PTY-Ausgabe landet in `TerminalState`; Scrollback, Cursor, Auswahl, Marks und Suchzustand bleiben in Rust
- Die Rendering Policy kann zwischen Boost, Normal und Idle wechseln, ohne auf einen Browser Event Loop zu warten
- Sixel- und Kitty-Grafiken werden als terminal-eigene Assets verfolgt, nicht als DOM-Nodes oder Canvas-Overlays
- Split Panes teilen dasselbe Arbeitsbereichsstatus-Modell, sodass Tab-Restore und Reconnect die Terminal-Topologie gemeinsam snapshotten können
### SFTP- und IDE-Workspace
Remote-Dateien sind Teil desselben Node-Workspace und keine getrennte Nebenfunktion:
- SFTP-Sessions werden über `NodeRouter` mit einer Verbindungsgeneration aufgelöst; Reconnect kann eine gültige Sitzung neu erwerben, aber eine Operation der alten Generation wird nie still durch eine neue Verbindung ersetzt
- Transfer Queues verfolgen Richtung, Fortschritt, Retry-Zustand und Speed Limits unabhängig von den sichtbaren Datei-Panes
- IDE-Tabs halten Dirty Buffers, Remote-Pfade, Conflict State und Restore-Metadaten zusammen
- Remote Writes nutzen staged/atomic behavior, wo das Backend es unterstützt, damit normale Edit-Flows keine Partial Writes sehen
### Plugins, CLI und Diagnosen
Erweiterungen und Support-Flächen folgen klaren Rust-eigenen Grenzen:
- Plugins unterstützen Manifest-only-, WASM- und normale Prozesspfade. WASM nutzt die integrierte Wasmtime/WASI-Laufzeit; Prozess-Plugins sind lokale Prozesse ohne Betriebssystem-Sandbox.
- Die CLI linkt direkt gegen Domain Crates für doctor, settings, connections, forwards, portable bundles, backups und reports
- Diagnosen bevorzugen Zähler, Pfade, Feature-Flags und redigierte Hinweise statt roher payloads mit Geheimnisse
- Mutierende CLI-Flows nutzen dry-run plans, `--yes` guards und rollback backups, wo anwendbar
### Portweiterleitung — Lock-Free I/O
- Local `-L`, Remote `-R`, Dynamic SOCKS5 `-D`
- Ein einzelner `ssh_io`-Task besitzt jeden SSH Channel und vermeidet `Arc>`
- Reconnect Auto-Restore, Death Reporting und Idle Timeout
### trzsz — In-Band-Dateitransfer
trzsz nutzt weiterhin den Terminal-Stream, ohne zusätzlichen Port oder Remote-Agent:
- Upload/download über den bestehenden Terminal-Stream
- Funktioniert durch ProxyJump-Ketten
- Native Dateiauswahl vermeidet Browser-Speichergrenzen
- Bidirektional, Verzeichnis-Support, konfigurierbare Limits
### `.oxide` verschlüsselter Export
- **ChaCha20-Poly1305 AEAD** authenticated encryption
- **Argon2id KDF**: 256 MB memory cost, 4 iterations, erhöht die Kosten für GPU-Bruteforce
- Enthält connections, forwards, settings, quick commands, plugin settings und portable secrets
---
## Aus dem Quellcode starten
**Voraussetzungen:** Rust-Toolchain (Edition 2024) und eine Desktop-Umgebung, die GPUI ausführen kann.
```sh
cargo run
OXIDETERM_RENDER_PROFILE=compatibility cargo run
./scripts/build/build-cli.sh
./scripts/build/build-agent.sh
```
## CLI
Die Headless-CLI `oxideterm` funktioniert ohne gestartete App und eignet sich für Automatisierung, CI und Diagnosen.
```sh
cargo run -p oxideterm-cli -- doctor --strict
cargo run -p oxideterm-cli -- settings validate --strict --json
cargo run -p oxideterm-cli -- connections search prod
cargo run -p oxideterm-cli -- forwards list --format json
cargo run -p oxideterm-cli -- cloud-sync push --dry-run --json
cargo run -p oxideterm-cli -- oxide export ./profile.oxide --connection prod --password-stdin
cargo run -p oxideterm-cli -- report --bundle ./oxideterm-report.zip
cargo run -p oxideterm-cli -- completion install zsh --force
```
## Technik
| Ebene | Technologie | Hinweise |
|---|---|---|
| Benutzeroberfläche | GPUI (Zed) | GPU-beschleunigter Immediate Mode, vollständig in Rust |
| Laufzeit | Tokio + DashMap | Asynchrone Laufzeit und nebenläufige Maps |
| SSH | russh (`ring`) | Kein OpenSSL/libssh2 im SSH-Stack; SSH Agent |
| Terminal | portable-pty + alacritty_terminal | Lokale PTYs, Terminalemulation, Sixel- und Kitty-Grafik |
| Plugins | Wasmtime/WASI und Prozesspfade | Manifest-only, kontrollierte WASM-Host-Aufrufe sowie ausdrücklich vertrauensbedürftige lokale Prozesse |
| KI und Suche | SSE + BM25 + HNSW | Anbieter-Streaming, CJK-Bigramme und RRF-Fusion |
| Editor | tree-sitter (Syntax), eigener Puffer | Mehrsprachig, SFTP-gestützt |
| Verschlüsselung | ChaCha20-Poly1305 + Argon2id | AEAD + speicherintensive KDF (256 MB) |
| i18n | oxideterm-i18n | Eingebauter Loader, 11 ausgelieferte Sprachen |
## Sicherheit
| Thema | Umsetzung |
|---|---|
| Gespeicherte Zugangsdaten | macOS Keychain / Windows Credential Manager / libsecret |
| Geheimnisse im Speicher | Geheimnistragende Typen und temporäre Puffer verwenden an unterstützten Besitzgrenzen `zeroize` / `Zeroizing` |
| Diagnosen | Support-Ausgaben bevorzugen strukturierte Metadaten und redigierte Hinweise statt geheimnistragender Nutzdaten |
| KI-Kontext | Nachrichten an Anbieter durchlaufen eine Redigierung für Zugangsdatenmuster; Workspace-Kontext und Aktionen bleiben unter Nutzerkontrolle |
| `.oxide` | ChaCha20-Poly1305 + Argon2id |
| CLI-Schreibzugriffe | dry-run plans, `--yes` guards, rollback backups |
| Host-Schlüssel | TOFU mit `~/.ssh/known_hosts`, unerwartete Änderungen werden abgelehnt |
| Plugins | Manifest-only, kontrollierte WASM-Host-API und vertrauensabhängige lokale Prozesse |
## Hinweis zur rechtmäßigen Nutzung
OxideTerm ist unter GPL-3.0-only ohne zusätzliche Lizenzbeschränkungen lizenziert. Greifen Sie bei der Nutzung nur auf Systeme, Netzwerke und Geräte zu, die Ihnen gehören oder für die Sie eine ausdrückliche Zugriffsberechtigung besitzen, und beachten Sie das geltende Recht. Verwenden Sie OxideTerm nicht für unbefugte Zugriffe, Dienststörungen oder zur Umgehung von Zugriffskontrollen.
## Beiträge
Beiträge zu Code, Dokumentation, Übersetzungen, Plugins, Tests und Fehlerberichten sind willkommen. Größere Änderungen oder klar begrenzte Korrekturen sollten zuerst in einem Issue abgestimmt werden.
```sh
cargo run -p oxideterm-cli -- report --bundle ./oxideterm-report.zip
```
---
## Support und Wartung
Reproduzierbare Bug Reports und Regressionen mit redigierten Diagnosen werden priorisiert. Feature Requests werden nach Umfang, Sicherheit und Ausrichtung auf OxideTerms Remote-Server-Workspace-Richtung bewertet.
Wenn OxideTerm Ihrem Workflow hilft, machen GitHub Star, Reproduktion, Übersetzungskorrektur oder Plugin das Projekt leichter weiterzuführen.
---
## Lizenz
**GPL-3.0-only**. Ausführliche Hinweise zu Drittanbietern stehen in [`THIRD_PARTY_NOTICES.md`](../../THIRD_PARTY_NOTICES.md); zusätzliche Hinweise enthält [`NOTICE`](../../NOTICE).
## Danksagung
Danke an `russh`, `GPUI`, `alacritty_terminal`, `portable-pty`, `wasmtime` und `tree-sitter`.