{"id":50476189,"url":"https://github.com/andev0x/paneship","last_synced_at":"2026-06-01T13:30:43.524Z","repository":{"id":353790307,"uuid":"1220672086","full_name":"andev0x/paneship","owner":"andev0x","description":"A high-performance shell prompt written in Rust, supporting Bash, Fish, PowerShell, Nushell, Elvish, Xonsh, Tcsh, Ion, and Cmd.","archived":false,"fork":false,"pushed_at":"2026-05-12T04:44:30.000Z","size":276,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-12T05:23:54.701Z","etag":null,"topics":["bash","fish","nushell","open-source","powershell","rust","shell-prompt","tmux","zsh"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/paneship","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andev0x.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-25T07:13:39.000Z","updated_at":"2026-05-12T04:43:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/andev0x/paneship","commit_stats":null,"previous_names":["andev0x/paneship"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/andev0x/paneship","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andev0x%2Fpaneship","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andev0x%2Fpaneship/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andev0x%2Fpaneship/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andev0x%2Fpaneship/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andev0x","download_url":"https://codeload.github.com/andev0x/paneship/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andev0x%2Fpaneship/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33777967,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","fish","nushell","open-source","powershell","rust","shell-prompt","tmux","zsh"],"created_at":"2026-06-01T13:30:37.819Z","updated_at":"2026-06-01T13:30:43.519Z","avatar_url":"https://github.com/andev0x.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"https://raw.githubusercontent.com/andev0x/description-image-archive/refs/heads/main/paneship/logo-paneship.png\" width=\"32%\" alt=\"Paneship Logo\" /\u003e\n\n# Paneship\n\n**A blazingly fast, high-performance shell prompt optimized for tmux and large Git repositories.**\n\n[![Crates.io](https://img.shields.io/crates/v/paneship?style=flat-square\u0026color=orange)](https://crates.io/crates/paneship)\n[![Docs.rs](https://img.shields.io/docsrs/paneship?style=flat-square\u0026color=blue)](https://docs.rs/paneship)\n[![CI Status](https://img.shields.io/github/actions/workflow/status/andev0x/paneship/ci.yml?branch=main\u0026style=flat-square)](https://github.com/andev0x/paneship/actions)\n[![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](./LICENSE)\n[![GitHub Stars](https://img.shields.io/github/stars/andev0x/paneship?style=flat-square\u0026color=gold)](https://github.com/andev0x/paneship/stargazers)\n\n---\n\n[Key Features](#-features) • [Demo](#-demo) • [Installation](#-installation) • [Shell Setup](#-shell-setup) • [Configuration](#%EF%B8%8F-configuration) • [Architecture](#-architecture) • [Benchmarks](#-benchmarks) • [CLI Commands](#-cli-commands) • [Troubleshooting](#-troubleshooting) • [Contributing](#-contributing)\n\n\u003c/div\u003e\n\n---\n\n##  About\n\n**Paneship** is a modern, ultra-fast, and customizable command-line prompt utility written in Rust. It is engineered from the ground up for developers who work in terminal multiplexers (like tmux), manage large Git repositories, and demand a snappy shell interface. \n\nBy leveraging a persistent background daemon, asynchronous Git checks, and smart cache invalidation, Paneship achieves a rendering speed of **~2.5ms**, keeping your shell highly responsive even in massive monorepos.\n\n---\n\n##  Features\n\n-  **Sub-millisecond Performance** – Renders in **~2.5ms** on average by using a client-daemon architecture.\n-  **Async Background Workers** – Git status checks and programming language detections run in background threads, so your prompt never blocks.\n-  **Multi-Shell Compatibility** – Native integration scripts for Zsh, Bash, Fish, PowerShell, Nushell, Elvish, Xonsh, Tcsh, Ion, and Cmd.\n-  **Tmux-Aware \u0026 Responsive** – Automatically detects tmux pane width changes and truncates long paths or metadata gracefully.\n-  **Git Integration** – Visual branch status, staged, unstaged, and untracked counts computed efficiently.\n-  **Configurable \u0026 Aesthetic** – Easy-to-use TOML-based configurations. Fully supports custom icons, emojis, and Nerd Fonts.\n-  **Rust/Node/Bun/Go/Python/Deno/Ruby/PHP/Java Version Detectors** – Automatically fetches and displays active development environment versions in your metadata area.\n-  **Command Execution Timing** – Keeps track of long-running command durations and presents them in a human-readable format (e.g., `11ms`, `1m20s`).\n\n---\n\n##  Demo\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/andev0x/description-image-archive/refs/heads/main/paneship/paneship.gif\" width=\"80%\" alt=\"Paneship Demo Video\" style=\"border-radius: 8px; box-shadow: 0 4px 20px rgba(0,0,0,0.15);\" /\u003e\n\u003c/div\u003e\n\n---\n\n##  Installation\n\n### Using Cargo (Recommended)\n\nInstalls the package directly from [crates.io](https://crates.io/crates/paneship):\n\n```bash\ncargo install paneship\n```\n\n### From Source\n\nEnsure you have Rust and Cargo installed (Rust 1.70+ is required):\n\n```bash\ngit clone https://github.com/andev0x/paneship.git\ncd paneship\ncargo install --path .\n```\n\n---\n\n##  Shell Setup\n\nPaneship can configure itself automatically or be integrated manually.\n\n### 1. Automatic Onboarding (Recommended)\n\nRun the `init` command with the `--onboarding` flag. This will automatically detect your shell configuration file and append the necessary initialization block safely. It also handles starting the background daemon for you.\n\n```bash\npaneship init \u003cshell\u003e --onboarding\n```\n\n*Example for Zsh:*\n```bash\npaneship init zsh --onboarding\n```\n\n### 2. Manual Configuration\n\nAdd the corresponding snippet to your shell configuration file. Note that manual configuration requires you to ensure the `paneship daemon` is running for optimal performance.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eZsh (\u003ccode\u003e~/.zshrc\u003c/code\u003e)\u003c/b\u003e\u003c/summary\u003e\n\n```bash\neval \"$(paneship init zsh)\"\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eBash (\u003ccode\u003e~/.bashrc\u003c/code\u003e)\u003c/b\u003e\u003c/summary\u003e\n\n```bash\neval \"$(paneship init bash)\"\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eFish (\u003ccode\u003e~/.config/fish/config.fish\u003c/code\u003e)\u003c/b\u003e\u003c/summary\u003e\n\n```fish\npaneship init fish | source\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003ePowerShell (\u003ccode\u003e$PROFILE\u003c/code\u003e)\u003c/b\u003e\u003c/summary\u003e\n\n```powershell\nInvoke-Expression (\u0026paneship init powershell)\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eNushell (\u003ccode\u003econfig.nu\u003c/code\u003e)\u003c/b\u003e\u003c/summary\u003e\n\n```nushell\nmkdir ~/.cache/paneship\npaneship init nushell | save --force ~/.cache/paneship/init.nu\nsource ~/.cache/paneship/init.nu\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eOther Shells\u003c/b\u003e\u003c/summary\u003e\n\nFor other supported shells (Elvish, Xonsh, Tcsh, Ion, Cmd), evaluate or source the output of:\n```bash\npaneship init \u003cshell\u003e\n```\n\u003c/details\u003e\n\n---\n\n##  Configuration\n\nPaneship configuration is defined in `~/.config/paneship/config.toml`. Sensible defaults are applied if this file is not present.\n\n### Default Config Structure\n\nHere is a standard setup using Nerd Font icons (requires a [Nerd Font](https://www.nerdfonts.com/)):\n\n```toml\n[directory]\nicon = \" \"\ntruncation_length = 3\ntruncate_to_repo = true\n\n[git]\nbranch_icon = \" \"\nstaged_icon = \"+\"\nunstaged_icon = \"!\"\nuntracked_icon = \"?\"\n\n[status]\nsuccess_icon = \"➜\"\nfailure_icon = \"✗\"\n\n[metadata]\ntime_color = \"2;37\"       # Dim white (ANSI SGR code)\npaneship_color = \"1;32\"   # Bright green (ANSI SGR code)\n\n[metadata.languages.rust]\nicon = \"\"\ncolor = \"1;33\"            # Bright yellow\n\n[metadata.languages.node]\nicon = \"\"\ncolor = \"1;32\"            # Bright green\n\n[metadata.languages.python]\nicon = \"\"\ncolor = \"1;34\"            # Bright blue\n\n[metadata.languages.go]\nicon = \"\"\ncolor = \"1;36\"            # Bright cyan\n```\n\n\u003e **Note**: An emoji-based config option is available in the [example_config.toml](./example_config.toml) file.\n\n### Configuration Reference\n\n#### `[directory]`\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `icon` | String | `\" \"` | Icon prefix before the path. |\n| `truncation_length` | Integer | `3` | Maximum folder depth to display before truncating. |\n| `truncate_to_repo` | Boolean | `true` | If true, automatically hides paths outside the Git repository root when inside a repo. |\n\n#### `[git]`\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `branch_icon` | String | `\" \"` | Prefix icon for Git branch. |\n| `staged_icon` | String | `\"+\"` | Symbol representing staged changes. |\n| `unstaged_icon` | String | `\"\\!\"` | Symbol representing unstaged changes. |\n| `untracked_icon` | String | `\"?\"` | Symbol representing untracked files. |\n\n#### `[status]`\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `success_icon` | String | `\"➜\"` | Prompt cursor character on command success. |\n| `failure_icon` | String | `\"✗\"` | Prompt cursor character on command failure. |\n\n#### `[metadata]`\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `time_color` | String | `\"2;37\"` | ANSI SGR color code for the current time. |\n| `paneship_color` | String | `\"1;32\"` | ANSI SGR color code for package version and prompt metadata. |\n\n---\n\n##  Color Coding Reference\n\nPaneship uses standard ANSI SGR escape sequence parameter codes for styling. You can configure styles using single values or semicolon-separated options:\n\n- `1` (Bold), `2` (Dim/Faint), `4` (Underline)\n- `30`–`37` (Standard foreground colors: Red=31, Green=32, Yellow=33, Blue=34, Magenta=35, Cyan=36, White=37)\n- `1;33` (Bold Yellow)\n- `1;38;5;208` (256-color orange foreground)\n\n---\n\n##  Architecture\n\nTo prevent shell input lag, Paneship implements a lightweight **Client-Daemon-Worker** system architecture:\n\n```mermaid\nsequenceDiagram\n    autonumber\n    participant Client as CLI Client (paneship render)\n    participant Daemon as Daemon (Background Service)\n    participant Cache as Shared Memory Cache\n    participant Worker as Background Worker\n\n    Client-\u003e\u003eDaemon: Send Context (CWD, exit code, width)\n    Daemon-\u003e\u003eCache: Query cache for CWD \u0026 Git state\n    alt Cache Hit (valid state)\n        Cache--\u003e\u003eDaemon: Return cached prompt layout\n        Daemon--\u003e\u003eClient: Instant render response (~2ms)\n    else Cache Miss (or background refresh needed)\n        Daemon-\u003e\u003eWorker: Trigger async check (Git status / language versions)\n        Cache--\u003e\u003eDaemon: Return partially cached data\n        Daemon--\u003e\u003eClient: Renders prompt immediately\n        Worker-\u003e\u003eWorker: Run Gitoxide (gix) \u0026 language detection\n        Worker-\u003e\u003eCache: Populate / Update cache\n    end\n```\n\n### Smart Invalidation\nThe background daemon listens on a local Unix domain socket. It monitors directory structure modifications, active git HEAD states, and exit statuses to automatically invalidate dirty cache entries without adding overhead to your shell prompt rendering thread.\n\n---\n\n##  Benchmarks\n\n*All benchmarks executed on a 2021 MacBook Pro (M1 Pro) with a target budget of 4 tmux panes.*\n\n| Prompt Engine | Average Render Time | Overhead / Shell Lag |\n|---------------|---------------------|----------------------|\n| **Paneship (Daemon Mode)** | **~2.5ms** | None (Imperceptible) |\n| Paneship (Cold Start) | ~35.0ms | Minimal |\n| Starship Prompt | ~20.0ms | Low |\n| Oh My Zsh (default setup) | ~150.0ms+ | High (Noticeable) |\n\n---\n\n##  CLI Commands\n\n### Prompt Rendering\n- `paneship render`: Renders the prompt based on default parameters.\n- `paneship render --shell zsh`: Format ANSI sequences specifically for Zsh.\n- `paneship render --exit-code 1`: Renders the prompt demonstrating a command failure.\n- `paneship render --cwd /path/to/dir`: Mock prompt rendering for a specific directory.\n- `paneship render --width 100`: Specify custom width constraints.\n- `paneship render --duration-ms 500`: Renders the prompt with a command execution duration.\n\n### Daemon Administration\n- `paneship daemon`: Spawns the background socket server daemon.\n- `paneship daemon ping`: Verifies that the daemon is active and responding.\n\n### Performance Testing \u0026 Monitoring\n- `paneship benchmark`: Runs multiple prompt iterations to verify rendering speed.\n- `paneship benchmark --iterations 150 --panes 4`: Test concurrent rendering under load.\n- `paneship benchmark --compare-starship`: Run head-to-head comparison benchmarks.\n- `paneship top`: Real-time monitoring of prompt performance across all active panes.\n\n---\n\n##  Troubleshooting\n\n### My prompt icons are showing as boxes or garbled text?\nPaneship defaults use Nerd Fonts for rich icon displays. Install a font from [nerdfonts.com](https://www.nerdfonts.com/) (e.g., *FiraCode Nerd Font*) and set your terminal emulator to use it. Alternatively, configure standard Unicode emojis or character symbols in `~/.config/paneship/config.toml`.\n\n### The prompt is not showing git updates/metadata?\nEnsure that the daemon process is running. You can check it via:\n```bash\npaneship daemon ping\n```\nIf it is not responding, you can start the daemon manually or verify your shell config eval is running correctly.\n\n---\n\n##  Roadmap\n\n### Core Enhancements\n- [ ] **Cross-Platform Daemon** – Port the Unix domain socket daemon to Windows (Named Pipes) for performance parity on PowerShell/CMD.\n- [ ] **WASM Plugin System** – Allow users to create custom prompt modules using any language that compiles to WebAssembly.\n- [ ] **Interactive Configurator** – A built-in TUI (`paneship config`) to visually customize themes and modules.\n- [ ] **Right-Side Prompt (RPROMPT)** – Native support for right-aligned metadata in Zsh, Fish, and Powerline-compatible shells.\n\n### New Modules\n- [ ] **Infrastructure Suite** – Kubernetes context/namespace, AWS profile, and Docker status modules.\n- [ ] **Nix/Direnv Integration** – Visual indicators for active Nix shells and direnv-loaded environments.\n- [ ] **System Health** – Battery status, CPU load (only when high), and memory pressure indicators.\n- [ ] **Package Manager Updates** – Background checks for pending updates in `brew`, `apt`, or `cargo`.\n\n### Developer Experience\n- [ ] **VSCode \u0026 JetBrains Integration** – Optimized rendering for integrated terminals to avoid icon clipping and alignment issues.\n- [ ] **Enhanced Onboarding** – One-click setup for more esoteric shells and WSL2 environments.\n\n---\n\n##  Contributing\n\nContributions make the open-source community an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\nPlease review the [CONTRIBUTING.md](./CONTRIBUTING.md) guide for details on coding standards, commit messages, and the Pull Request submission process.\n\n---\n\n##  License\n\nDistributed under the MIT License. See [LICENSE](./LICENSE) for details.\n\n---\n\n\u003cdiv align=\"center\"\u003e\nMade with ❤️ by the Paneship community\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandev0x%2Fpaneship","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandev0x%2Fpaneship","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandev0x%2Fpaneship/lists"}