Help us shape the future of Go! Take the 2026 Go Developer Survey

aim

module
v1.0.0-rc.1 Latest Latest
Warning

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

Go to latest
Published: Nov 1, 2026 License: MIT

README

AIM

A terminal multiplexer for coding agents: watch them work, review their diffs, merge their pull requests

CI Latest release

AIM (Agents In-flight Multiplexer) hosts Claude Code agents in live terminal panes, with each agent's diff, its pull request and the CI checks beside it. You watch the agents work, review what they change while they change it, and push, open, check and merge their pull requests without leaving the terminal.

Watch it as a video (MP4).

Features

  • Agents in panes. BSP, master-stack and scrolling layouts, tabs, and a git worktree per agent from the picker.
  • Agents rail. Agents grouped as Blocked, Working, Idle or No hooks, with what it does now, its branch, its pull request and its diff stats.
  • Live review. Turn and branch mode, unified or side by side, highlighted, with markdown rendered; the drawer follows the agent's edits from worktree to worktree.
  • Pull requests and CI. Push, open a pull request from the compose box, read its conversation and checks with their logs, approve, and merge the reviewed head after a confirm.
  • Plans and markdown. The agent's plan, any markdown file and a pull request's conversation open in a reading box, with pictures over the Kitty graphics protocol.
  • Keyboard first. One leader key, which-key, a command palette, every key remappable, copy mode and mouse selection.
  • Picks up where you left off. Tabs, layouts and each agent's Claude session come back on restart.
  • Themes. Catppuccin Latte, Frappé, Macchiato and Mocha, switched from the palette while AIM runs.

Screenshots

AIM with the review drawer showing README.md rendered, and the checks box for pull request 1 listing one passed check, vet and test
The review drawer on a pull request, with the checks box open over it: one check, vet and test, passed.
AIM with the Pull requests list open over the agents, showing pull request 1 with its checks passed, 1 of 1
The pull request list on its Agents tab: pull request 1, Add -shout and -repeat flags, with 1/1 checks passed.
The plan overlay showing demo-agent-2's plan to add a -lang flag, with its context, files to change and verification steps
The agent's plan in the plan overlay: demo-agent-2's plan to add a -lang flag.

Which-key after the leader, over the agents while demo-agent-2 codes.

Requirements

  • Linux or macOS (there is no Windows build).
  • A true-colour terminal. AIM is tested in Kitty and Ghostty; pictures need the Kitty graphics protocol.
  • A Nerd Font, or icons = false in the config.
  • Claude Code, with claude on the PATH of your login shell: agents start through $SHELL -l -i -c.
  • git 2.36 or newer.
  • For pull requests and checks, a GitHub token, found the way gh finds one: GH_TOKEN or GITHUB_TOKEN, else the token gh auth login stored (see what AIM needs). Without one, everything but the GitHub features works.

Install

Homebrew

macOS and Linux:

brew install mhersson/formulas/aim
Release binaries

Download aim_<version>_<os>_<arch>.tar.gz for Linux or macOS on amd64 or arm64 from the latest release, check its SHA-256 against aim_<version>_checksums.txt, and put aim on your PATH. On macOS, a binary downloaded with a browser needs this once:

xattr -d com.apple.quarantine aim

The archive also holds LICENSE, THIRD_PARTY.md, this README and config.example.toml.

Go
go install github.com/mhersson/aim/cmd/aim@latest

This needs Go 1.27.3 or newer. Check any install with aim --version.

First run

The keys here are the defaults, and every key can be remapped (see the keys page).

  1. Run aim in a git repository.
  2. Press ctrl+space n. The picker, titled "New agent", lists the repository's worktrees; its last row, new worktree…, makes a branch and its worktree and starts an agent there.
  3. Give Claude a task.
  4. Press ctrl+space a for the agents rail, which shows who is working and who is blocked on you.
  5. Press ctrl+space d for the review drawer: t shows the agent's last turn, b the whole branch.
  6. Press ctrl+space g P to push, after a confirm. ctrl+space g o opens the compose box and ctrl+s there creates the pull request. ctrl+space g l lists pull requests with their checks, and M there merges.

To see every leader key, press ctrl+space and wait for which-key.

Keys

Everything starts with the leader, ctrl+space; every key can be remapped. The keys page lists all of them.

Keys Does
ctrl+space n New agent pane
ctrl+space a Agents rail
ctrl+space d Review drawer
ctrl+space p Open the agent's plan
ctrl+space g P Push branch
ctrl+space g o Open a pull request
ctrl+space g l Pull requests
ctrl+space g m Merge pull request
ctrl+space : Open command palette
ctrl+space q Quit AIM

Documentation

The guide starts from what you want to do and gives the keys to do it:

  1. Agents side by side
  2. Layouts
  3. Review an agent's work
  4. Pull requests
  5. Plans, markdown and conversations
  6. Copy, paste and the mouse

Reference: Keys, Configuration and config.example.toml.

Configuration

AIM needs no config. To change the theme, layouts, keys and more, copy config.example.toml to ~/.config/aim/config.toml ($XDG_CONFIG_HOME/aim/config.toml when that is set; the path is the same on macOS) and uncomment what you change. See Configuration.

Limitations

  • Claude Code is the only agent AIM hosts in v1.
  • Linux and macOS only.
  • A pull request from a fork never matches an agent's branch, and worktree cleanup refuses one with #<n>'s branch is in another repository.

Contributing

AGENTS.md is the guide for people and coding agents alike. Run make check-fast before every commit.

Acknowledgements

Terminal emulation comes from TUIOS's tuios.dev/vt. The tiling layouts, the line diff and the diff view are ported from TUIOS (MIT); THIRD_PARTY.md lists everything copied.

License

MIT, see LICENSE.

Directories

Path Synopsis
cmd
aim command
Command aim is the AIM binary: CLI and wiring.
Command aim is the AIM binary: CLI and wiring.
internal
core/tiling
Package tiling computes tiled pane layouts: a BSP tree, master-stack and scrolling columns.
Package tiling computes tiled pane layouts: a BSP tree, master-stack and scrolling columns.
git
git/fsnotify
Package fsnotify provides a cross-platform interface for file system notifications.
Package fsnotify provides a cross-platform interface for file system notifications.
git/fsnotify/internal
Package internal contains some helpers.
Package internal contains some helpers.
git/invisible
Package invisible finds the characters that draw nothing but change how text reads: format characters, variation selectors and line separators.
Package invisible finds the characters that draw nothing but change how text reads: format characters, variation selectors and line separators.
git/linediff
Package linediff splits texts into lines and finds a shortest line edit script between two of them.
Package linediff splits texts into lines and finds a shortest line edit script between two of them.
github
Package github resolves a worktree's GitHub repository and token the way gh does and talks to the GitHub API.
Package github resolves a worktree's GitHub repository and token the way gh does and talks to the GitHub API.
harness
Package harness adapts external coding-agent CLIs to AIM.
Package harness adapts external coding-agent CLIs to AIM.
md
Package md parses markdown (PR bodies, plan files, repo docs) into a tree the layout walks.
Package md parses markdown (PR bodies, plan files, repo docs) into a tree the layout walks.
store
Package store reads, validates and writes the state file.
Package store reads, validates and writes the state file.
term
Package term hosts terminal emulation for agent panes behind the VT interface.
Package term hosts terminal emulation for agent panes behind the VT interface.
term/rec
Package rec is the timestamped PTY recording format: pane output and resizes, used to replay real sessions through the emulator.
Package rec is the timestamped PTY recording format: pane output and resizes, used to replay real sessions through the emulator.
ui
Package ui is the Bubble Tea front end.
Package ui is the Bubble Tea front end.
ui/diffview
Package diffview draws the lines of a diff: syntax highlighting by file type, line numbers in a gutter, added and removed lines on tinted grounds, the changed part of a changed line marked, and a side by side layout.
Package diffview draws the lines of a diff: syntax highlighting by file type, line numbers in a gutter, added and removed lines on tinted grounds, the changed part of a changed line marked, and a side by side layout.
ui/diffview/lexers
Package lexers holds the syntax definitions the review highlights with, and the registry that serves them.
Package lexers holds the syntax definitions the review highlights with, and the registry that serves them.
ui/kitty
Package kitty builds Kitty graphics protocol escapes and Unicode placeholder cells.
Package kitty builds Kitty graphics protocol escapes and Unicode placeholder cells.
ui/palette
Package palette is a fuzzy-filtered list in a framed box, used for the command palette and the theme picker.
Package palette is a fuzzy-filtered list in a framed box, used for the command palette and the theme picker.
ui/theme
Package theme holds the Catppuccin flavors AIM ships: each flavor's palette, the semantic UI roles widgets colour from, and a matching Chroma syntax style.
Package theme holds the Catppuccin flavors AIM ships: each flavor's palette, the semantic UI roles widgets colour from, and a matching Chroma syntax style.

Jump to

Keyboard shortcuts

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