Releases: t-rhex/opencode
Release list
v0.1.0-remote.8: Fix /dir dialog showing 'No results found'
What's Changed
Bug Fix
- Fix
/dirdialog showing "No results found" — Loading and error states were markeddisabled: true, whichDialogSelectalways filters out. Now they render as visible items ("Loading..." or "Failed to browse remote directory" with retry on select). - Surface browse errors via toast — Previously, fetch errors in the browse dialog were silently swallowed (
.catch(() => null)). Now errors show as toast messages so you can see what's failing.
Install
curl -fsSL https://raw.githubusercontent.com/t-rhex/opencode/dev/install.sh | bashv0.1.0-remote.7: Fix config loading in remote mode
What's Changed
Bug Fix
- Fix "config file not valid" error after remote connect — Config files (
~/.config/opencode-remote/,~/.opencode-remote/) are local to the machine. After remote connect,CurrentFilesystembecomesRemoteFilesystem, which tried to read local Mac paths (e.g./Users/username/.opencode-remote/opencode-remote.jsonc) via SFTP on the remote Linux server. Now config files are always read from the local filesystem. - Skip project
.opencode-remote/directory scan in remote mode —Filesystem.up()uses local fs operations and would fail whenInstance.directoryis a remote path.
Install
curl -fsSL https://raw.githubusercontent.com/t-rhex/opencode/dev/install.sh | bashv0.1.0-remote.6: Fix remote mode hang + session isolation
What's Changed
Critical Bug Fix
- Fix LLM response hang in remote mode — The SSE event stream was subscribed to an instance-scoped Bus. After remote connect, events were published to a different Bus instance (keyed by the remote directory), so the TUI never received model responses. Fixed by switching the
/eventSSE endpoint to useGlobalBuswhich receives all events regardless of instance.
Remote Mode Bootstrap Fixes
- Skip file watcher (
FileWatcher.init) in remote mode — was trying to watch local paths that don't exist - Skip file scanner (
File.init) in remote mode — was runningreaddirandripgrepon local paths - Skip LSP spawning (
LSP.init) in remote mode — was trying to spawn local language servers
UI Improvements
- Session header now shows remote directory path and git branch (e.g.
~/project:master SSH: dev@localhost:2223) - Footer path updates correctly after remote connect and directory changes (was showing stale local path)
- Create directory prompt in
/dirnow accepts absolute paths (e.g./home/dev/newproject)
Session/Directory Isolation
- Changing directory via
/dirnavigates to home screen — next message starts a fresh session for the new directory - Session list in remote mode is filtered by current directory — sessions from
/project-adon't appear when working in/project-b - Session search also respects directory filtering
Infrastructure
- Remote connect/disconnect/set-directory emit
server.instance.disposedvia GlobalBus to trigger TUI re-bootstrap - Worker event stream restarts after
initRemote(CLI--remotepath)
Install
curl -fsSL https://raw.githubusercontent.com/t-rhex/opencode/dev/install.sh | bashv0.1.0-remote.5: Remote Directory Browser
What's New
Remote Directory Browser (/dir command)
/dir(aliases:/cd,/directory) — opens a directory browser dialog to navigate and select the remote working directory- Browse subdirectories, navigate to parent, view git repo indicators
- Create directory — create new directories directly from the browser via
mkdir -p - Type a path — enter an absolute path manually
- Recent directories — shows up to 5 previously used directories per host
Auto Home Directory Detection
- Quick-connecting without a profile (
/remote dev@host:2223) now auto-detects$HOMEon the remote and sets it as the initial working directory - No more broken paths from local
cwdleaking into remote sessions
Directory Persistence
- Last-used directory is remembered per
host:portin KV store - On reconnect, the saved directory is automatically restored
- Toast hint:
"Type /dir to change working directory"shown on first connect
Connect Response Improvements
POST /remote/connectresponse now includesremoteDirfieldGET /remote/statusresponse now includesremoteDirfield
New Server Endpoints
GET /remote/browse?path=...— list directories at a remote path (supports~expansion)POST /remote/set-directory— change working directory, with optionalcreate: trueformkdir -p
Bug Fixes
- Fixed Docker test container SSH permissions (COPY keys at build time instead of read-only bind mount)
- Added default SSH key fallback (
~/.ssh/id_ed25519,id_rsa,id_ecdsa) for quick-connect when no SSH config or agent is available
Install
curl -fsSL https://raw.githubusercontent.com/t-rhex/opencode/dev/install.sh | bashOr download the binary for your platform from the assets below.
v0.1.0-remote.4 — SSH Config Auto-Discovery
What's New
SSH config auto-discovery
The /remote dialog now automatically detects hosts from your ~/.ssh/config and lists them under an SSH Config category. No need to manually re-enter hosts you've already configured.
Wildcard entries (Host *) and glob patterns are filtered out. If a host exists in both SSH config and as an opencode-remote profile, the profile takes priority.
Install / Upgrade
curl -fsSL https://raw.githubusercontent.com/t-rhex/opencode/dev/install.sh | bashThis will overwrite any previous opencode-remote binary at ~/.local/bin/opencode-remote.
Full changelog since v0.1.0-remote.3
GET /remote/ssh-hostsendpoint — parses~/.ssh/config, returns connectable hosts/remotedialog shows SSH Config hosts alongside profiles- Deduplication: profiles shadow SSH config entries with the same name
v0.1.0-remote.10: Fix --remote CLI authentication
Fix
--remoteCLI flag now auto-discovers SSH keys — Previously,opencode-remote --remote user@hostfailed with "All configured authentication methods failed" when no--identityflag was given and no SSH agent was running. The TUI/remotedialog worked fine because it had adefaultKey()fallback that scans~/.ssh/forid_ed25519,id_rsa, orid_ecdsa. This fallback is now also applied to the--remoteCLI path, making both paths behave identically.
Install
curl -fsSL https://raw.githubusercontent.com/t-rhex/opencode/dev/packages/opencode/install.sh | bashv0.1.0-remote.3 — Binary Rename + Quick Connect + Install Script
What's New
Binary renamed to opencode-remote
The binary inside archives is now correctly named opencode-remote (was opencode). Can coexist with upstream OpenCode without conflicts.
One-liner install
curl -fsSL https://raw.githubusercontent.com/t-rhex/opencode/dev/install.sh | bashAuto-detects platform, arch, and libc. Installs to ~/.local/bin.
/remote user@host quick-connect
Type /remote user@host in the prompt to connect directly without opening the dialog.
Connection persistence
Remembers your last connected host. Shows a reconnect hint on next startup.
SSH agent forwarding
Add "agentForward": true to a profile to forward your local SSH agent for git operations on the remote.
Port forwarding in /remote dialog
"Forward port..." option in the /remote dialog. Enter 3000 or 3000:8080 to create tunnels. Active tunnels shown with stop option.
Full README
Complete documentation: install, config, CLI flags, remote features, architecture.
Install
curl -fsSL https://raw.githubusercontent.com/t-rhex/opencode/dev/install.sh | bashPlatforms
| Platform | Asset |
|---|---|
| macOS (Apple Silicon) | dist-opencode-darwin-arm64.zip |
| macOS (Intel) | dist-opencode-darwin-x64.zip |
| Linux x64 | dist-opencode-linux-x64.tar.gz |
| Linux arm64 | dist-opencode-linux-arm64.tar.gz |
| Linux x64 musl | dist-opencode-linux-x64-musl.tar.gz |
| Linux arm64 musl | dist-opencode-linux-arm64-musl.tar.gz |
| Windows x64 | dist-opencode-windows-x64.zip |
Baseline (no AVX2) variants also included.
v0.1.0-remote.2 — Remote Dev (Namespaced)
OpenCode Remote Dev — v0.1.0-remote.2
Now fully namespaced as opencode-remote — can be installed alongside upstream opencode without conflicts.
What changed from v0.1.0-remote.1
- All paths and identifiers renamed to avoid conflicts with upstream opencode
- Config:
~/.config/opencode-remote/, Data:~/.local/share/opencode-remote/ - Project dir:
.opencode-remote/, Config file:opencode-remote.json - CLI identifies as
opencode-remote - Added "Add server..." option to
/remotedialog for ad-hoc connections
Features
- SSH filesystem abstraction — all file operations work transparently over SSH
--remote user@hostCLI flag with SSH config and ProxyJump support/remoteslash command — connect/disconnect/switch SSH hosts from TUI- Connection profiles in config with keepalive, env vars, setup commands
- MCP over SSH — MCP servers spawn on the remote host
- Remote diagnostics, PTY, auto-reconnection
- GitHub Copilot only — all other providers stripped
Binaries
| Platform | File |
|---|---|
| macOS Apple Silicon | dist-opencode-darwin-arm64.zip |
| macOS Intel | dist-opencode-darwin-x64.zip |
| Linux ARM64 | dist-opencode-linux-arm64.tar.gz |
| Linux x64 | dist-opencode-linux-x64.tar.gz |
| Linux x64 (musl/Alpine) | dist-opencode-linux-x64-musl.tar.gz |
| Windows x64 | dist-opencode-windows-x64.zip |
Baseline (no AVX2) variants also included for older CPUs.
v0.1.0-remote.1 — Remote Dev Preview
OpenCode Remote Dev — First Preview Release
Forked from opencode-ai/opencode with full remote SSH development support and GitHub Copilot as the only provider.
Remote Development
- SSH filesystem abstraction — all file operations (read, write, glob, exec) work transparently over SSH
--remote user@hostCLI flag with SSH config and ProxyJump support/remoteslash command — connect/disconnect/switch SSH hosts interactively from the TUI- Connection profiles in
config.jsonwith keepalive, env vars, setup commands - Remote diagnostics — disk/memory/load metrics via SSH
- Remote PTY — bash sessions on the remote host
- MCP over SSH — local-type MCP servers spawn on the remote host via SSH exec channels
- Connection status in TUI header with latency indicator
- Auto-reconnection with exponential backoff
Copilot-Only
- All non-GitHub Copilot providers commented out (code preserved)
- Model list filtered to only show Copilot and Copilot Enterprise models
- Provider dependencies removed from package.json (~19 packages)
Binary
opencode-darwin-arm64.tar.gz— macOS Apple Silicon- Extract and run:
tar xzf opencode-darwin-arm64.tar.gz && ./opencode