ewardGPT/vantage

Agent-agnostic CLI dashboard — see every AI agent across runtimes from your terminal

★ 0Forks 0GoGitHub ↗Compare

README

Vantage

Agent-agnostic CLI dashboard — see every AI agent across runtimes from your terminal.

Primary implementation: Go (single binary, Bubbletea TUI). The Python package in vantage/ is legacy and kept for reference during migration.

Quick Start (Go)

# One-liner install (after release published)
# curl -L https://github.com/ewardGPT/vantage/releases/download/v0.3.0/vantage-0.3.0-linux-arm64 -o ~/.local/bin/vantage && chmod +x ~/.local/bin/vantage

# Build from source
make build && make install   # → ~/.local/bin/vantage

# Verify
vantage version
vantage adapters
vantage dashboard

Cross-compile release binaries

make cross-compile VERSION=0.3.0
# → dist/vantage-0.3.0-{linux,darwin}-{amd64,arm64} + .sha256
make smoke                   # quick CLI validation

Push a git tag v0.3.0 to trigger the GitHub release workflow.

Commands

Command Description
vantage ps List sessions (with quality score)
vantage dashboard Live Bubbletea TUI (j/k navigate, a active filter, d/t/l views)
vantage tree <id> Agent hierarchy
vantage logs <id> Merged chronological logs
vantage adapters Runtime probe status
vantage health Diagnostic report + recommendations
vantage quality <id> Session quality score (0–100)
vantage quality --trend Quality trend across sessions
vantage route <prompt> Suggest runtime/model
vantage memory --list Cross-session lessons
vantage memory --inject "prompt" Preview memory injection
vantage run <runtime> <prompt> Submit task (--retry N, --fallback MODEL)

Architecture

cmd/vantage/main.go
  └── internal/cmd/          Cobra CLI
  └── internal/tui/          Bubbletea dashboard
  └── internal/registry/     Adapter discovery + cache merge
  └── internal/adapters/     hermes, claude-code, opencode
  └── internal/quality/      Quality scoring engine
  └── internal/health/       Health reports
  └── internal/recovery/     Failure retry strategies
  └── internal/router/       Model routing
  └── internal/memory/       Cross-session memory store

Adapters implement a common interface (Probe, ListSessions, GetTree, GetLogs, Run). Registry polls adapters in deterministic sorted order.

Config

~/.config/vantage/config.json (or $VANTAGE_CONFIG):

{
  "refresh_seconds": 2,
  "run_timeout_seconds": 600,
  "cache_enabled": true,
  "disabled_adapters": []
}

Adapters

Adapter Go status Source
Hermes ✅ ~/.hermes/state.db
Claude Code ✅ ~/.claude/sessions/
OpenCode ✅ ~/.local/share/opencode/opencode.db
Codex ✅ ~/.codex/sessions.db or JSONL
Cursor ✅ ~/.cursor/projects/*/agent-transcripts/
Burrow ⏳ Run+Stop only Warren/Burrow HTTP API (:8999)

Phase 4–5 (complete)

  • All 6 adapters ported to Go
  • vantage stop <id> with PID kill + Burrow cancel
  • Concurrent goroutine polling in registry
  • vantage run live follow TUI (Bubbletea, --background to skip)

Determinism

  • Adapter iteration: sorted by runtime name
  • Session merge: started_at DESC, id ASC
  • Log merge: stable sort on (timestamp, runtime, role)
  • Memory match: score DESC, id ASC tiebreaker

Development

make test          # go test ./...
make build         # bin/vantage
go test ./internal/quality -v

Legacy Python

pip install -e ".[dev]"
pytest tests/      # reference implementation
python -m vantage.cli adapters

Migration Notes

Vantage migrated from Python (Rich TUI) to Go (Bubbletea):

  • Complete (5 of 6): CLI, dashboard, run TUI, quality/health/memory/router/recovery, stop, concurrent polling
    • 5 adapters: Hermes, Claude Code, OpenCode, Codex, Cursor
    • Burrow: Run+Stop only (ListSessions/GetSession/GetTree/GetLogs not yet implemented)
  • Python legacy: kept in vantage/ for reference (pytest tests/)

Why Go?

  • Single static binary, no venv
  • Native goroutines for multi-runtime polling
  • Bubbletea TUI (Lazygit/Glow ecosystem)
  • Cross-compile for linux/darwin/arm64

Contributors

ewardGPT

Issues