param087

Agentmaster — AI skill for Claude Code

AI community

One dashboard for every AI CLI harness running on your laptop - opencode, Claude Code, Gemini CLI, Codex, Qwen Code and more, mirrored into one browser window with status detection and notifications.

How to install Agentmaster

This entry records only its repository, not the path inside it, so there is no exact command to give. Open param087/agentmaster and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Agentmaster does

One dashboard for every AI CLI harness running on your laptop - opencode, Claude Code, Gemini CLI, Codex, Qwen Code and more, mirrored into one browser window with status detection and notifications.

Alternatives in AI

  • Qwen Code — A command-line AI workflow tool adapted from Gemini CLI, optimized for Qwen3-Coder models with enhanced parser 20.8k ★
  • Desktop Cc Gui — Multi-engine AI coding desktop client (Tauri) 4.4k ★
  • EchoBird — One-click install + model switch:Claude Code,Codex CLI (OpenAI), Grok Build (xAI), DeepSeek Harness, Kimi Code 3.1k ★

README

agentmaster

One dashboard for every AI CLI harness running on your laptop — opencode, Claude Code, Gemini CLI, Codex, Qwen Code, PI, and anything you add later.

Agent CLIs run in terminals you stop watching. Past two of them you lose track: a session blocks on a permission prompt and sits there for forty minutes because nobody was looking at that tab. agentmaster mirrors every session into one browser window, tells you which ones need you, and notifies you when they do.

![The agentmaster dashboard: three live sessions in the sidebar, one opencode session mirrored in the terminal pane](docs/screenshots/dashboard.png)

How it works

There is no protocol and no per-harness integration. Each harness is spawned in a **pseudo-terminal**, so it believes a human is sitting at a real terminal — `isatty()` is true, it renders its full colour TUI, and Ctrl-C arrives as a real `SIGINT`. Raw bytes stream to xterm.js in the browser and back, unmodified. That is why arrow-key menus, `⇧Tab` plan mode, `/model`, and Ctrl-C all work identically for every harness.

In parallel, the same bytes feed a **headless terminal emulator** on the server. Status detection regexes run against that *rendered screen*, not the byte stream — harnesses repeatedly overwrite one line with `\r\x1b[K`, so "Thinking…" stays in the stream forever while being visually erased. Matching the rendered grid is the only way to see what you would see.

browser (xterm.js) ──ws /term/:id (binary)──┐
                                            ├── PtySession ── PTY ── harness
browser (sidebar)  ──ws /events   (JSON)────┘       │
                                                    ├─ ring buffer (2 MB replay)
                                                    └─ screen model → status engine

Everything harness-specific lives in `harnesses.yaml`. Adding a CLI is a config entry. A CLI with *no* entry still gets a working terminal plus busy/idle/exited from the generic idle timer.

Screenshots

Every h