#tui #ai-agent #monitoring

bin+lib wagner

AI agent monitoring CLI tool with TUI

17 unstable releases (3 breaking)

Uses new Rust 2024

new 0.4.1 Mar 5, 2026
0.4.0 Mar 4, 2026
0.3.1 Feb 5, 2026
0.2.3 Feb 1, 2026
0.1.9 Jan 8, 2026

#348 in Development tools

MIT license

755KB
20K SLoC

Wagner

Wagner is a tmux-based orchestrator for running AI agents across one or many repos.

It supports three primary workflows:

  • quick launch in the current repo (wagner claude, wagner codex)
  • attached multi-repo sessions without worktrees (wagner start)
  • managed tasks with isolated git worktrees (wagner new)

Install

# Recommended
curl -fsSL https://raw.githubusercontent.com/DeevsDeevs/wagner/main/install.sh | sh

# Cargo
cargo install wagner

# Nix
nix profile install github:DeevsDeevs/wagner

Requirements

  • tmux
  • git
  • at least one agent CLI (claude and/or codex)

Quick Start (Simplest)

From inside any git repo:

wagner claude      # start/attach a Claude task for current directory
wagner codex       # start/attach a Codex task for current directory
wagner terminal    # start/attach a plain terminal task

Optional custom task name:

wagner claude -n my-task

Useful follow-ups:

wagner ls
wagner a my-task
wagner detach my-task

Multi-Repo Without Worktrees

# auto-detect repo(s) from current directory
wagner start

# explicit paths
wagner start ~/repos/frontend ~/repos/backend -n fullstack

# stop tracking (repos stay untouched)
wagner detach fullstack

Managed Worktree Tasks

# single repo (auto-detected from cwd)
wagner new my-feature

# workspace-based multi-repo task
wagner workspace add app frontend:~/repos/frontend backend:~/repos/backend
wagner new my-feature -w app

Cleanup:

wagner rm my-feature        # remove task/worktrees
wagner rm my-feature -f     # also remove task branches

Sync Workspace Repos

Fetch latest changes for all repos in a workspace before creating tasks:

wagner sync              # fetch all workspace repos
wagner sync app          # fetch repos in specific workspace

Daemon + Remote Control

Start daemon:

wagner daemon start
wagner daemon status
wagner daemon restart
wagner daemon stop

Once daemon is running, these commands use IPC:

wagner status [task]
wagner send <task> "message"
wagner approve [task] [pane]
wagner reject <task> [pane]
wagner output <task> [pane] -l 120
wagner resume <task> [pane]
wagner add [task] [repo] [--name pane-name] [--agent claude|codex|terminal]

Telegram Adapter (Optional)

Configure ~/.config/wagner/config.json:

{
  "daemon": {
    "telegram": {
      "bot_token": "<telegram_bot_token>",
      "chat_id": 123456789,
      "allowed_users": [123456789],
      "notify_waiting": true,
      "rate_limit_ms": 50
    }
  }
}

Then run wagner daemon start.

Minimal Config

Default config path: ~/.config/wagner/config.json

{
  "tasks_root": "~/tasks",
  "repos_root": "~/repos",
  "default_agent": "claude",
  "diff_base": "main"
}

More Docs

  • Architecture: docs/architecture.md
  • Contributor map: CLAUDE.md

License

MIT

Dependencies

~22–44MB
~599K SLoC