Inspiration

Honestly this started because I kept losing track of my own agents. I had a bunch of Claude Code sessions running at once, some on my main PC, a couple on another machine in the next room, and plain terminal tabs just don't tell you which one is working, which one is sitting there waiting for you, or come back the way you left them after a reboot. So I built the workspace I wished existed. Used it every day for months and finally put it out last week as Jamat (Just Another Multi-Agent Terminal).

The whole thing is built around an agent adapter layer, because I never wanted the workspace to care which agent is in a tab. Codex was already in the new-tab picker, just as an empty stub. Build Week was the kick I needed to actually wire it up.

What it does

It's a desktop app for running lots of coding agents at once. Everything sits in one tiling workspace, each tab has a little dot telling you if the agent is working, waiting on you, or done, and it works across all your machines - you can even take over (or hand a task to) an agent on another PC. For Build Week I added a Codex adapter, so now Codex runs right next to Claude Code in the same tabs.

How I built it

It's a TypeScript monorepo. There's a core/ with no dependencies (types, config, the agent adapters) and an Electron + React app on top (dockview for the tiling, xterm.js and node-pty for the actual terminals). Adding Codex was really just one more adapter behind the interface I already had: spawn the Codex CLI as a pty process, send it prompts, and then get Jamat to actually understand what its terminal is printing. It already reads each agent's output through a per-agent extractor, so Codex just became a new one sitting next to the Claude Code one instead of me rewriting the whole thing.

Challenges & what I learned

Turns out every agent's terminal looks different. Codex and Claude Code print differently, they signal that they're done differently, they even take a pasted prompt differently, so a lot of my status detection was quietly assuming Claude Code and had to be reworked to stop caring which agent it was watching. Bigger takeaway for me: the models keep getting closer, but the thing you actually live in all day is the harness. Almost none of the work was "call Codex" - it was making everything around it treat the agents as the same.

Built With

Share this project:

Updates