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.


