โก A blazingly fast, parallelized prompt engine for zsh written in Go.
- ๐ Single Go binary, ~6ms per prompt.
- ๐ All segments run as parallel goroutines.
- ๐ฅ Git dirty check with 150ms timeout. It never blocks, even in huge repos.
- ๐ง Zero-fork git branch detection. It reads .git/HEAD directly.
- ๐ฅ๏ธ OS icon auto-detection for Arch, Ubuntu, Fedora, Debian, NixOS, and macOS.
- ๐ฆ Runtime version detection for Node.js, Python, Go, Rust, Ruby, and Java when marker files are present.
- โ๏ธ Cloud context support for Kubernetes, AWS, Azure, and GCP profiles.
- ๐๏ธ Terraform workspace and Docker context detection.
- ๐ Environment detection for Conda and virtualenv.
- ๐ Battery level with charge state icons.
- โฑ๏ธ Command duration (3s+), time, and exit code coloring.
- โ๏ธ Vi mode indicator (swaps prompt char on keymap change).
- ๐ช Transient prompt (collapses previous prompt on Enter).
- โก Instant prompt (caches last prompt for zero-latency shell startup).
- โก๏ธ Right-aligned segments on the first line.
- ๐จ Nerd Font icons.
- ๐ Live config reloading. Save the file, next prompt picks it up โ no shell restart required.
- โ๏ธ Configurable via
~/.config/mehshell/config.
brew tap blackflame007/tap
brew install mehshellparu -S mehshell-binDownload a prebuilt binary from GitHub Releases:
# Linux (x86_64)
curl -sL https://github.com/blackflame007/mehshell/releases/latest/download/mehshell_linux_amd64.tar.gz | tar xz && mv mehshell ~/.local/bin/
# Linux (ARM64)
curl -sL https://github.com/blackflame007/mehshell/releases/latest/download/mehshell_linux_arm64.tar.gz | tar xz && mv mehshell ~/.local/bin/
# macOS (Apple Silicon)
curl -sL https://github.com/blackflame007/mehshell/releases/latest/download/mehshell_darwin_arm64.tar.gz | tar xz && mv mehshell ~/.local/bin/
# macOS (Intel)
curl -sL https://github.com/blackflame007/mehshell/releases/latest/download/mehshell_darwin_amd64.tar.gz | tar xz && mv mehshell ~/.local/bin/go install github.com/blackflame007/mehshell@latestAdd this to your .zshrc:
eval "$(mehshell init zsh)"Generate a default config file:
mehshell config initThis creates ~/.config/mehshell/config (or $XDG_CONFIG_HOME/mehshell/config). See config.example for the full default config.
| Option | Default | Description |
|---|---|---|
transient_prompt |
true |
Collapse previous prompts to โฏ on Enter. Set false to preserve full prompts with timestamps in scrollback. |
instant_prompt |
true |
Show cached prompt immediately on shell startup. |
vi_mode |
true |
Swap prompt character on vi keymap change (โฏ/โฎ). |
icons |
true |
Show Nerd Font icons. Set false for text labels (go, py, rs, etc.). |
style |
lean |
Prompt style: lean (colored text, no backgrounds), classic (powerline with dark grey background), or rainbow (powerline with per-segment colored backgrounds). |
| Option | Default | Description |
|---|---|---|
os |
true |
OS icon (Arch, Ubuntu, Fedora, Debian, NixOS, macOS). |
dir |
true |
Current working directory. |
git |
true |
Git branch and dirty state (โ, +, !, ?). |
node |
true |
Node.js version when package.json is present. |
python |
true |
Python version when marker files are found. |
go |
true |
Go version from go.mod. |
rust |
true |
Rust version when Cargo.toml is present. |
ruby |
true |
Ruby version when marker files are found. |
java |
true |
Java version when pom.xml or build.gradle is present. |
| Option | Default | Description |
|---|---|---|
conda |
true |
Conda environment name (skips base). |
venv |
true |
Python virtualenv name. |
k8s |
true |
Kubernetes context when manifest files are in cwd. |
terraform |
true |
Terraform version when .tf files are present. |
docker |
true |
Docker context when Dockerfile/compose is present. |
aws |
true |
AWS profile from $AWS_PROFILE. |
azure |
true |
Azure resource group from $AZURE_DEFAULTS_GROUP. |
gcloud |
true |
GCP project from $CLOUDSDK_CORE_PROJECT. |
battery |
true |
Battery level with charge state icon. |
duration |
true |
Command duration (shown when โฅ 3s). |
time |
true |
Current time. |
Set any option to false to disable it. Config changes are picked up live โ save the file and your next prompt reflects the update. No shell restart needed.
To see where your config lives:
mehshell config path| Metric | p10k | mehshell |
|---|---|---|
| Shell startup | 870ms+ | 64ms |
| Between commands | 6000ms (with vcs_info) | 28ms |
| Prompt generation | ~45ms | 6ms |
mehshell is intentionally minimal. p10k is a full-featured theme engine. Pick the right tool for your workflow.
| Feature | mehshell | p10k |
|---|---|---|
| Architecture | Single Go binary | Zsh scripts + gitstatusd daemon |
| Dependencies | Zero (Go stdlib only) | gitstatus binary (downloaded) |
| Prompt generation | ~6ms | ~45ms |
| Shell startup impact | ~64ms | ~870ms+ |
| Configuration | ~/.config/mehshell/config |
~/.p10k.zsh + config wizard |
| Async rendering | Goroutines (parallel) | Zsh workers + gitstatusd |
| Git branch detection | Zero-fork (reads .git/HEAD) |
gitstatusd (libgit2) |
| Git dirty check | git status with 150ms timeout |
Async, never blocks |
| Instant prompt | โ (cache-based) | โ |
| Transient prompt | โ | โ |
| Vi mode | โ (prompt char swap) | โ (full indicator) |
| Custom segments | Add in source | Public API (p10k segment) |
| Total segments | 20 | 67+ |
| Segment | mehshell | p10k |
|---|---|---|
| OS icon | โ | โ |
| Directory | โ | โ (smart truncation) |
| Git | โ (branch + dirty) | โ (branch, ahead/behind, stash, conflicts) |
| Node.js | โ | โ (+ nvm, nodenv, package name) |
| Python | โ | โ (+ pyenv, poetry) |
| Go | โ | โ (+ goenv) |
| Rust | โ | โ |
| Ruby | โ | โ (+ rvm, chruby) |
| Java | โ | โ (+ jenv) |
| Conda | โ | โ |
| Virtualenv | โ | โ |
| Kubernetes | โ | โ (+ show-on-command) |
| Terraform | โ | โ |
| Docker | โ | โ |
| AWS | โ | โ (+ Elastic Beanstalk) |
| Azure | โ | โ |
| GCP | โ | โ |
| Battery | โ | โ |
| Duration | โ | โ |
| Time | โ | โ (+ date) |
| CPU / RAM | โ | โ |
| Vi mode | โ (prompt char) | โ (full indicator) |
Note: p10k is in limited maintenance mode โ no new features are in development.
- Go 1.22+ (build only)
- Nerd Font
- zsh
MIT
