Skip to main content
SST /

OpenCode

An AI coding assistant with a browser-based workspace for exploring projects, editing files, and working with custom model providers.

Coding Agents
Versionlatest
InterfaceWeb UI
GPUOptional
Securely deploy OpenCode on Laboratory OS.

OpenCode

Laboratory OS Installation Details

Environment

Working Directory/workspace/opencode

Environment Variables

APP_DIRECTORY
/workspace/opencode
PORT
<assigned at runtime>
OPENCODE_PROVIDER_NAMEA unique name/ID for your custom OpenAI-compatible provider.
OPENCODE_BASE_URLBase URL for the OpenAI-compatible endpoint.
OPENCODE_API_KEYOptional API key/token for the custom provider. Leave blank if not required.
OPENCODE_MODELModel ID to use with the custom provider.
XDG_CONFIG_HOME
${APP_DIRECTORY}/.config
XDG_DATA_HOME
${APP_DIRECTORY}/.local/share
XDG_CACHE_HOME
${APP_DIRECTORY}/.cache
OPENCODE_CONFIG
${XDG_CONFIG_HOME}/opencode/opencode.json
OPENCODE_TUI_CONFIG
${XDG_CONFIG_HOME}/opencode/tui.json
OPENCODE_CONFIG_DIR
${APP_DIRECTORY}/.opencode

Install & Run

install-and-run.sh
#!/bin/bash
set -e

export PATH="/opt/conda/bin:/root/.local/bin:$PATH"

# Create the directory if it doesn't exist
mkdir -p "/workspace/opencode"
  
# Change to the app directory
cd "/workspace/opencode"


# Environment setup complete
echo "Environment setup complete!"

npm install --global opencode-ai@latest

mkdir -p "$(dirname "$OPENCODE_CONFIG")" "${XDG_DATA_HOME}/opencode" "${XDG_CACHE_HOME}/opencode" "$OPENCODE_CONFIG_DIR"

if [ -n "$OPENCODE_PROVIDER_NAME" ] && [ -n "$OPENCODE_BASE_URL" ] && [ -n "$OPENCODE_MODEL" ]; then
  python3 -c '
import json, os
cfg = {
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    os.environ["OPENCODE_PROVIDER_NAME"]: {
      "npm": "@ai-sdk/openai-compatible",
      "name": os.environ["OPENCODE_PROVIDER_NAME"],
      "options": {
        "baseURL": os.environ["OPENCODE_BASE_URL"],
        **({ "headers": { "Authorization": "Bearer " + os.environ["OPENCODE_API_KEY"] } } if os.environ.get("OPENCODE_API_KEY") else {})
      },
      "models": {
        os.environ["OPENCODE_MODEL"]: { "name": os.environ["OPENCODE_MODEL"] }
      }
    }
  }
}
print(json.dumps(cfg, indent=2))
' > "$APP_DIRECTORY/opencode.json"
fi

exec opencode web --hostname 0.0.0.0 --port "$PORT" $OPENLAB_EXTRA_ARGS

CLI Command

cli.sh
# OpenCode TUI
exec opencode