TL;DR — Quick Summary
Starship is a fast, customizable cross-shell prompt showing git status, language versions, cloud context, and more. Works with bash, zsh, fish, and PowerShell.
Starship is a cross-shell prompt that shows you what you need, when you need it. Git branch with ahead/behind count? Only when you’re in a Git repo. Node.js version? Only when there’s a package.json. Kubernetes context? Only when there’s a kubeconfig. All rendered in under 10ms.
Installation
# Official installer
curl -sS https://starship.rs/install.sh | sh
# macOS
brew install starship
# Arch Linux
sudo pacman -S starship
# Cargo
cargo install starship --locked
# Windows (winget)
winget install starship
Shell Integration
# Bash — add to ~/.bashrc
eval "$(starship init bash)"
# Zsh — add to ~/.zshrc
eval "$(starship init zsh)"
# Fish — add to config.fish
starship init fish | source
# PowerShell — add to $PROFILE
Invoke-Expression (&starship init powershell)
Configuration
Create ~/.config/starship.toml:
# Timeout for commands that display how long they took
[time]
disabled = false
format = "[$time]($style) "
# Git status with custom symbols
[git_status]
ahead = "⇡${count}"
behind = "⇣${count}"
diverged = "⇕⇡${ahead_count}⇣${behind_count}"
modified = "!${count}"
untracked = "?${count}"
# Node.js version
[nodejs]
format = "via [$symbol($version)]($style) "
# Python version with virtualenv
[python]
format = "via [$symbol$pyenv_prefix($version)(\\($virtualenv\\))]($style) "
# Kubernetes context
[kubernetes]
disabled = false
format = "on [$symbol$context(\\($namespace\\))]($style) "
# Custom prompt format
format = """
$username$hostname$directory$git_branch$git_status
$nodejs$python$rust$golang$docker_context
$character"""
Common Modules
| Module | Shows | When |
|---|---|---|
git_branch | Branch name | In git repo |
git_status | Modified/staged/untracked | In git repo |
nodejs | Node.js version | package.json exists |
python | Python + virtualenv | .py files or venv |
rust | Rust version | Cargo.toml exists |
docker_context | Docker context | Dockerfile exists |
kubernetes | K8s context | kubeconfig exists |
aws | AWS profile/region | AWS config exists |
cmd_duration | Command time | Commands > 2s |
battery | Battery level | Below threshold |
Presets
# Nerd Font symbols (recommended)
starship preset nerd-font-symbols -o ~/.config/starship.toml
# Bracketed segments
starship preset bracketed-segments -o ~/.config/starship.toml
# Plain text (no icons)
starship preset plain-text-symbols -o ~/.config/starship.toml
# Pastel powerline
starship preset pastel-powerline -o ~/.config/starship.toml
Summary
- Starship is a fast (<10ms), cross-shell prompt written in Rust
- Shows contextual information only when relevant (git, language versions, cloud context)
- Works with bash, zsh, fish, PowerShell, and more
- Configure via a single TOML file with per-module settings
- Presets provide instant themes; modules can be mixed and matched
- Nerd Font recommended for icons but works with any font