Starship — Minimal Blazing-Fast Customizable Shell Prompt
Starship is a minimal, blazing-fast, and infinitely customizable prompt for any shell. Works with bash, zsh, fish, PowerShell, nushell, and more. Single TOML config file and Rust-powered speed with gorgeous defaults.
What it is
Starship is a minimal, fast, and customizable prompt for any shell. Written in Rust, it renders contextual information like git status, language versions, Kubernetes context, and cloud profiles without measurable latency. Configuration lives in a single TOML file.
Starship works with bash, zsh, fish, PowerShell, nushell, cmd, xonsh, ion, elvish, and more. It targets developers who spend significant time in the terminal and want context-rich prompts without slowdowns.
How it saves time or tokens
Starship eliminates manual checks for project context. Instead of running git status, node --version, or kubectl config current-context separately, the prompt shows all of this inline. It detects package managers, Docker contexts, and cloud profiles automatically. The Rust implementation keeps rendering under 1ms even with many modules enabled.
How to use
- Install Starship via Homebrew, curl, or scoop.
- Add the init script to your shell configuration file.
- Customize
~/.config/starship.tomlto enable or disable modules.
# Install
brew install starship
# Add to ~/.zshrc
eval "$(starship init zsh)"
# Add to ~/.bashrc
eval "$(starship init bash)"
Example
A custom Starship configuration showing git branch, Node.js version, and directory info:
add_newline = true
[character]
success_symbol = '[>](bold green)'
error_symbol = '[x](bold red)'
[directory]
truncation_length = 3
truncate_to_repo = true
[git_branch]
symbol = 'branch '
[nodejs]
format = 'via [node $version](bold green) '
[kubernetes]
disabled = false
format = 'on [k8s $context](blue) '
This produces a prompt like: ~/projects/my-app branch main via node v20.11 on k8s prod >
Related on TokRepo
- AI Tools for Coding — Development tools that pair well with terminal workflows
- Featured Workflows — Discover popular developer tools and configurations
Common pitfalls
- Nerd Fonts are required for icons. Without them, the prompt shows garbled characters. Install a patched font from nerdfonts.com.
- Enabling too many modules slows the prompt on older machines. Disable modules you do not need in
starship.toml. - Fish shell users must use
starship init fish | sourcesyntax, noteval. The init command differs per shell.
Frequently Asked Questions
Starship supports bash, zsh, fish, PowerShell, nushell, cmd, xonsh, ion, elvish, and tcsh. Each shell has its own init command. The configuration file is shared across all shells, so switching shells does not require reconfiguration.
No. Starship is written in Rust and renders in under 1ms for most configurations. It only runs the detection logic for modules that are enabled and relevant to the current directory. Disabling unused modules makes it even faster.
Edit the file at ~/.config/starship.toml. Each module (git, node, python, kubernetes, etc.) has its own configuration section where you can set format strings, symbols, colors, and enable/disable the module entirely.
Yes. Starship works in any terminal emulator including the VS Code integrated terminal. Set your VS Code terminal to use a Nerd Font for proper icon rendering, and ensure the shell init script is in your shell config file.
Out of the box, Starship shows the current directory, git branch and status, detected language versions (Node, Python, Rust, Go, etc.), command duration for slow commands, and error indicators. The defaults are designed to be useful without configuration.
Citations (3)
- Starship GitHub— Starship cross-shell prompt with 56K+ stars
- Starship Docs— Starship configuration and module documentation
- Nerd Fonts— Nerd Fonts required for icon rendering
Related on TokRepo
Discussion
Related Assets
doctest — The Fastest Feature-Rich C++ Testing Framework
doctest is a single-header C++ testing framework designed for minimal compile-time overhead and maximum speed.
Chai — BDD/TDD Assertion Library for Node.js
Chai is a flexible assertion library for Node.js and browsers that supports expect, should, and assert styles.
Supertest — HTTP Assertion Library for Node.js APIs
Supertest provides a high-level API for testing HTTP servers in Node.js with fluent assertion chaining.