Fleet management and night runner system for unattended agent orchestration with safety gates, manifest validation, and multi-agent support (Claude, Codex, Gemini, OpenCode)
This server has 34 tools with significant definition gaps. Most tools lack proper input schema validation, parameters are documented in descriptions but not formally typed in JSON Schema. Descriptions are present but often generic (e.g., 'Mission object' repeated 6+ times). No output schemas are documented. Error handling is minimal; most tools raise generic RunnerError or return dicts without recovery guidance. Tool names are reasonable (verb_noun style) but many are overly broad (e.g., 'command_args', 'command_for', 'status'). The codebase shows subprocess calls and file I/O but no input sanitization or permission gates. This is a domain-specific orchestration tool, not a general-purpose agent toolkit, which limits applicability.
Preflight health check for agent binary (claude, codex, gemini, opencode) with optional live test
Append timestamped activity entry to fleet ACTIVITY-LOG and daily calendar
Append proposal record to proposals.jsonl for cross-machine visibility
Check backup posture: disk free, GitHub auth, OneDrive, restic, rclone, Business repo, control plane state
Build comprehensive capacity report with tool versions, auth status, resource gates, and agent probes
Write self heartbeat only (machine_id, status, role, telegram_bot, notes, timestamp)
Generic parameter descriptions: 'Mission object', 'Manifest object' repeated 10+ times without field-level documentation. LLMs cannot infer structure from generic labels.
No output schemas documented. Tools return dicts (e.g., prepare returns {ready, validation, agents}) but LLMs have no schema to parse results or plan downstream calls.
Ambiguous tool names: 'status', 'command_args', 'command_for' do not clearly distinguish intent. 'status' could mean HTTP status, mission status, or system status. Violates verb_noun clarity.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Write identity file for this host with machine_id, hostname, node, platform, timestamp
CLI command: append timestamped activity entry
CLI command: show recent mirrored proposals from proposals.jsonl
CLI command: mirror private-DM proposal to ACTIVITY-LOG and proposals.jsonl with optional peer queue
Show reconciled local + remote heartbeats with peer freshness check
One-line status for Telegram bus showing machine, host, status, peer online state, timestamp
CLI command: show end of ACTIVITY-LOG
CLI command: show today's calendar file
Generate command-line arguments for launching a mission with the specified agent (claude, codex, opencode, gemini)
Generate shell-escaped command string for launching a mission
Get current git branch for a repository
Generate markdown debrief report of mission completion status and budget usage
Get free disk space in gigabytes
Enforce disk and memory safety gates; raise error if thresholds exceeded
Generate fleet inventory report: tools versions, repo status, disk usage, GitHub auth, production targets
Check if git repository has no uncommitted changes
Execute night manifest: run missions sequentially with resource enforcement, logging, and receipt tracking
Append proposal ticket to fleet/bus/queues/to-<peer>.json if peer queue exists
Get current system memory usage percentage
Pre-flight check: validate manifest, enforce resource gates, check git state, verify agent health, and return mission launch plan
Probe Claude CLI installation, auth status, and optionally run live PONG test
Probe Codex CLI installation, auth status, and optionally run live PONG test
Probe Gemini CLI installation, OAuth/metered auth status, and optionally run live PONG test
Route job class based on complexity and unattended flag, returning agent model and budget recommendations
Reconcile local and remote heartbeats, return merged status with peer freshness
Check disk and memory thresholds; return launch allowance and blocker list
Check mission receipt status and verify acceptance command exit codes
Validate night manifest structure, budget caps, mission requirements, and acceptance commands
No input validation or error recovery guidance. RunnerError exceptions are raised but not caught with actionable messages. LLMs receive raw errors like 'cannot read git branch' with no recovery path.
No permission gates or audit trails. Tools like 'launch' and 'append_entry' modify state (execute missions, write logs) without checking caller authority or logging who did what.