Back Original

Show HN: Agent-of-empires: OpenCode and Claude Code session manager

Documentation

A terminal session manager for Linux and MacOS using tmux to aid in management and monitoring of AI coding agents, written in Rust.

Agent of Empires TUI

Quick install (Linux & macOS):

curl -fsSL \
  https://raw.githubusercontent.com/njbrake/agent-of-empires/main/scripts/install.sh \
  | bash

Homebrew:

brew install njbrake/aoe/aoe

Update via brew update && brew upgrade aoe.

Build from source:

git clone https://github.com/njbrake/agent-of-empires
cd agent-of-empires
cargo build --release

Agent of Empires (aoe) is a wrapper around tmux, the terminal multiplexer. Each AI coding session you create is actually a tmux session under the hood.

Once you attach to a session, you're working directly in tmux. Basic tmux knowledge helps:

tmux Command What It Does
Ctrl+b d Detach from session (return to Agent of Empires)
Ctrl+b [ Enter scroll/copy mode
Ctrl+b n / Ctrl+b p Next/previous window

If you're new to tmux, the key thing to remember is Ctrl+b d to detach and return to the TUI, and that with Claude Code you'll need to enter scroll mode in order to scroll up in the Claude Code window (this isn't necessary when using opencode).

  • TUI Dashboard - Visual interface to manage all your AI coding sessions
  • Session Management - Create, attach, detach, and delete sessions
  • Group Organization - Organize sessions into hierarchical folders
  • Status Detection - Automatic status detection for Claude Code and OpenCode
  • tmux Integration - Sessions persist in tmux for reliability
  • Multi-profile Support - Separate workspaces for different projects
# Launch the TUI
aoe

# Or add a session directly from CLI
aoe add /path/to/project

Profiles let you maintain separate workspaces with their own sessions and groups. This is useful when you want to keep different contexts isolated—for example, work projects vs personal projects, or different client engagements.

aoe                 # Uses "default" profile
aoe -p work         # Uses "work" profile
aoe -p client-xyz   # Uses "client-xyz" profile

Each profile stores its own sessions.json and groups.json, so switching profiles gives you a completely different set of sessions.

Configuration is stored in ~/.agent-of-empires/:

~/.agent-of-empires/
├── config.toml           # Global configuration
├── profiles/
│   └── default/
│       ├── sessions.json # Session data
│       └── groups.json   # Group structure
└── logs/                 # Session logs
Variable Description
AGENT_OF_EMPIRES_PROFILE Default profile to use
AGENT_OF_EMPIRES_DEBUG Enable debug logging
# Check code
cargo check

# Run tests
cargo test

# Format code
cargo fmt

# Lint
cargo clippy

# Run in debug mode
AGENT_OF_EMPIRES_DEBUG=1 cargo run

# Build release binary
cargo build --release

Using aoe with mobile SSH clients (Termius, Blink, etc.)

If you're connecting via SSH from a mobile app like Termius, you may encounter issues when attaching to sessions. The recommended approach is to run aoe inside a tmux session:

# Start a tmux session first
tmux new-session -s main

# Then run aoe inside it
aoe

When you attach to an agent session, tmux will switch to that session. To navigate back to aoe use the tmux command Ctrl+b L to switch to last session (toggle back to aoe)

Claude Code is flickering

This is not an issue with aoe: it's a known problem with Claude Code: anthropics/claude-code#1913

Inspired by agent-deck (Go + Bubble Tea).

MIT License - see LICENSE for details.