circuitforge-core/circuitforge_core
pyr0ball 67701f0d29 feat(orch): agent self-registration and coordinator heartbeat loop
coordinator/app.py:
- Add POST /api/nodes — agents POST {node_id, agent_url} to self-register;
  coordinator immediately polls the new agent for GPU info
- Add lifespan context manager that starts/stops AgentSupervisor heartbeat
  loop (previously the loop was never started)

cli.py start:
- Add --node-id flag (default 'local')
- Pre-register the local agent URL (http://127.0.0.1:{agent_port}) so the
  heartbeat loop can poll it immediately on startup
- Drop redundant lease_manager.register_gpu() call — supervisor.poll_agent()
  now does this via the heartbeat after the agent responds

cli.py agent:
- Add --advertise-host flag for NATted/multi-homed nodes
- Fire registration POST to coordinator in a daemon thread (2s delay) so
  uvicorn.run() can start binding immediately; no double uvicorn.run()
2026-03-31 19:20:35 -07:00
..
config feat: add config module and vision router stub 2026-03-25 11:08:03 -07:00
db fix(core): SQLite timeout=30, INSERT OR IGNORE migrations, parameterize tier unlockables 2026-03-31 10:37:51 -07:00
llm feat: add LLM router (extracted from Peregrine) 2026-03-25 11:06:29 -07:00
pipeline feat: add wizard and pipeline stubs 2026-03-25 11:09:40 -07:00
resources feat(orch): agent self-registration and coordinator heartbeat loop 2026-03-31 19:20:35 -07:00
tasks fix(tasks): fix VRAM accounting race, lock scope, type annotations 2026-03-31 09:15:09 -07:00
tiers fix(core): SQLite timeout=30, INSERT OR IGNORE migrations, parameterize tier unlockables 2026-03-31 10:37:51 -07:00
vision feat: add config module and vision router stub 2026-03-25 11:08:03 -07:00
wizard feat: add wizard and pipeline stubs 2026-03-25 11:09:40 -07:00
__init__.py feat: scaffold circuitforge-core package 2026-03-25 11:02:26 -07:00