attn

module
v0.8.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 14, 2026 License: GPL-3.0

README

attn

attention hub — because your head shouldn't feel like concrete by 3pm.

I built this after noticing a pattern: I'd start the day sharp, spin up 4-5 AI agents across different repos, and by mid-afternoon my brain was soup. Not from the coding — from the managing. Which terminal has the agent that's stuck? Did that one finish? Wait, who asked me a question 20 minutes ago? Alt-tab, alt-tab, alt-tab, scroll, squint, repeat.

attn fixes the dumbest part of multi-agent workflows: knowing what needs you right now.

It also lets one app manage sessions running somewhere else. Point attn at a remote daemon over SSH — a cloud box, a homelab machine, or even a local VM — and those sessions show up in the same sidebar, terminals, and worktree picker as your local ones.

It's a desktop app that wraps your agent CLIs — Claude Code, Codex, Copilot — and puts them all in one window with color-coded status. Green means working. Yellow means "hey, I need you." Gray means done. No more tab-hunting. No more heavy head.

There is no custom agent UI. attn wraps each CLI directly. You get the real, native experience of every agent — just organized.

What you get

One sidebar to rule them all — Every agent session, live state at a glance. The one that needs you glows. Click it. Done.

Embedded terminals — No more "which terminal was that in?" Run agents inside the app. Open utility shells next to them. Resume sessions, fork them, never leave the window.

Remote daemons over SSH — Keep sessions on a GPU box, Linux host, or local VM and manage them from the same app. Spawn new sessions remotely, browse remote repos, and open remote worktrees without juggling another terminal window.

PR dashboard — Your PRs, your review requests, CI failures, merge conflicts — one place. Works across GitHub.com and GitHub Enterprise. Open a PR directly into a worktree.

Git worktrees & branches — Parallel agents need parallel branches. Create, switch, and manage worktrees from the app. Stop stepping on your own feet.

Quick Find — Cmd+F to yank URLs, paths, and hashes out of terminal output.

Supported agents

Agent State detection Review & forking
Claude Code Hooks + classifier Yes
Codex PTY heuristics + transcript classifier No
Copilot CLI PTY heuristics + transcript classifier No

Install

Homebrew cask (desktop app)
brew tap victorarias/attn https://github.com/victorarias/attn
brew install --cask victorarias/attn/attn

This installs attn.app with its bundled daemon/runtime binary.

Direct DMG

Grab the latest release, open the DMG, drag to Applications.

Updating
brew update && brew upgrade --cask victorarias/attn/attn

The app nudges you when a new release exists. No auto-install — you pick when.

Prerequisites

  • macOS (Apple Silicon)
  • At least one agent CLI installed
  • GitHub CLI (gh) v2.81.0+ for PR features

Quick start

  1. Launch attn from Applications.
  2. Cmd+N — pick an agent, pick a directory, go.
  3. Watch the sidebar. Colors tell you who needs you.
  4. Optional: add an SSH endpoint in Settings and run remote or VM sessions from the same picker.

Session states

Color What it means
🟢 Green Agent is working — leave it alone
🟡 Yellow Agent needs attention: asked a question, or finished a long run (5+ min) and is waiting for your review
🟡 Flashing Agent wants tool approval — go approve
⚫ Gray Agent is done — move on

Long-run review behavior: if a run takes 5+ minutes, attn keeps it yellow when it finishes, then runs smart done/waiting classification only after you actually view that session (5 seconds stable selection; immediate if you were already focused on it).

Shortcuts

Shortcut What it does
Cmd+N New session
Cmd+Shift+N New session in a worktree
Cmd+Shift+F Fork session (Claude)
Cmd+F Quick Find
Cmd+K Attention drawer (who needs me?)
Cmd+` Utility terminal
Cmd+Up / Down Jump between sessions
Cmd+R Refresh PRs

How it works

  1. The bundled attn runtime wraps your agent CLI and installs hooks (Claude) or reads PTY output (Codex, Copilot) to detect state.
  2. A background daemon tracks sessions via unix socket (~/.attn/attn.sock).
  3. The desktop app connects over WebSocket for real-time updates.
  4. Optional SSH-managed remote daemons connect through the local hub, so local and remote sessions share one session list and one control surface.
  5. A lightweight classifier figures out if Claude stopped because it's done or because it's waiting for you.
  6. For 5+ minute runs, classification is intentionally deferred until you visualize the session, so "done" runs still surface for manual review first.
  7. gh polls PRs across all your authenticated GitHub hosts.

Build from source

Requires Go 1.25+, Rust (stable), Node.js 20+, pnpm, and Tauri prerequisites.

Source builds intentionally disable GitHub release update banners by default.

git clone https://github.com/victorarias/attn.git && cd attn
Command What it does
make build Build Go daemon binary
make install Rebuild and install the app bundle for source development, then ensure the bundled daemon is running
make install-daemon Update only the installed app's bundled daemon/runtime for the fast dev loop
make build-app Build daemon + Tauri app
make dist Create DMG
make test Go tests
make test-frontend Frontend tests (vitest)
make test-harness Go + frontend + E2E

Docs

Terminal rendering learnings PTY and harness notes from the current cleanup stream
Release Maintainer runbook

Status

Alpha — I use it every day. It's rough around the edges, but it works really well and it's genuinely powerful once you get going.

A note about this project

I built attn because I needed it. Managing multiple agents was the bottleneck, not the coding itself.

I work full time, and I have 2 dogs and 4 cats at home. Free time is not abundant. attn is open source, but if you need changes I can't get to — fork it. That's encouraged, not rude.

Issues are welcome, but please be detailed:

  • Describe what happened and what you expected.
  • Include the tail of ~/.attn/daemon.log from right after you reproduced the issue.
  • For visual bugs, attach a screenshot.

Vague "it doesn't work" reports aren't actionable and will sit there forever.

I'm a friendly person and happy to help when I can. But don't be entitled about it — that's the one thing I can't deal with. Entitled behavior gets ignored, and if I'm having a bad day, maybe banned.

Built with

Tauri / React / Go / SQLite

License

GPL-3.0

Directories

Path Synopsis
cmd
attn command
internal
agent
Package agent defines the Driver interface and optional capability interfaces for coding agents managed by attn.
Package agent defines the Driver interface and optional capability interfaces for coding agents managed by attn.
attention
Package attention provides a unified interface for items that need user attention.
Package attention provides a unified interface for items that need user attention.
daemon
internal/daemon/branch.go
internal/daemon/branch.go
git
internal/git/branch.go
internal/git/branch.go
github/mockserver
internal/github/mockserver/server.go
internal/github/mockserver/server.go
hub
pathutil
Package pathutil provides PATH environment utilities for GUI app launches.
Package pathutil provides PATH environment utilities for GUI app launches.
pty
store
internal/store/worktree.go
internal/store/worktree.go

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL