My agents write code faster than I can read it, so I built Treeix
A year ago the slow part of my day was writing code. Now it's reading it.
I usually have a few agents running at once - Claude Code on one branch, Codex on another, each in its own git worktree so they don't step on each other. Starting them takes a minute. Reading what they changed takes the afternoon.
And the reading was never in one place. For a single review of a single agent I had open: the Jira ticket in a browser tab, the Confluence spec in another, the pull request on GitHub (or GitLab, depending on the repo), a terminal where I cd into the worktree and run git diff, and a second terminal where the agent is waiting for me. Then I copy a file path and two line numbers from one window into another, type "please fix this", and start over for the next agent.
None of those tools is bad. The problem is that the review is spread across six of them, and I'm the one carrying context between the tabs.
So I built one window for it
Treeix is a free, open source AI workspace for Mac: everything I use daily for the review, in one app. It finds every repository and worktree on your Mac, opens the diff against the base branch, and keeps the agent session that wrote the code right next to it.
The 80-second tour above covers the whole app. The rest of this post is the why.
It's Apache 2.0 and it has no server. Treeix shells out to the tools you already have and are already signed in to: git for diffs, gh and glab for pull requests, claude and codex for sessions, acli for Jira and Confluence. Your code doesn't go anywhere it wasn't already going.
The loop that matters
The one feature I built the rest around: comments go back to the agent.
You read the diff, drag across the lines that need another pass and write a note. Notes stack up in a drawer while you keep reading, each one holding its file and line range. When you're done, the whole queue goes to the Claude Code or Codex session running in that worktree as its next prompt.
It sounds small, but it's the part that used to eat the most time. No more "in portal.ts around line 20, the pagination..." typed by hand. The agent gets references to the exact lines, and I get to stay in reading mode instead of switching to prompt-writing mode after every comment.
A group per agent
Each agent gets a group: its worktree, its terminal panes and its plan. When a session stops to ask something ("can I run bun test?"), its group gets a badge.
That badge fixed a thing I didn't notice until it was gone: agents sitting finished and waiting for twenty minutes while I was reading something else. Sessions also survive a reload, and closed ones stay in History - reopen one and the agent picks up the same conversation.
Pull requests and tickets, beside the branch
GitHub and GitLab pull requests come in with their review threads, viewed files, conflicts and CI state. A reviewer's comment turns into an agent task with one click, so I don't retype someone else's feedback into a prompt anymore.
Jira work items are grouped by whose move it is - mine, the reviewer's, or blocked - and you can start a worktree straight from a ticket. The Confluence spec opens next to the code it describes. Both are off by default, since not everyone lives in Atlassian.
The small stuff that added up
Once the main loop worked, I kept noticing the other reasons I left the review. Each one became a tab:
- A browser with DevTools, console and network capture, for the app the agent is building. Comments on page elements go to the agent the same way code comments do.
- An editor for the two-line fix that isn't worth a prompt. Every save keeps a snapshot.
- An Env tab with every .env file across the worktrees: which variables are secret, which are exposed to the browser, which are missing compared to
main. Agents add env variables more often than they tell you about it. - Usage limits for Claude and Codex in the title bar, so a long run doesn't die on a limit reset you forgot about.
Everything is a plugin
That list could easily turn into a bloated app, so every feature above is a plugin. Switch one off in Settings and its code never loads. If you only want diffs and terminals, that's what you get.
It also means adding your own is small: a package.json and a renderer/index.tsx. The plugin docs cover the contract.
What it isn't (yet)
To be honest about the rough edges: it's Apple silicon only, macOS 14 or newer, and it's an Electron app. And it's built around how I work - Claude Code, Codex, git worktrees, GitHub or GitLab, sometimes Jira. If your setup is different, I'd like to hear where it breaks.
What's next
- A mobile app, to keep an eye on your agents when I'm away from the Mac.
- A proper UI. It grew one plugin at a time, and it shows. Every screen gets a design pass.
- A history archive: past agent sessions kept, searchable and one click from reopening.
Come build it with me
Treeix is young, so a contribution of any size shows up in the next release. Pick a roadmap item and open an issue saying you're on it, write a plugin for the tool you can't live without, or just tell me where it breaks with your setup. CONTRIBUTING.md has the setup and the house style.
Try it
- Download: treeix.dyvertex.com
- Source: github.com/zaxovaiko/treeix, a star helps other people find it
- Tour: the whole app in 80 seconds
- Contribute: open issues and the roadmap
If it saves you an afternoon, open an issue with the thing you would fix next. And I'm curious - how do you review what your agents wrote today? Do you read every diff, or trust the tests?