No description
Find a file
Natalie ce6948d6e9 feat(@projects/@claire): rounds skip-gate loop + fleet release tool
Wire the rounds timer to a pure-Python skip gate so claire-serve only wakes
the orchestrator model when worker fleet state changed (not every tick):
- web/rounds.py: fleet_fingerprint() over worker sessions (minus the
  orchestrator's own) + open tasks; should_skip_round() with heartbeat floor.
- web/app.py: _rounds_loop tracks last fingerprint + consecutive skips.
- excludes the orchestrator's own session/chat so a round's self-side-effects
  can't defeat the gate.
Add scripts/release-fleet.sh (test -> deploy apricot+black -> restart plum
services) and harden deploy-agent.sh's cosmetic status check against a SIGPIPE
false-abort. 3 new discriminating tests; 349 pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 22:58:41 -07:00
.claude feat(claire): add session cleanup and kick delay logic 2026-06-02 15:02:47 -07:00
.playwright-mcp test(playwright): Add/update Playwright test configuration for specific test case with assertions and environment setup 2026-05-21 17:16:34 -07:00
deployments/systemd feat(@projects/@claire): add rclaude path check in supervisor 2026-06-01 00:46:25 -06:00
scripts feat(@projects/@claire): rounds skip-gate loop + fleet release tool 2026-06-02 22:58:41 -07:00
src/claire feat(@projects/@claire): rounds skip-gate loop + fleet release tool 2026-06-02 22:58:41 -07:00
tests feat(@projects/@claire): rounds skip-gate loop + fleet release tool 2026-06-02 22:58:41 -07:00
.gitignore chore(gitignore): 🔧 add missing log file pattern to ignore 2026-05-20 19:18:34 -07:00
.mcp.json chore(mcp): 🔧 Update MCP server URL to local development environment in .mcp.json 2026-05-27 14:09:02 -07:00
app.manifest.yaml feat(@projects/@claire): add systemd agent deployment 2026-05-31 18:23:18 -06:00
CLAUDE.md docs(decision-recording): 📝 Add guide section for logging and reviewing project decisions 2026-05-22 16:57:31 -07:00
DESIGN.md breaking(web): 💥 Migrate frontend components and backend services to TypeScript with full compatibility and documentation updates 2026-05-20 19:54:05 -07:00
fleet-hud-verified.png docs(docs): 📝 Add fleet-hud-verified.png image asset for reference documentation 2026-05-21 17:16:34 -07:00
INFRA.md breaking(web): 💥 Migrate frontend components and backend services to TypeScript with full compatibility and documentation updates 2026-05-20 19:54:05 -07:00
pyproject.toml feat(@projects/@claire): add host telemetry migration and reporting 2026-05-31 18:08:43 -06:00
README.md breaking(web): 💥 Migrate frontend components and backend services to TypeScript with full compatibility and documentation updates 2026-05-20 19:54:05 -07:00
uv.lock feat(@projects/@claire): add session reaping logic 2026-06-01 01:16:42 -06:00

Claire

Project manager for the Claude agent fleet. Sits on top of rclaude — Claire owns the fleet's work (projects, tasks, assignments, priorities); rclaude owns each agent's session (tmux, ssh, send-keys).

claire  (project manager) — projects · tasks · assignments · prioritization · web
   │
   ▼
rclaude (transport)      — send · list · resume · triage · tmux+ssh primitives
   │
   ▼
claude agents on hosts

Install

Requires Python 3.13+ and uv.

cd ~/Code/@projects/@claire
uv venv
uv pip install -e ".[dev]"
./scripts/install.sh   # symlinks `claire` into ~/.local/bin

Quick start

claire init                                    # first run: generates machine_id + DB
claire project new "wozniak-cleanup" --goal "remove dead code paths"
claire task add wozniak-cleanup "scan for dead exports" --prio 1
claire pull                                    # refresh fleet view from rclaude
claire assign <task-id> <session-uuid>        # bind a task to a live claude session
claire status                                  # rolled-up dashboard
claire broadcast wozniak-cleanup --yes -- "please start"
claire web                                     # FastAPI dashboard at http://127.0.0.1:8765

Architecture

Event-sourced single-machine SQLite at ~/.local/share/claire/claire.db. Every write produces an append-only events row with a hybrid-logical-clock timestamp; projection tables (projects, tasks, assignments, sessions, updates, groups) are rebuilt from events. The HLC + event substrate is in place so a future Push B can add peer-to-peer sync without schema migration.

See DESIGN.md for full rationale.

Status

Push A (this scaffold): single-machine. CLI + web dashboard + pull loop. Sync deferred.

Push B (next): httpx peer pull/push, /api/sync/events endpoints, multi-machine integration tests.