Sai Byrraju
< Back to projects

mngr

active

Monitor Claude Code and Codex sessions from one window.

RustTypeScriptReactViteTauri v2Windows Named PipesPowerShell

Why I built this

I run multiple Claude Code and Codex sessions at the same time and kept losing track of which terminal was doing what. One session is waiting for approval, another finished ten minutes ago, and a third is stuck on a question I did not see. I built mngr to put all of that in one place without taking up screen space.

How it works

agent hooks → named pipe → rust backend → tauri events → react overlay

claude-hook.ps1 and codex-hook.ps1 send agent lifecycle events to a Windows named pipe. lib.rs maintains a state machine per session (Working, WaitingForApproval, WaitingForInput, Idle, Done) and emits Tauri events. React renders a thin edge rail that expands on hover. Permissions use response files that hooks synchronously wait for.

Decisions

Tauri + Rust over Electron

The tool watches other tools, so it has to be lighter than them. The binary is about 4MB.

Click-through overlay with selective interactivity

A Rust cursor stream and elementFromPoint switch the rail between passive and interactive states.

Terminal-level window jumping on Windows

Windows makes focusing a specific terminal instance difficult, so I implemented terminal-level jump and Claude Desktop deep links.

Named pipes over WebSockets

The sessions are local. Named pipes are simpler and do not need a port.