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"