herdr-gpui

Ochiq manbalardan

macOS, Linux va Windows uchun Herdr’ning mahalliy klienti, Rust va GPUI yordamida yaratilgan. Terminal seanslari, ish maydonlari, Git worktrees va agent faoliyatini mahalliy Herdr daemoni orqali koʻring.

Mashina tarjimasi · Asl matnni koʻrsatish

Native client for Herdr on macOS, Linux, and Windows, built with Rust and GPUI. View terminal sessions, workspaces, Git worktrees, and agent activity through your local Herdr daemon.

IlovaKategoriya: Desktop ilovalar · Dasturlash · UtilitalarOpen sourcemaʼlumot tekshirilgan: 16-okt, 2026

Sharh

  • ai-agents
  • desktop-app
  • developer-tools
  • git-worktrees
  • gpui
  • herdr
  • macos
  • rust
  • terminal

Oʻrnatish

Buyruqlar faqat koʻrsatiladi, marketpleys ularni bajarmaydi. Rasmiy hujjatlar bilan solishtiring.

Moslik

«Nomaʼlum» dalil topilmaganini bildiradi, mahsulot mos emasligini emas.
PlatformaHolatArxitekturaDalilIshonchlilik
WindowsMosarm64v20261028.1 relizidagi rasmiy yigʻma: Herdr-20261028.1-aarch64-pc-windows-msvc-setup.exe0.70
Mosx86_64v20261028.1 relizidagi rasmiy yigʻma: Herdr-20261028.1-x86_64-pc-windows-msvc-setup.exe0.70
macOSMosuniversalv20261028.1 relizidagi rasmiy yigʻma: Herdr-20261028.1-universal-apple-darwin.dmg0.70
LinuxMosarm64v20261028.1 relizidagi rasmiy yigʻma: Herdr-20261028.1-aarch64-unknown-linux-gnu.deb0.70
Mosx86_64v20261028.1 relizidagi rasmiy yigʻma: Herdr-20261028.1-x86_64-unknown-linux-gnu.deb0.70

Relizlar

tekshirilgan: 30-okt, 2026
v20261028.1.0Oxirgi28-okt, 2026Rasmiy manba ↗

20261028.1.0 versiyasi fayllari

Marketpleys bu fayllarni saqlamaydi: yuklab olish rasmiy manbadan. Biz ularni skanerlamaganmiz.
FaylPlatformaHajmSHA-256Rasmiy manbadan yuklab olish
Herdr-20261028.1-aarch64-pc-windows-msvc-setup.exewindows · arm64 · exe23,5 MB8ba6110db06a…Rasmiy manba ↗
Herdr-20261028.1-aarch64-pc-windows-msvc.zipwindows · arm64 · zip33,4 MB67cb1cb9b0f7…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.deblinux · arm64 · deb48,9 MB68b332716b46…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.pkg.tar.zstlinux · arm64 · tarball45 MBf5c207606c39…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.rpmlinux · arm64 · rpm48,5 MB2b910f4eb788…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.tar.gzlinux · arm64 · tarball47,3 MB5e2205cbc404…Rasmiy manba ↗
Herdr-20261028.1-universal-apple-darwin.dmgmacos · universal · dmg86,5 MB2ac8b98ca098…Rasmiy manba ↗
Herdr-20261028.1-x86_64-pc-windows-msvc-setup.exewindows · x86_64 · exe25,6 MB621f8a04f07a…Rasmiy manba ↗
Herdr-20261028.1-x86_64-pc-windows-msvc.zipwindows · x86_64 · zip35,8 MB8f952291a1c5…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.deblinux · x86_64 · deb49 MB9940a3a1d92d…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.pkg.tar.zstlinux · x86_64 · tarball46,2 MBea1e119c0735…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.rpmlinux · x86_64 · rpm48,8 MB74aba3a381b1…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.tar.gzlinux · x86_64 · tarball48,2 MB2ab531fbcd93…Rasmiy manba ↗
herdr-gpui-20261028.1-aarch64-unknown-linux-gnu-update.tar.gzlinux · arm64 · tarball37,5 MB9f33ab68d671…Rasmiy manba ↗
herdr-gpui-20261028.1-macos-universal.app.tar.gzmacos · universal · app_bundle76,2 MB923f7cb74fe0…Rasmiy manba ↗
herdr-gpui-20261028.1-x86_64-unknown-linux-gnu-update.tar.gzlinux · x86_64 · tarball38 MBac0dce5575ff…Rasmiy manba ↗
Herdr-20261028.1-aarch64-pc-windows-msvc-setup.exe.sha256nazorat summalari117 Bf41795ccb201…Rasmiy manba ↗
Herdr-20261028.1-aarch64-pc-windows-msvc-setup.exe.sha512nazorat summalari181 Bdd60d88a18b9…Rasmiy manba ↗
Herdr-20261028.1-aarch64-pc-windows-msvc.zip.sha256nazorat summalari111 B58a87d6c1f98…Rasmiy manba ↗
Herdr-20261028.1-aarch64-pc-windows-msvc.zip.sha512nazorat summalari175 Bbc389a9d1163…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.deb.sha256nazorat summalari113 B70c5ef4161a4…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.deb.sha512nazorat summalari177 B4a71737fe648…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.pkg.tar.zst.sha256nazorat summalari121 Bfb9b0154b66e…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.pkg.tar.zst.sha512nazorat summalari185 Bd0e05891c306…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.rpm.sha256nazorat summalari113 B163f50df9e55…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.rpm.sha512nazorat summalari177 B0195fccad1fe…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.tar.gz.sha256nazorat summalari116 B4fd42932d9ac…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.tar.gz.sha512nazorat summalari180 Bc65f535b74ed…Rasmiy manba ↗
Herdr-20261028.1-universal-apple-darwin.dmg.sha256nazorat summalari110 B11fb04ce52e3…Rasmiy manba ↗
Herdr-20261028.1-universal-apple-darwin.dmg.sha512nazorat summalari174 Bc42cc9454383…Rasmiy manba ↗
Herdr-20261028.1-x86_64-pc-windows-msvc-setup.exe.sha256nazorat summalari116 Be4b773a6eeb2…Rasmiy manba ↗
Herdr-20261028.1-x86_64-pc-windows-msvc-setup.exe.sha512nazorat summalari180 Bb320992126d1…Rasmiy manba ↗
Herdr-20261028.1-x86_64-pc-windows-msvc.zip.sha256nazorat summalari110 B727b7699ee82…Rasmiy manba ↗
Herdr-20261028.1-x86_64-pc-windows-msvc.zip.sha512nazorat summalari174 B1ac24a24df00…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.deb.sha256nazorat summalari112 B41d46af64696…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.deb.sha512nazorat summalari176 Ba276e84672ad…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.pkg.tar.zst.sha256nazorat summalari120 B1a0a44e2cc92…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.pkg.tar.zst.sha512nazorat summalari184 B5bccea2a57db…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.rpm.sha256nazorat summalari112 Bc266c462ac30…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.rpm.sha512nazorat summalari176 B11558480d096…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.tar.gz.sha256nazorat summalari115 B162692e7ede5…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.tar.gz.sha512nazorat summalari179 Bce0fd3ee25e4…Rasmiy manba ↗
Herdr-20261028.1.cdx.json.sha256nazorat summalari92 B2a0a6e9084d9…Rasmiy manba ↗
Herdr-20261028.1.cdx.json.sha512nazorat summalari156 B054d4d553a1c…Rasmiy manba ↗
SHA256SUMSnazorat summalari12,6 KB96e902746f10…Rasmiy manba ↗
herdr-gpui-20261028.1-aarch64-unknown-linux-gnu-update.tar.gz.sha256nazorat summalari128 B8ae77732b53b…Rasmiy manba ↗
herdr-gpui-20261028.1-aarch64-unknown-linux-gnu-update.tar.gz.sha512nazorat summalari192 B2ae7a441b274…Rasmiy manba ↗
herdr-gpui-20261028.1-macos-universal.app.tar.gz.sha256nazorat summalari115 B5272e29a2234…Rasmiy manba ↗
herdr-gpui-20261028.1-macos-universal.app.tar.gz.sha512nazorat summalari179 Bdd3604000481…Rasmiy manba ↗
herdr-gpui-20261028.1-x86_64-unknown-linux-gnu-update.tar.gz.sha256nazorat summalari127 B0505f31c4c63…Rasmiy manba ↗
herdr-gpui-20261028.1-x86_64-unknown-linux-gnu-update.tar.gz.sha512nazorat summalari191 B926b22fc15a7…Rasmiy manba ↗
package-manifest.json.sha256nazorat summalari88 B3c740cf82cbe…Rasmiy manba ↗
package-manifest.json.sha512nazorat summalari152 B350dd6351cbe…Rasmiy manba ↗
package-manifest.sig.sha256nazorat summalari87 Bc3bba6dc1a6b…Rasmiy manba ↗
package-manifest.sig.sha512nazorat summalari151 B96e853099477…Rasmiy manba ↗
update-manifest.json.sha256nazorat summalari87 Baa334eaaf1b6…Rasmiy manba ↗
update-manifest.json.sha512nazorat summalari151 B9295ed8096d4…Rasmiy manba ↗
package-manifest.jsonboshqa1,2 KB385f5d595369…Rasmiy manba ↗
update-manifest.jsonboshqa634 Badfa380ee8a2…Rasmiy manba ↗
Herdr-20261028.1.cdx.jsonSBOM1,2 MB95ae99e51b96…Rasmiy manba ↗
Herdr-20261028.1-aarch64-pc-windows-msvc-setup.exe.crtimzo3,2 KB5402912a7309…Rasmiy manba ↗
Herdr-20261028.1-aarch64-pc-windows-msvc-setup.exe.sigimzo96 B3855cf98fa26…Rasmiy manba ↗
Herdr-20261028.1-aarch64-pc-windows-msvc.zip.crtimzo3,2 KB6230a9ebc90d…Rasmiy manba ↗
Herdr-20261028.1-aarch64-pc-windows-msvc.zip.sigimzo96 Bb6d9c6db5c6d…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.deb.crtimzo3,2 KB41a9d8911989…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.deb.sigimzo96 B66ba2c2c13f8…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.pkg.tar.zst.crtimzo3,2 KBd412e27acb57…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.pkg.tar.zst.sigimzo96 Bba0a5f787c16…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.rpm.crtimzo3,2 KB4ba57561c2d3…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.rpm.sigimzo96 Bd03b527dabbc…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.tar.gz.crtimzo3,2 KB2d92a0e6c513…Rasmiy manba ↗
Herdr-20261028.1-aarch64-unknown-linux-gnu.tar.gz.sigimzo96 B29cc84a7fdb9…Rasmiy manba ↗
Herdr-20261028.1-universal-apple-darwin.dmg.crtimzo3,2 KB742030ff54b9…Rasmiy manba ↗
Herdr-20261028.1-universal-apple-darwin.dmg.sigimzo96 Ba6cb87a76c58…Rasmiy manba ↗
Herdr-20261028.1-x86_64-pc-windows-msvc-setup.exe.crtimzo3,2 KB7e0a8bf9508c…Rasmiy manba ↗
Herdr-20261028.1-x86_64-pc-windows-msvc-setup.exe.sigimzo96 B8c9ea485545b…Rasmiy manba ↗
Herdr-20261028.1-x86_64-pc-windows-msvc.zip.crtimzo3,2 KB46a229046c0d…Rasmiy manba ↗
Herdr-20261028.1-x86_64-pc-windows-msvc.zip.sigimzo96 Bc1e6bd06a245…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.deb.crtimzo3,2 KB4d3d31e9ee77…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.deb.sigimzo96 B86e0eecdc30b…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.pkg.tar.zst.crtimzo3,2 KB795675925d33…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.pkg.tar.zst.sigimzo96 B03264659675c…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.rpm.crtimzo3,2 KB6891077ac65a…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.rpm.sigimzo96 B34c9bf668f26…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.tar.gz.crtimzo3,2 KBb1634b41ff92…Rasmiy manba ↗
Herdr-20261028.1-x86_64-unknown-linux-gnu.tar.gz.sigimzo96 Bad1b9a6a167a…Rasmiy manba ↗
Herdr-20261028.1.cdx.json.crtimzo3,2 KB1a1887f944fe…Rasmiy manba ↗
Herdr-20261028.1.cdx.json.sigimzo96 B47f83a6cf273…Rasmiy manba ↗
herdr-gpui-20261028.1-aarch64-unknown-linux-gnu-update.tar.gz.crtimzo3,2 KB6f70931063ee…Rasmiy manba ↗
herdr-gpui-20261028.1-aarch64-unknown-linux-gnu-update.tar.gz.sigimzo96 Bcf0859f090be…Rasmiy manba ↗
herdr-gpui-20261028.1-macos-universal.app.tar.gz.crtimzo3,2 KB048d330e9be1…Rasmiy manba ↗
herdr-gpui-20261028.1-macos-universal.app.tar.gz.sigimzo96 Bd91e6d7c9cf9…Rasmiy manba ↗
herdr-gpui-20261028.1-x86_64-unknown-linux-gnu-update.tar.gz.crtimzo3,2 KBea20661af254…Rasmiy manba ↗
herdr-gpui-20261028.1-x86_64-unknown-linux-gnu-update.tar.gz.sigimzo96 Bc2c5d750034e…Rasmiy manba ↗
package-manifest.json.crtimzo3,2 KB00ccbb3f6d3a…Rasmiy manba ↗
package-manifest.json.sigimzo96 B6e1db4e9f33d…Rasmiy manba ↗
package-manifest.sigimzo64 B41f241411d24…Rasmiy manba ↗
package-manifest.sig.crtimzo3,2 KB81dbba187423…Rasmiy manba ↗
package-manifest.sig.sigimzo96 B8009f7ae409c…Rasmiy manba ↗
update-manifest.json.crtimzo3,2 KB6e691bc853a6…Rasmiy manba ↗

