by tomtomsatnav
A live, local-first dashboard for Claude Code sessions: project graph of agents, tokens, tool feed, replay, alerts. Plugin + terminal UI + MCP server. Includes the AOS-1 agent orchestration spec.
# Add to your Claude Code skills
git clone https://github.com/tomtomsatnav/agent-orchestration-standardGuides for using ai agents skills like agent-orchestration-standard.
See how agent-orchestration-standard compares with popular alternatives.
agent-orchestration-standard is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by tomtomsatnav. A live, local-first dashboard for Claude Code sessions: project graph of agents, tokens, tool feed, replay, alerts. Plugin + terminal UI + MCP server. Includes the AOS-1 agent orchestration spec. It has 54 GitHub stars.
agent-orchestration-standard's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/tomtomsatnav/agent-orchestration-standard" and add it to your Claude Code skills directory (see the Installation section above).
agent-orchestration-standard is primarily written in JavaScript. It is open-source under tomtomsatnav on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh agent-orchestration-standard against similar tools.
No comments yet. Be the first to share your thoughts!
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
See comparison
AOS-1 is a minimal, runtime-agnostic contract for orchestrating several AI agents toward one standing Goal. A periodic Heartbeat re-evaluates the Goal, reaps stalled work, plans, dispatches ready Tasks, and enforces budgets until the Goal is achieved, blocked, or cancelled. All state lives in plain files, and an append-only event log is the source of truth. The normative text is in SPEC.md.
This repository holds the spec, JSON Schemas, a zero-dependency conformance validator, and a reference server, dashboard and heartbeat runner.
Regenerate with make screenshots (needs playwright-core and the monitor running; ffmpeg for the GIF). The data comes from scripts/demo-state.mjs, served to the real UI through request interception.
flowchart LR
S["Claude Code sessions<br/>terminal / IDE / desktop"] --> H["Hooks<br/>aos-hook.mjs, 16 events"]
H --> L[("Sanitized event log<br/>local")]
L --> M["Monitor<br/>folds events: projects, models, tokens,<br/>conflicts, stuck / errored rules"]
M --> W["Web UI"]
M --> T["Terminal UI"]
M --> P["MCP server"]
M --> SL["Status line"]
M --> N["Notifier"]
NOTE["localhost only, read-only,<br/>no prompts or file contents stored"] -.- M
aos-dash), a read-only MCP server and a macOS notifier.make test).Requires Node 18+. There are no dependencies to install.
node server.mjs # dashboard + API at http://127.0.0.1:4317
node conformance/validate.mjs # validate ./state against schemas and the spec's MUSTs
node conformance/validate.mjs path/to/state # validate another state directory
node conformance/validate.mjs --selftest # prove the validator catches the negative fixtures
The validator exits 0 when the state conforms and 1 when it does not. Each violation is printed as FAIL: <file>: <message>. Warnings, such as a stale heartbeat, do not affect the exit code.
SPEC.md AOS-1 normative specification
README.md this file
ROADMAP.md what exists, known limitations, ideas
server.mjs reference HTTP server (serves ui/ and the state API)
ui/ dashboard (goal, heartbeat, task board, agents, events, pause/resume/cancel)
heartbeat/ heartbeat runner and config.json
state/ runtime state (the file-based binding)
goal.json Goal
tasks.json Task[]
agents.json Agent[]
heartbeat.json Heartbeat
events.ndjson append-only Events, one JSON object per line
schemas/ JSON Schema (draft 2020-12): goal, task, agent, heartbeat, event
conformance/
validate.mjs validator with a built-in schema-subset checker
fixtures/valid/ state directories that must pass
fixtures/invalid/ state directories that must each fail, one violation per directory
Schema checks use type, required, enum, properties, items, pattern, minimum and minItems. The semantic checks are:
output_contract and at least one acceptance check (section 6).depends_on reference exists, and there are no dependency cycles.assignee, current_task and goal_id references resolve, and attempts does not exceed max_attempts.events.ndjson has parseable lines, valid Event shapes, and strictly increasing seq.ts (alive under 1.5x, late under 3x, dead at 3x or more of interval_s). A terminal Goal must not have a running heartbeat.The validator cannot see past writes, so append-only is checked structurally (monotonic seq, parseable lines). Appending only is up to the writer.
The heartbeat runner starts each ready Task by running a shell command. Set it in heartbeat/config.json under dispatch_command:
{
"interval_s": 60,
"dispatch_command": "claude -p \"$AOS_TASK_PROMPT\""
}
Keep the exact key names and the variables available to the command in sync with heartbeat/config.json and the runner's header comment, which are the authority. The command is the only place a real agent runtime is plugged in. Anything that can be launched from a shell works: the Claude CLI, a script, or an HTTP client. Per SPEC section 7, a command that deploys, sends messages, spends money, or deletes things MUST be gated on human approval recorded as a human.* Event.
Run the server and the heartbeat as long-lived processes. The heartbeat file is the liveness signal, so a crashed runner shows up as late and then dead in the dashboard.
Quick, with nohup:
cd /path/to/agent-orchestration-standard
nohup node server.mjs > server.log 2>&1 &
Durable, with launchd on macOS. Save this as ~/Library/LaunchAgents/dev.aos.server.plist, adjust the paths, then run launchctl load ~/Library/LaunchAgents/dev.aos.server.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
<key>Label</key><string>dev.aos.server</string>
<key>ProgramArguments</key><array>
<string>/usr/local/bin/node</string>
<string>/path/to/agent-orchestration-standard/server.mjs</string>
</array>
<key>WorkingDirectory</key><string>/path/to/agent-orchestration-standard</string>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
<key>StandardOutPath</key><string>/tmp/aos-server.log</string>
<key>StandardErrorPath</key><string>/tmp/aos-server.log</string>
</dict></plist>
Use the same pattern, with a different label and the heartbeat entry point, for the heartbeat runner if it is a separate process. Stop with launchctl unload <plist>. On Linux, an equivalent systemd unit with Restart=always works.
Beyond the spec and the reference runner, this repo contains a read-only live monitor for Claude Code sessions: it shows every session, project and subagent as a graph (heart -> project hubs -> agents) with live streams, per-agent model, tokens, run time, tool feed, file conflicts, errors and alerts. It is local-only (binds 127.0.0.1) and stores only event and tool names, short labels, counts, and the local folder/file paths it needs for project grouping and file-conflict detection: never prompts, command lines (only a Bash command's first word), file co