Skip to content

FAQ

OxideTerm is an AI-native workspace for remote servers built in Rust with GPUI. It combines SSH terminal, local shell, SFTP, IDE mode, port forwarding, remote desktop, trzsz transfers, OxideSens AI, plugins, themes, and localized UI in one GPU-rendered native application.

OxideTerm is licensed under GPL-3.0 (GNU General Public License v3.0):

  • Personal, educational, research, and commercial use is allowed.
  • Distributed derivative works must use the same GPL-3.0 license.
  • Source code must be made available when distributing modified versions.

OxideTerm previously used PolyForm Noncommercial and moved to GPL-3.0 to avoid source-available restrictions and noncommercial ambiguity. If you are unsure about a specific distribution scenario, open an issue.

OxideTerm publishes packages for macOS, Windows, and Linux on both x64 and arm64. A GPU-capable desktop and working graphics driver are required.

How is OxideTerm different from browser-based desktop terminals?

Section titled “How is OxideTerm different from browser-based desktop terminals?”

OxideTerm uses GPUI to draw its interface directly on a GPU surface. The UI, terminal state, SSH services, and workspace logic are Rust code in the same native process.

ComparisonBrowser-based desktop appOxideTerm native
UI runtimeBundled or system browser engineGPUI GPU surface
Desktop packageOften includes a browser runtimeApproximately 50–70 MB, depending on target
Terminal pathBytes cross a script/UI boundaryRust input mutates TerminalState directly
SSH implementationVariesPure Rust russh with ring
Headless managementOften depends on a running appStandalone oxideterm CLI links to domain crates

Passwords, private-key passphrases, and API keys are stored in the operating system keychain: Keychain Access on macOS, Windows Credential Manager on Windows, and a Secret Service provider on Linux. They are not stored as plaintext configuration values.

Saved connection metadata is protected separately. The local connection document is encrypted with a key held by the keychain layer.

Can I import connections from other SSH clients?

Section titled “Can I import connections from other SSH clients?”

Yes. OxideTerm can import its encrypted .oxide format and parse OpenSSH configuration, including hosts, jump hosts, key paths, and related settings. You can also create connections manually in the app or through oxideterm connections.

Yes. OxideTerm supports multi-hop ProxyJump routes. Each hop can use its own supported authentication method, and the topology view shows the route and downstream state. Keyboard-interactive authentication is available for direct connections; explicit keyboard-interactive authentication across proxy chains remains limited.

  • Ed25519
  • ECDSA P-256 and P-384
  • RSA with a 2048-bit minimum
  • SSH certificates
  • Passphrase-protected private keys

Yes. OxideTerm uses SSH_AUTH_SOCK on macOS/Linux and the OpenSSH agent named pipe on Windows. Agent authentication can be replayed after reconnect, and Agent Forwarding can be enabled per connection.

OxideTerm’s Grace Period Reconnect pipeline works in Rust:

  1. A keepalive task detects a degraded or lost SSH transport.
  2. OxideTerm probes the old connection for 30 seconds. If the stream recovers, running TUI applications can continue on the original session.
  3. If recovery fails, OxideTerm opens a new connection and restores dependent forwards, transfers, and IDE state where possible.

Can multiple features share one SSH connection?

Section titled “Can multiple features share one SSH connection?”

Yes. Terminal, SFTP, port forwarding, and IDE consumers resolve through the node router and connection registry, allowing them to share one physical connection.

Yes. OxideSens is BYOK. Configure OpenAI, Anthropic, Gemini, Ollama, or an OpenAI-compatible endpoint. Provider secrets stay in the OS keychain, and workspace actions require approval under the configured tool policy.

Does the AI feature send my terminal data to a provider?

Section titled “Does the AI feature send my terminal data to a provider?”

Only when a request includes that context. OxideTerm redacts credentials before constructing provider context and does not collect terminal data as telemetry. Use Ollama for a local model workflow.

Can I use OxideTerm without internet access?

Section titled “Can I use OxideTerm without internet access?”

Local shells and local configuration work offline. SSH, SFTP, forwarding, and remote desktop need only network access to their targets. Update checks, cloud providers, Cloud Sync remotes, and hosted AI providers require their respective network connections.

The optional lightweight Rust agent enhances IDE mode on remote Linux hosts:

  • File watching and native Git status
  • Atomic writes with hash-based conflict detection
  • User-confirmed deployment on bundled x86_64 and arm64 Linux targets
  • A line-oriented request channel carried inside the existing SSH connection, with no externally listening service
  • Complete SFTP fallback when the agent is disabled or unavailable

oxideterm is a standalone headless management CLI. It directly reads and updates OxideTerm state through Rust domain crates, so the desktop app does not need to be running. It covers settings, connections, SSH launch, forwards, Quick Commands, plugins, portable state, secrets, .oxide bundles, cloud sync, paths, diagnostics, health checks, backups, batch plans, reports, completions, and stable error codes.

Use --json or --format json where supported for automation. Most write commands provide --dry-run and require --yes before applying changes.

Yes. OxideTerm records asciicast v2 sessions with timestamps and provides variable-speed playback and export.

Select terminal panes as broadcast targets, then submit a command from the terminal command bar. The native workspace sends that command to the current pane and each selected target. Direct terminal typing is not mirrored key by key. Review destructive commands carefully because broadcast is immediate.

Plugins are discovered from the active configuration directory. Each package has a plugin.json manifest and a supported native entry, such as a WASM module or declared process entry. Unsupported legacy script entries are not loaded into the UI.

Native WASM plugins run under wasmtime and can call only the typed host capabilities declared in their manifest. The host validates permissions before filesystem, forwarding, SFTP, or other effects are executed. Invalid manifests are rejected.

Only through capabilities granted by the native host. Filesystem, SFTP, and forwarding operations are mediated by typed host APIs and permission checks; installing a plugin does not grant unrestricted access.

If Gatekeeper blocks an unsigned preview, use Open from the Finder context menu or review the message in System Settings → Privacy & Security. Only bypass quarantine for an official artifact whose checksum you verified.

  • Check network stability and the remote server’s SSH logs.
  • Review keepalive and idle-timeout settings for the connection.
  • Inspect reconnect and health state in Runtime.
  • Run oxideterm diagnose --json and oxideterm doctor --strict for a redacted local snapshot.

Terminal rendering is slow or the app cannot open a window

Section titled “Terminal rendering is slow or the app cannot open a window”
  • Update your GPU driver.
  • Disable incompatible graphics overlays or injection layers.
  • Try OXIDETERM_RENDER_PROFILE=compatibility when launching from a shell.
  • Reduce expensive terminal background effects if they are enabled.

Paths depend on the operating system, package mode, optional OXIDETERM_CONFIG_DIR, and named profile. Ask the CLI for the resolved locations:

Terminal window
oxideterm paths --json
  1. Remove the installed application or portable directory.
  2. Run oxideterm paths --json before uninstalling and remove only the data directories you intend to discard.
  3. Remove OxideTerm entries from your OS keychain if you also want to delete saved credentials.
  4. Remove the active plugin directory reported by oxideterm paths if you do not want to keep installed plugins.