Expose Agent (VS Code / OpenVSCode)
February 15, 2026 · View on GitHub
Run the getExposed/expose agent from VS Code or OpenVSCode Server. If you don't set a path, the extension can auto-install the latest expose from GitHub Releases for your OS/arch.
⚠️ This is a workspace extension (runs on the server/remote). It won’t work on
vscode.dev/github.dev.
Install (from GitHub Releases)
This extension is distributed as a .vsix on GitHub Releases.
Option A — VS Code / VSCodium UI
- Download the latest
.vsixfrom GitHub Releases. - Open Extensions.
- Click … → Install from VSIX…
- Select the
.vsix, then reload the window if prompted.
Note: GitHub “latest” download URLs work best when the asset name is stable. If your VSIX name includes the version (common), use the scripts below (they discover the latest asset automatically).
Install via scripts (recommended)
These scripts fetch the latest GitHub Release, download the .vsix, and install it using your editor’s CLI.
macOS / Linux (bash)
Pipe to bash (quick):
curl -fsSL https://raw.githubusercontent.com/getExposed/expose-vscode/main/scripts/install-expose-vscode.sh | bash
VSCodium:
curl -fsSL https://raw.githubusercontent.com/getExposed/expose-vscode/main/scripts/install-expose-vscode.sh | CODE_BIN=codium bash
Safer: download then run:
curl -fsSLO https://raw.githubusercontent.com/getExposed/expose-vscode/main/scripts/install-expose-vscode.sh
bash ./install-expose-vscode.sh
Windows (PowerShell)
Pipe to PowerShell (quick):
iwr -useb https://raw.githubusercontent.com/getExposed/expose-vscode/main/scripts/install-expose-vscode.ps1 | iex
VSCodium:
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
"iwr -useb https://raw.githubusercontent.com/getExposed/expose-vscode/main/scripts/install-expose-vscode.ps1 | iex; .\install-expose-vscode.ps1 -CodeBin codium"
Remote note: If you’re using Remote-SSH / Dev Containers / Codespaces / OpenVSCode Server, install the VSIX in that same environment (run the script on the remote machine/container).
Features
- Start/stop the Expose agent and stream logs to an Output Channel
- Run one-off commands with extra arguments
- Auto-install the latest matching Expose binary from GitHub Releases
- Optional Docker Compose mode (
docker compose up) - Optional JSON config file support (e.g.
.expose.json) - Store the agent password securely using VS Code Secret Storage
Commands
- Expose: Start Agent
- Expose: Stop Agent
- Expose: Run Command…
- Expose: Install/Update Agent
- Expose: Create .expose.json
- Expose: Set Password (Secret Storage)
- Expose: Clear Password (Secret Storage)
Settings
Core
expose.path(string): Absolute path to an existing Expose binary. Leave empty to use the installed copy or auto-install.expose.autoInstall(boolean, default:true): If no path is set, automatically download the latest expose for your OS/arch from GitHub Releases.expose.cwd(string, default:${workspaceFolder}): Working directory for the agent process. Supports${workspaceFolder}.expose.args(string[], default:[]): Extra arguments appended to the generated args.
Optional config file
expose.configFile(string, default:""): Optional path to a JSON config file (e.g.${workspaceFolder}/.expose.json). Values in this file override VS Code settings.expose.autoRestartOnConfigChange(boolean, default:true): If the agent is running and the config file changes, automatically restart the agent.
Expose connection/flags
These settings are used to build the Expose CLI arguments:
expose.sshHost(string, default:getexposed.io)expose.sshPort(number, default:2200)expose.localHost(string, default:localhost)expose.localPort(number, default:7500)expose.bindPort(number, default:0)expose.id(string, default:"")expose.keepAlive(boolean, default:false) → adds-aexpose.autoReconnect(boolean, default:false) → adds-r
Password storage
- Use Expose: Set Password (Secret Storage) to store the password securely.
- The password is read from Secret Storage when starting/running Expose.
expose.legacyPassword(string): Deprecated. Avoid storing passwords in settings.json.
Config File (.expose.json)
If you set expose.configFile, the extension will load it as JSON and use it to override VS Code settings.
Example .vscode/settings.json:
{
"expose.configFile": "${workspaceFolder}/.expose.json"
}
Example .expose.json:
{
"configVersion": 1,
"cwd": "${workspaceFolder}",
"autoInstall": true,
"sshHost": "getexposed.io",
"sshPort": 2200,
"localHost": "localhost",
"localPort": 7500,
"bindPort": 0,
"id": "",
"keepAlive": false,
"autoReconnect": false,
"args": []
}
Precedence (highest → lowest):
- Password from Secret Storage
- Values in .expose.json (if configured)
- VS Code settings (settings.json)
- Built-in defaults
OpenVSCode / Remote Environments
This extension is tagged with "extensionKind": ["workspace"], so it runs where Node APIs are available (OpenVSCode Server, Remote-SSH, Codespaces, Dev Containers). It won’t run as a web extension in purely browser-hosted editors.
Development
- npm install
- Press F5 in VS Code to launch the extension host
- Run “Expose: Start Agent”
Notes
- Current Expose releases often publish raw binaries named like expose_linux_amd64, expose_darwin_arm64, expose_windows_amd64, etc. The extension picks the one matching your platform and installs it under the extension’s global storage.
- If asset names change or releases switch to archives, update src/installer.ts accordingly.
- In Remote environments, installation happens on the remote side (because extensionKind: workspace).