Selfishell is a managed Zsh development environment for macOS, Ubuntu, and Ubuntu on WSL. The installed CLI is a native executable; installation does not require Go. The supported baseline is macOS 13 or newer, Ubuntu 24.04 LTS, and Ubuntu on WSL 2. See the verification coverage for environments actually exercised in CI. The prompt and Neovim require a Nerd Font in your terminal.
Install the CLI and development environment:
curl -fsSL https://raw.githubusercontent.com/jiminu/selfishell/main/install.sh | bash -s -- --setupAnswer the installation questions, including Ghostty on macOS or Windows Terminal integration on WSL. Then start Zsh and verify the environment:
exec zsh
selfishell statusWithout --setup, the bootstrap installs only the CLI. If it reports that
~/.local/bin is not in PATH, run the export PATH=… command it prints before
continuing. See the
installation guide for exact-version and
non-interactive installation, configuration-only setup, uninstallation,
Ghostty, other terminals, and platform notes.
- A consistent Zsh environment across supported macOS and Ubuntu systems.
- A Starship prompt, useful aliases, completions, and managed shell defaults.
- Neovim, mise-managed runtimes, CLI tools, and build tooling.
- Checksum-verified release updates and a retained release for offline rollback.
- User-owned shell files: personal aliases, exports, functions, and project tooling stay outside Selfishell-managed blocks.
See Environment for managed tools, prompt behavior, and the Neovim workflow.
| Command | Use it to |
|---|---|
selfishell status |
Check the system, tools, Zsh plugins, and managed configuration; list problems with next steps. |
selfishell version --available |
Check the latest published release. |
selfishell update |
Update the CLI, tools, and configuration. |
selfishell rollback |
Return to the previous retained release offline. |
selfishell uninstall --restore --dry-run |
Preview restoring backed-up configuration. |
Add --verbose to status to include every healthy item. selfishell doctor
remains an alias of status.
sfs is the optional short alias for selfishell; an existing sfs from
another program is left in place. See
Updates and rollback for update modes and recovery behavior.
Selfishell installs its own files without root into XDG-compatible user paths, backs up existing managed paths, keeps user shell files user-owned, verifies release checksums, and never installs updates automatically during shell startup.
- Installation — setup, uninstallation, Ghostty, other terminals, and platform notes.
- Environment — managed tools and Neovim workflow.
- Debugging in Neovim — adapters, shortcuts and language setup.
- Python development — Python tooling and project setup.
- Updates and rollback — release updates and recovery.
- Troubleshooting — common installation and shell problems.
- Security model — trust boundaries and security guarantees.
- Company deployment — organization-specific installation.
- Shell performance — startup measurement and profiling.
- Contributing — source checkout and verification.
- Architecture — CLI boundaries and managed state.
- Release process — tag-driven publishing and verification.
- Vulnerability reporting — report a security issue privately.


