Dev.to AI πŸ€– Ai πŸ‘ 0 πŸ“– 2 min read

I run 10+ Claude Code sessions at once, so I built a Mac app to point at what needs fixing

Hi! This is my first public project, so be gentle (but honest). πŸ™‚ The problem At my startup I run more than 10 Claude Code sessions at the same time, one per feature, each in its own git worktree. The fixes w

I run 10+ Claude Code sessions at once, so I built a Mac app to point at what needs fixing

Hi! This is my first public project, so be gentle (but honest). πŸ™‚

The problem

At my startup I run more than 10 Claude Code sessions at the same time, one per feature, each in its own git worktree. The fixes were fast. Explaining where wasn't:

screenshot β†’ paste β†’ "the button on the right, no, the other one" β†’ switch tab… wrong tab.

With one agent that's annoying. With ten, it's where most of my time went.

What I built

Aki is a small Mac app for that. Press β‡§βŒ˜A, point at anything on the screen, write what should change, and press ⌘⏎. The note lands in the right agent's terminal, with the exact element. No screenshot.

Marking an element in Chrome with Aki and writing what should change

In Chrome, Brave, Edge and Arc it asks the page (through Apple Events, no extension) for what's under your pointer: a unique CSS selector, the text, the HTML, and the React component's file in dev builds. The arrow keys walk the screen; ⇧ + arrow adds the next thing to the mark.

Not just the browser

A terminal error, a file in Finder, a Figma frame. If it's on your screen, you can mark it. Outside the browser Aki uses the macOS Accessibility tree, and areas work in any app.

Marking a terminal error and a file in Finder

The right session, by itself

This is the part I needed most. A page on localhost:3001 belongs to a project, so Aki finds the process serving that port, its folder and worktree, and sends the marks to the agent session working there. Anything else goes to the session you picked in a small sidebar on the screen edge (one ring per Claude Code / Codex session: working, waiting for you, marks pending).

Sending the queue to the right agent session

What the agent gets

Text first. Each mark carries the text it covers, and a small crop goes along only when what you marked is visual, so the agent doesn't burn tokens reading a full screenshot. The agent reads the marks over a local MCP server (read_annotations, wait_for_annotations, get_annotation_image, resolve_annotation) or the aki command, fixes the code and resolves each one.

Claude Code reading the marks and fixing the page

How it's built

  • Native Swift (SwiftPM, no Xcode project), lives on the screen edge, no Dock icon.
  • A small HTTP server inside the app, only on 127.0.0.1, checking Origin/Host. Marks stay on your Mac, in ~/.aki. No account.
  • I built most of it with Claude Code itself, which made the "wrong tab" problem very real every day.

Honest limits

  • Apple Silicon, macOS 14+.
  • Aki types the request into the session by itself in the Orca terminal; in other terminals the agent picks the marks up via MCP or aki wait.
  • It's young. Expect rough edges.

Try it

It's free, and the code is on GitHub (source-available, FSL-1.1-ALv2).

curl -fsSL https://aki-updates.vercel.app/aki-install.sh | sh

It's my first time putting code out in the open, so feedback, tips and bug reports are very welcome. And if you also run several agents at once, I'd love to know how you deal with it today.

πŸ“° Read the original article on Dev.to AI

Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes β€” full credit and traffic to the original publisher.