mngr
activeMonitor Claude Code and Codex sessions from one window.
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 overlayclaude-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.