Skip to content

Uninstall Openbase Coder

Uninstall does not depend on the openbase-coder command. Use normal macOS, Linux, and Python tool cleanup commands so you can remove Openbase even if the CLI environment is broken.

Openbase Coder state lives in four places, each removed in its own section below: the CLI runtime state in ~/.openbase, the desktop app's Electron state and caches under ~/Library, a managed Claude credential in the macOS Keychain (Claude Code backend only), and the iOS app's on-phone state (removed automatically when you delete the app from the iPhone).

Service Cleanup With The CLI

If the CLI still runs, this removes every service plist and wrapper (it works even when ~/.openbase has already been deleted):

openbase-coder services uninstall

Otherwise use the manual commands below.

macOS Launchd Services

Stop and remove the launchd jobs first:

for plist in "$HOME"/Library/LaunchAgents/com.openbase.coder.*.plist; do
  [ -e "$plist" ] || continue
  launchctl bootout "gui/$(id -u)" "$plist" 2>/dev/null || true
done

rm -f "$HOME"/Library/LaunchAgents/com.openbase.coder.*.plist

Linux Systemd User Services

If the machine was set up with systemd user units, stop and remove them first:

systemctl --user stop 'com.openbase.coder.*.service' 2>/dev/null || true
rm -f "$HOME"/.config/systemd/user/com.openbase.coder.*.service
systemctl --user daemon-reload

Remove The CLI Package

Remove the persistent openbase-coder command with the same tool used to install it:

uv tool uninstall openbase-coder
pipx uninstall openbase-coder
pip uninstall openbase-coder

Setup also writes an openbase-coder shim that the tools above do not own (it wraps either the standalone package launcher or a development workspace's virtualenv). Remove it explicitly:

rm -f "$HOME"/.local/bin/openbase-coder

Remove Or Archive Local State

Only remove or archive ~/.openbase after the service jobs above are stopped and deleted. That directory contains logs, tokens, plugins, generated service wrappers, the workspace checkout, and the local database.

This covers the CLI runtime state only. The desktop app keeps separate Electron state outside ~/.openbase — see Remove The Desktop App below.

To remove it completely:

rm -rf "$HOME"/.openbase

To keep a backup instead:

backup="$HOME/.openbase.backup.$(date +%Y%m%d-%H%M%S)"
mv "$HOME"/.openbase "$backup"
echo "Archived Openbase state at $backup"

Remove The Desktop App

Delete the app itself, then its persistent storage. Electron keeps per-app state (localStorage, IndexedDB, cookies, window data) outside the app bundle, so deleting the app alone leaves it behind — and a later reinstall would silently pick up the old state:

rm -rf "/Applications/Openbase Coder.app"

# Electron user data — current and older app identities:
rm -rf "$HOME/Library/Application Support/@openbase/coder-desktop"
rm -rf "$HOME/Library/Application Support/openbase-coder-desktop"
rm -rf "$HOME/Library/Application Support/coder-desktop"

The auto-updater and the screen-share companion keep their own caches and preferences (downloaded updates alone can exceed 1 GB):

rm -rf "$HOME/Library/Caches/@openbasecoder-desktop-updater"
rm -rf "$HOME/Library/Caches/tech.openbase.coder.desktop" \
       "$HOME/Library/Caches/tech.openbase.coder.desktop.ShipIt" \
       "$HOME/Library/Caches/tech.openbase.coder.LiveKitCompanion"
defaults delete tech.openbase.coder.desktop 2>/dev/null || true
defaults delete tech.openbase.coder.LiveKitCompanion 2>/dev/null || true
rm -rf "$HOME/Library/HTTPStorages/tech.openbase.coder.desktop" \
       "$HOME/Library/HTTPStorages/tech.openbase.coder.LiveKitCompanion" \
       "$HOME/Library/HTTPStorages/tech.openbase.coder.LiveKitCompanion.binarycookies"
rm -rf "$HOME/Library/Saved Application State/tech.openbase.coder.desktop.savedState"

On iPhone, deleting the Openbase app removes its local state (the CLI auth token in the Keychain and the backend host list); there is nothing else to clean up on the phone.

Remove Keychain Credentials

If the Claude Code backend was ever used, the CLI stored a managed Claude credential in the macOS Keychain under a service name derived from the Openbase Claude config path. Remove it with:

suffix=$(python3 -c 'import hashlib,os;print(hashlib.sha256(os.path.expanduser("~/.openbase/claude_config").encode()).hexdigest()[:8])')
security delete-generic-password -s "Claude Code-credentials-$suffix" 2>/dev/null || true

This does not touch your normal Claude Code login (Claude Code-credentials without a suffix), which belongs to Claude Code itself.

Optional Tailscale Cleanup

If this machine only used Tailscale Serve for Openbase, clear the local Serve configuration after services are removed:

tailscale serve reset