Relizlar tarixi

Sifat profili

algoritm quality-v1.0 · baholangan 16-okt, 2026
Sifat bahosi93
Xavf bahosi0
Ishonchlilik 1.00
Sifat bahosi va xavf bahosi — turli koʻrsatkichlar. Yuqori sifat xavfsizlikni kafolatlamaydi.

Baho tarkibi

Qoʻllab-quvvatlash · 2020
last activity 1 days ago
Hujjatlar · 1515
README 19533 chars, description present
Foydalanishga tayyorlik · 1515
install instructions: yes; releases: yes
Metamaʼlumotlar · 1010
4/4 of description, homepage, license, topics
Relizlar · 1010
10 release(s), latest 1 days ago
Kategoriya aniqligi · 105
classifier confidence 0.5
Ommaboplik · 108
1403 stars (log-dampened, 10k = max)
Litsenziya aniqligi · 55
SPDX Apache-2.0
Hamjamiyat · 55
issues enabled, 107 forks

Litsenziya

Apache-2.0
Litsenziya maʼlumrepozitoriy xostingi maʼlumotlariga koʻra

Bu katalog siyosati holati, yuridik xulosa emas.

Manbalar

github.com/penso/herdr-gpuiAsosiy★ 1 403 yulduzfaollik: 15-okt, 2026Asosiy repozitoriy · Ishonchlilik 1.00

Sharhlar

Sharh yozish uchun kiring

Hali sharhlar yoʻq.

Muqobillar

README

penso/herdr-gpui dan · litsenziya Apache-2.0 · yuklangan 30-okt, 2026

A native Rust/GPUI client for macOS, Linux, and Windows, for a Herdr daemon you installed yourself. It paints the daemon's terminal cells, split panes included, without running another terminal emulator or wrapping the TUI.

Unaffiliated project. Not affiliated with, endorsed by, or supported by Herdr or herdr.dev.

Gallery

Also included: saved SSH hosts with file copies, inline images, clickable links, code navigation that jumps to a symbol, file, or printed path:line in your terminal editor, file drops, editor groups, and system notifications, sounds, and a Dock badge (on Windows, a taskbar badge) when an agent needs you.

Install

Install the Herdr daemon first; this app is only its client. It starts an already-installed local herdr server when the target session is absent, but never installs or upgrades a daemon. Explicitly confirming session deletion stops that named session first; closing or removing the GUI leaves daemon sessions and shared Herdr configuration intact.

Then install the latest stable release:

PlatformCommand
macOSbrew install penso/tap/herdr-gpui
Linux (APT, DNF or pacman)curl -fsSL https://herdrui.dev/install.sh | sh
Windows (PowerShell)irm https://herdrui.dev/install.ps1 | iex

Details, manual downloads, and other methods follow. Coding agents can read herdrui.dev/llms.txt for the same steps.

macOS with Homebrew

Requires Homebrew and macOS 14.2 Sonoma or newer, on Apple Silicon or Intel. The cask installs the signed, notarized universal app.

brew install penso/tap/herdr-gpui
open -a Herdr

brew install resolves casks directly, so --cask is not required. To update it later, or to install by its short name, tap once first:

brew tap penso/tap
brew install herdr-gpui

The cask is published from the tap by the release workflow. A cask install updates itself through Homebrew: the in-app updater detects that Homebrew owns the bundle and runs brew upgrade --cask herdr-gpui for you, so Homebrew's records stay correct. If its metadata is stale, the updater runs brew update and retries once. The update panel shows progress throughout. macOS .dmg, Linux packages, and Windows installers and .zips are also published on Releases.

Betas are published as GitHub prereleases before being promoted to stable. To try them, turn on Settings > General > Install beta releases ([updates] channel = "beta"); turning it off never downgrades. Betas never reach the Homebrew tap, so a Homebrew install updates in place while the setting is on, and Homebrew takes it back at its next upgrade.

Linux packages

Each release publishes x86_64 and ARM64 builds as a .deb, an .rpm, an Arch Linux package, and a plain tarball, all containing the same executable. They need glibc 2.39 or newer (Ubuntu 24.04, Debian 13, Fedora 40, current Arch, or later). The install script picks the package for your architecture and package manager, checks it against the release's published SHA-256, and installs it with sudo:

curl -fsSL https://herdrui.dev/install.sh | sh

Read it first at site/install.sh. To install by hand instead, download the file for your architecture from Releases, then:

sudo apt install ./Herdr-VERSION-x86_64-unknown-linux-gnu.deb      # Debian, Ubuntu
sudo dnf install ./Herdr-VERSION-x86_64-unknown-linux-gnu.rpm      # Fedora
sudo pacman -U Herdr-VERSION-x86_64-unknown-linux-gnu.pkg.tar.zst  # Arch Linux

The package manager pulls in the runtime libraries, including the Vulkan loader; a Vulkan driver for your GPU must also be present. App Updates detects which package manager owns the installed executable, downloads the matching .deb, .rpm, or Arch package, verifies its signed release metadata and checksum, then installs it through APT, DNF, or pacman with a PolicyKit authentication prompt. The authorized helper verifies and installs a protected root-owned copy. Choose Restart after installation; daemon and terminal sessions stay running. This requires pkexec and your desktop's PolicyKit authentication agent. Older builds that report “Package-managed installations cannot self-update” need one manual package upgrade to gain this support. Before a release, CI installs each package on Ubuntu 24.04, Debian 13 and Fedora 42, and the x86_64 Arch package on Arch Linux, then checks that the executable finds every library. The ARM64 Arch package targets Arch Linux ARM and is not install-tested.

On NixOS, or anywhere with Nix, build from source with the repository's flake:

nix run github:penso/herdr-gpui
# or add it to a configuration: inputs.herdr-gpui.url = "github:penso/herdr-gpui";
# then environment.systemPackages = [ inputs.herdr-gpui.packages.${system}.default ];

The flake builds with the toolchain pinned in rust-toolchain.toml on x86_64 and ARM64 Linux. Like the packages, it never updates itself.

Windows installers

In PowerShell, on x86_64 or ARM64:

irm https://herdrui.dev/install.ps1 | iex

The script (site/install.ps1) downloads the zip for your architecture, checks its published SHA-256, installs herdr-gpui.exe and herdr-gpui-launcher.exe under %LOCALAPPDATA%\Programs\Herdr UI, adds that directory to your user PATH, and creates a Herdr UI Start menu shortcut that opens the launcher. Prefer a regular installer? Each release also has Herdr-VERSION-x86_64-pc-windows-msvc-setup.exe and Herdr-VERSION-aarch64-pc-windows-msvc-setup.exe, which install the same files to the same place for the current user, without administrator rights, and add an uninstaller under Settings > Apps. Either way, the app updates itself from Check for Updates: it downloads the new installer, checks it against the release's signed manifest and its Authenticode publisher, runs it silently, and reopens. See Windows for what works on the platform.

Both add Open in Herdr UI to folders in File Explorer, and to the empty space inside one, for your user only. It runs herdr-gpui open on the folder through the launcher, so no console window appears: the running app focuses the folder's workspace or starts one there, and the app is started first when it is not running. On Windows 11 the entry is under Show more options, because the compact menu only lists commands of packaged apps. To remove everything install.ps1 added, run it with -Uninstall:

& ([scriptblock]::Create((irm https://herdrui.dev/install.ps1))) -Uninstall

Uninstalling the regular installer from Settings > Apps removes the entry too.

From source

Install Rust/rustup and, on macOS, the Xcode command-line tools. The repository pins Rust 1.96.1 and GPUI 0.3.6 (the gpui-pre snapshot crate); the Rust version is declared in rust-toolchain.toml and mirrored in mise.toml, so mise install also provisions it.

git clone https://github.com/penso/herdr-gpui.git
cd herdr-gpui
just run

just run uses the optimized release build; just run-debug is notably slower with a dense terminal on screen. On macOS both build a local bundle identified as so.pen.herdr-gpui.dev, so it never shares a Dock tile or icon cache with an installed release. Without just: cargo run --locked --release -p herdr-gpui.

To compile and install the optimized executable on macOS, Linux, or Windows:

just install

This installs herdr-gpui (herdr-gpui.exe on Windows, with herdr-gpui-launcher.exe beside it to open the app without a console window) into Cargo's bin directory, normally ~/.cargo/bin or %USERPROFILE%\.cargo\bin, and replaces an earlier installation. Keep that directory on PATH; set CARGO_INSTALL_ROOT to use a different installation root (the executable goes in its bin directory). The build uses the pinned lockfile and default features. On macOS this installs the standalone executable; use Homebrew above for the full app bundle. Linux needs the build dependencies below; Windows needs the Visual Studio C++ build tools and Windows SDK for the MSVC Rust toolchain. Without just: cargo install --locked --force --path crates/herdr-gpui --bin herdr-gpui.

Running cargo test or just ci on Unix also requires python3 and jq on PATH: the usage-provider tests exercise each JSON parser explicitly. The Ubuntu dependency helper below installs both; on macOS, use brew install python jq.

Linux Builds

Application shortcuts use Ctrl+Shift on Linux, including Ctrl+Shift+T for a new tab and Ctrl+Shift+C/V for copy/paste, and Windows uses the same profile. Customize them from Herdr > Keyboard Shortcuts; see keyboard shortcuts.

On Ubuntu 24.04 (x86_64 or ARM64), run bash scripts/install-linux-deps.sh before building. This installs GPUI's X11/Wayland/font development dependencies and libasound2-dev for Rodio/CPAL native audio. CI and release builds use the same script. Linux binaries require the system ALSA shared library (libasound2t64 on Ubuntu 24.04), a configured default audio device, and Vulkan for rendering. Audio normally routes through the desktop's ALSA plugin configuration; no CLI audio player is required. Terminal clipboard paste needs wl-paste (the wl-clipboard package) on Wayland or xclip on X11; the distribution packages and Nix build include these dependencies. Custom notification sounds are MP3 only. See notification sounds.

Windows

Windows is tested natively. On every change, CI checks formatting, lints every target and feature, and runs workspace tests with default and all features on windows-2025 (x86_64) and windows-11-arm (ARM64). On the same two runners it also opens real windows in a desktop session for the native sidebar, notification, and paint-probe fixtures. On x86_64 it runs the live GUI test against a pinned, checksummed Herdr herdr.exe in an isolated sandbox, which creates tabs, splits and workspaces with the keyboard, types into a PowerShell pane and reads its output back, resizes the window, reconnects, follows a workspace another client pushes, and opens a second window. Herdr publishes no ARM64 Windows build, and under x64 emulation its panes do not act on Enter, so the live test is not run on ARM64. A release-mode run then holds the dense terminal's hover, scroll, and redraw frames to a p95 budget with real Win32 mouse and wheel messages. The release workflow installs and uninstalls both signed installers. Hosted runners have no GPU, so CI proves rendering on Direct3D's software rasterizer; IME composition, the clipboard, and taskbar pinning are still checked by hand (Windows QA).

Local connections use the named pipe the Windows daemon binds, and configuration and state follow its %APPDATA% / %LOCALAPPDATA% layout. herdr-gpui COMMAND reaches the running app over a named pipe that only your Windows user can open and that rejects remote clients; see the command line. A Herdr daemon inside a WSL distribution can be added as a device from Add Device…; see WSL distributions. GitHub sign-ins are saved in Windows Credential Manager and avatars are cached under %LOCALAPPDATA%\herdr; see saved sign-ins and the avatar cache. Saved SSH hosts are unavailable and report that plainly; see the GUI README. Shortcuts use Ctrl, not the Win key, with the Linux defaults (Ctrl+Shift+T, Ctrl+Shift+P, Ctrl+Shift+Q); see keyboard shortcuts. The taskbar button shows a badge while agents need you and progress for long operations, the jump list offers recent workspaces and devices, clicking a notification brings its pane forward, and both installers register herdr-gpui:// links that open a checkout or a device in the running app; see Windows shell.

Windows keep the system title bar, so Snap Layouts, drag-to-snap, and the window menu are the system's own; the title bar follows the app's light or dark theme. On Windows 11 a translucent window can blur with acrylic or Mica, and accent = "system" takes the accent from Windows. Narrator and other screen readers get the terminal's text and the title bar and tab strip controls by name; what is not exposed yet is listed there.

Each release publishes Herdr-VERSION-x86_64-pc-windows-msvc.zip and Herdr-VERSION-aarch64-pc-windows-msvc.zip (native ARM64), each containing herdr-gpui.exe, herdr-gpui-launcher.exe, and their license notices, beside the matching -setup.exe installers. They carry the same checksums, Sigstore signatures, and build provenance as the other assets. Once Windows signing is set up, both executables, the installers, and their uninstaller are Authenticode-signed, and a release publishes only after Windows accepts those signatures; until then they ship unsigned, are not submitted to winget, and do not update themselves (see scripts/release/README.md). A signed copy installed by the installer, winget, or the install script updates itself in the app: the installer it downloads must match the release's Ed25519-signed windows-manifest.json and carry a valid signature from Herdr UI's publisher, or it never runs (see App Updates). The app registers with Restart Manager, so an update, or a restart with Restart apps turned on, reopens it. Settings > General > Launch at login (off by default) opens it when you sign in; see launch at login. A crash leaves a minidump and a text report beside the log, never uploaded; see crash reports. A copy run from anywhere else does not update itself; download each new release manually. herdr-gpui.exe is a console program, because it is also the command line agents and scripts run. Open the app with herdr-gpui-launcher.exe (the Start menu shortcut's target), which starts herdr-gpui.exe without a console window.

How it connects

flowchart LR
    subgraph app["Herdr UI (this repo)"]
        ui["herdr-gpui<br/>window, painting, input"]
        client["herdr-client<br/>discovery, socket worker, sessions"]
        proto["herdr-protocol<br/>framing, surface patches"]
        ui --> client --> proto
    end

    proto <-->|"bincode frames over<br/>herdr-client.sock"| daemon

    subgraph host["Your machine or a saved SSH host"]
        daemon["herdr daemon"]
        daemon --> terms["terminal processes,<br/>workspaces, agents"]
    end

The daemon owns the terminals and all session state. The GUI attaches to the binary client socket, renders the surfaces it is sent, and sends semantic input back. Closing or detaching the GUI leaves the daemon and its terminals running.

macOS Git permission errors

If Git in a Herdr UI terminal reports Operation not permitted, restarting the GUI alone does not restart an already-running daemon. For a recovery option and its risks, see the macOS Git permission troubleshooting section.

Browser tabs are the exception: Herdr has no browser panes, so web pages shown beside a workspace's terminals belong to the GUI alone. Agents in your panes open them with herdr-gpui browser open URL, which reaches the running app over a local socket of its own. The same command line reaches the rest of what only the GUI keeps: its windows and tabs, worktree notes, checkpoints, forwarded ports, and its settings.

Audio Test

The QA menu is off by default in every build, including published releases; turn on Settings > General > QA menu (qa_menu = true under [features]) to show it. To manually test native audio, choose QA > Play Sound. It plays the built-in Done sound on the background Rodio worker, even without a daemon or active pane and even with notifications muted. HERDR_DISABLE_SOUND and NEXTEST still suppress playback. See notification sounds for queue limits and playback details.

Performance

just test-perf opens a daemon-free native fixture with a dense 160x50 terminal, 40 workspaces, and 40 agents. It dispatches real window-local mouse/scroll events and measures cold frames, warm hover, and both sidebar lists' scrolling. It also asserts that unchanged terminal cells need zero new text-shaping calls, validates batched background counts, and compares cached glyphs with freshly shaped ones.

On the development M4 Max, caching and background batching reduced release hover p95 from about 51 ms to 12 ms, and scrolling from 56 ms to 14 ms. The benchmark measures CPU event-to-scene construction, not GPU completion or pointer-to-screen latency. Use just test-perf 50 to set a different calibrated budget; native tests remain opt-in rather than imposing machine-dependent timings on hosted CI.

See PERFORMANCE.md for the before/after results, reference mode, workload, deterministic checks, and remaining limitations.

Pull request reviews

An hourly workflow closes open PRs, including drafts, when their head commit's committer timestamp is more than 48 hours old and either:

  • Greptile's latest summary scores that exact commit below 5/5.
  • The latest pull-request run of the repository's CI workflow (ci.yml) for that commit has completed with failure, timed_out, or startup_failure.

Comments and label changes do not reset the clock. A missing, malformed, or outdated review does not count as a low score. CI failure can close a PR even with a 5/5 score or no Greptile review. Missing, pending, cancelled, skipped, and successful CI runs do not count as failures; newer runs supersede older failures.

The workflow posts an explanation and keeps the branch. Address the feedback or CI failures, push changes, and reopen the PR for another review. Scheduled checks start once the workflow is on main; GitHub may delay scheduled runs. Maintainers can also run it manually from Actions on main.

Preview the policy locally without changing any PRs using an authenticated GitHub CLI:

python3 scripts/close-low-confidence-prs.py --repo penso/herdr-gpui
just test-pr-closure

License

Apache-2.0. See LICENSE and NOTICE, plus the upstream protocol attribution for the vendored parts of herdr-protocol.

Star History

Repozitoriyni ochish ↗