daemonless·local-first·built on tmux

A session manager for terminal AI agents

Run Claude Code, Codex, Grok, OpenCode — or any command — as managed sessions: identity, live status, agent-to-agent coordination, and one dashboard over all of them.

install
$ curl -fsSL agentfactory.sh/install.sh | sh

requires tmux ≥ 3.2 · Linux and macOS

af status
$ af status
NAME       HARNESS      MODEL   STATUS
architect  claude-code  opus    awaiting-input
builder    codex        gpt-5   working
reviewer   grok         grok-4  working
docs       opencode     sonnet  idle
tests      claude-code  haiku   done
llama-8b   custom       -       working

why af

Know when you're needed

A bell, a notification, or an on-screen prompt flips a session to awaiting-input the instant it blocks. No polling, no per-agent setup.

Agents that coordinate

One agent opens, steers, waits on, and reads another — a coordinator/worker loop with no daemon and no message bus.

Status you can trust

working · idle · awaiting-input · done, derived four independent ways — solid enough to script against or block on.

Unkillable by design

Sessions live in tmux; af only holds state. Restart, upgrade, or crash af — your agents never notice.

in 30 seconds

zsh — af
# launch a Claude Code agent in a repo
$ af open --harness claude-code --model opus -C ~/src/api --name planner

# see the whole fleet at a glance
$ af status

# hand it work, then block until it's done
$ af send planner "refactor the auth middleware, then run tests"
$ af wait planner --for done

# step in with a full-fidelity attach when it needs you
$ af attach planner

get af

recommended
$ curl -fsSL agentfactory.sh/install.sh | sh

The script downloads the release binary for your platform, verifies its SHA-256 checksum, and drops af on your PATH. Read it first if you like: install.sh.

From source

make install

Needs Go 1.25+. Builds and installs to ~/.local/bin with shell completion.

Pre-built binaries

github.com/…/releases ↗

Linux and macOS, amd64 and arm64. Grab the archive, drop af on your PATH.