Skip to content

RandomCodeSpace/unified-agent-manager

Repository files navigation

unified-agent-manager (uam)

Security SonarCloud Quality Gate Release Go

A terminal UI that replicates Claude Code's "agent view" experience across multiple coding-agent CLIs in one unified dashboard: Claude Code, OpenAI Codex, GitHub Copilot CLI, and OpenCode.

Status: complete MVP across PLAN.md Phases 0–12.

Features

  • Single Go/Bubble Tea binary: uam
  • Private tmux backend: every managed session runs under tmux -L uam
  • Agent adapters for:
    • Claude Code: claude --dangerously-skip-permissions
    • Codex: codex --sandbox danger-full-access
    • GitHub Copilot CLI: copilot --autopilot or gh copilot --autopilot
    • OpenCode: opencode --auto-approve
  • Persistent metadata at ${XDG_CONFIG_HOME:-~/.config}/uam/sessions.json
  • Atomic JSON writes, flock locking, schema migration backups, corrupt-file self-healing
  • TUI grouping by session state: Needs Input, Working, Review, Failed, Completed
  • Peek/reply/attach/stop flows backed by tmux capture-pane and send-keys
  • Pin, rename, group-by-dir toggle, and persisted manual reorder
  • PR URL detection from pane output plus optional gh pr view status refresh
  • Shell commands for automation

Build

go install github.com/RandomCodeSpace/unified-agent-manager/cmd/uam@latest
make build      # produces ./bin/uam
make test       # go test ./...
make run        # build + launch the TUI

Go names installed binaries after the last import-path element. The root path github.com/RandomCodeSpace/unified-agent-manager therefore installs a binary named unified-agent-manager; use /cmd/uam when you want the uam command.

Requires Go 1.24+ and tmux 3.x. Agent CLIs are capability-probed at runtime; unavailable providers are hidden from the TUI dispatch selector.

CLI

uam                              # open TUI
uam new                          # guided terminal dispatch flow
uam dispatch [--safe] <agent> "prompt"
uam dispatch --cwd /path/to/repo claude "fix flaky tests"
uam ls [--json]
uam peek <id>
uam attach <id>
uam last
uam version
uam stop <id>                    # kill tmux session, keep record
uam rm <id>                      # kill tmux session and remove record

TUI keys

Key Action
/ Move selection
Enter / Attach selected session
Type prompt + Enter Dispatch to default agent
@codex prompt Dispatch to a specific agent
Tab Cycle default agent
Space Toggle peek panel
Ctrl+T Pin selected session
Ctrl+R Rename selected session
Ctrl+X Stop/remove selected session with confirmation
Ctrl+S Toggle group-by-directory
Shift+↑/↓ Reorder rows and persist sort_index
e Open easy-mode wizard
? Help overlay
q Quit

Development

go test ./...
make build

Security and quality

GitHub Actions run security checks on main, pull requests, and a weekly schedule:

  • govulncheck ./... for known Go vulnerabilities
  • gosec ./... with SARIF upload to GitHub code scanning
  • Dependency Review on pull requests
  • SonarCloud analysis with Go coverage from coverage.out

GitHub CodeQL default setup is also enabled for Go code scanning.

SonarCloud requires a repository secret named SONAR_TOKEN. The workflow skips only the SonarCloud upload step until that secret exists.

Core packages:

  • internal/store: sessions JSON, locking, migration, backups
  • internal/tmux: all tmux shell-out logic
  • internal/adapter: shared adapter interfaces, tmux adapter, state detection
  • internal/adapter/{claude,codex,copilot,opencode}: provider registrations
  • internal/app: service layer and Bubble Tea model
  • internal/pr: optional GitHub PR status lookup
  • internal/refresh: refresh ticker policy

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors