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):
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:
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:
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:
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: