Daily coding-agent work means juggling repos, branches, and sessions, and the current tools are chat-first. pidex is the kitchen bench: every active repo, its branch, its sessions, and what's stale, visible in one glance.
![]() | ![]() |
| App booting, workspaces populate | The workbench, fully loaded |
You need mise and the Pi CLI. The dashboard reads existing sessions from ~/.pi/agent/sessions.
$ git clone git@github.com:echohello-dev/pidex.git &&cd pidex
$ mise install
$ bun install
$ mise run dev # starts Vite + ElectronFor a production build: mise run build then mise run start.
┌────────────────────────────────────────┐
│ Renderer (React 19) │ ← dashboard, session tabs, timeline
└───────────────────┬────────────────────┘
│ typed IPC (window.pidex)
┌───────────────────▼────────────────────┐
│ Main process (Electron) │ ← workspace registry, event normalization
└───────────────────┬────────────────────┘
│ NDJSON over stdio
┌───────────────────▼────────────────────┐
│ Pi runtime (`pi --mode rpc`) │ ← one supervised subprocess per session
└────────────────────────────────────────┘
Pi runs out-of-process over RPC so the UI survives a runtime crash. Pretext handles text measurement so virtualized lists stay smooth in long sessions. Full detail in docs/pidex-architecture.md.
| Layer | Choice |
|---|---|
| Shell | Electron 41, context-isolated, typed window.pidex preload bridge |
| UI | React 19.2, Vite 8 with HMR |
| Text | @chenglou/pretext, DOM-free |
| Language | TypeScript 6 |
| Package manager | Bun |
| Toolchain | mise, all commands via mise run |
Apache-2.0: see the file for full text. Personal project, shared in the open.


