Manually install Outer Shell
This page was written mostly by AI. The rest of this website is human-written.
Normally you’ll install Outer Shell via Outer Loop.
These commands are useful when testing a release, recovering from a partial install, or installing on a machine without using the UI.
Manual Install
Install or update the current release:
curl -fsSL https://outershell.org/outer-shell/latest/install.sh -o /tmp/outershell-install.sh
sh /tmp/outershell-install.sh install
Update an existing install:
curl -fsSL https://outershell.org/outer-shell/latest/install.sh -o /tmp/outershell-install.sh
sh /tmp/outershell-install.sh update
Uninstall Outer Shell:
curl -fsSL https://outershell.org/outer-shell/latest/install.sh -o /tmp/outershell-install.sh
sh /tmp/outershell-install.sh uninstall
Remove user state too, after uninstalling all apps:
curl -fsSL https://outershell.org/outer-shell/latest/install.sh -o /tmp/outershell-install.sh
OUTERSHELL_UNINSTALL_REMOVE_USER_STATE=1 sh /tmp/outershell-install.sh uninstall
For a root install on Linux, run the same commands as root.
Force Uninstall
Use these only when the installer or UI cannot run. They remove Outer Shell service files and installed Outer Shell binaries. They do not try to preserve custom app registrations.
Linux User Scope
systemctl --user disable --now org.outershell.OuterShell.socket outershelld.socket outershelld.service 2>/dev/null || true
systemctl --user stop org.outershell.OuterShell.service outershelld.service 2>/dev/null || true
rm -f "$HOME/.config/systemd/user/org.outershell.OuterShell.service"
rm -f "$HOME/.config/systemd/user/org.outershell.OuterShell.socket"
rm -f "$HOME/.config/systemd/user/outershelld.service"
rm -f "$HOME/.config/systemd/user/outershelld.socket"
rm -f "$HOME/.config/systemd/user/sockets.target.wants/org.outershell.OuterShell.socket"
rm -f "$HOME/.config/systemd/user/sockets.target.wants/outershelld.socket"
systemctl --user daemon-reload 2>/dev/null || true
runtime_dir="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}"
state_home="${XDG_STATE_HOME:-$HOME/.local/state}"
cache_home="${XDG_CACHE_HOME:-$HOME/.cache}"
rm -f "$runtime_dir/org.outershell.OuterShell" "$runtime_dir/outershelld-api"
rm -rf "$state_home/outershell/outer-shell" "$state_home/outershell/outershelld"
rm -f "$state_home/outershell/bin/outerctl"
rm -rf "$cache_home/outershell/outer-shell"
If all apps have already been uninstalled and you want a complete reset:
state_home="${XDG_STATE_HOME:-$HOME/.local/state}"
rm -rf "$state_home/outershell"
Linux Root Scope
systemctl --system disable --now org.outershell.OuterShell.socket outershelld.socket outershelld.service 2>/dev/null || true
systemctl --system stop org.outershell.OuterShell.service outershelld.service 2>/dev/null || true
rm -f /etc/systemd/system/org.outershell.OuterShell.service
rm -f /etc/systemd/system/org.outershell.OuterShell.socket
rm -f /etc/systemd/system/outershelld.service
rm -f /etc/systemd/system/outershelld.socket
systemctl --system daemon-reload 2>/dev/null || true
rm -f /run/org.outershell.OuterShell /run/outershelld-api
rm -rf /var/lib/outershell/outer-shell /var/lib/outershell/outershelld
rm -f /var/lib/outershell/bin/outerctl
rm -rf /var/cache/outershell/outer-shell
rm -f /var/log/outershell/org.outershell.OuterShell.log /var/log/outershell/outershelld.log
If all apps have already been uninstalled and you want a complete reset:
rm -rf /var/lib/outershell /var/cache/outershell /var/log/outershell /opt/outershell
macOS User Scope
service_id="org.outershell.OuterShell"
launchctl bootout "gui/$(id -u)/$service_id" 2>/dev/null || launchctl remove "$service_id" 2>/dev/null || true
rm -f "$HOME/Library/LaunchAgents/org.outershell.OuterShell.plist"
rm -f "$(getconf DARWIN_USER_TEMP_DIR)org.outershell.OuterShell"
rm -f "$(getconf DARWIN_USER_TEMP_DIR)outershelld-api"
rm -rf "$HOME/Library/Application Support/outershell/apps/org.outershell.OuterShell"
rm -rf "$HOME/Library/Application Support/outershell/outer-shell"
rm -rf "$HOME/Library/Application Support/outershell/outershelld"
rm -f "$HOME/Library/Application Support/outershell/bin/outerctl"
rm -rf "$HOME/Library/Caches/outershell/outer-shell"
rm -rf "$HOME/Library/Logs/org.outershell.OuterShell"
If all apps have already been uninstalled and you want a complete reset:
rm -rf "$HOME/Library/Application Support/outershell"
rm -rf "$HOME/Library/Caches/outershell"
macOS Root Support
Outer Shell itself is installed as the user on macOS, but root support can install shared daemon files and a system registry. Remove these only after all root-installed apps have been uninstalled.
sudo launchctl bootout system/org.outershell.outershelld 2>/dev/null || true
sudo rm -f /Library/LaunchDaemons/org.outershell.outershelld.plist
sudo rm -f /var/run/outershelld-api
sudo rm -rf "/Library/Application Support/outershell/outershelld"
sudo rm -f "/Library/Application Support/outershell/bin/outerctl"
sudo rm -f /usr/local/libexec/outershelld-root-tool /usr/local/libexec/outershelld-root-helper
sudo rm -f /Library/Logs/outershelld.log
If all root apps have already been uninstalled and you want a complete reset:
sudo rm -rf "/Library/Application Support/outershell"