diff --git a/circuitforge_core/resources/coordinator/app.py b/circuitforge_core/resources/coordinator/app.py index c25d061..6c9961b 100644 --- a/circuitforge_core/resources/coordinator/app.py +++ b/circuitforge_core/resources/coordinator/app.py @@ -1,10 +1,14 @@ from __future__ import annotations +from pathlib import Path from typing import Any from fastapi import FastAPI, HTTPException +from fastapi.responses import HTMLResponse from pydantic import BaseModel +_DASHBOARD_HTML = (Path(__file__).parent / "dashboard.html").read_text() + from circuitforge_core.resources.coordinator.agent_supervisor import AgentSupervisor from circuitforge_core.resources.coordinator.eviction_engine import EvictionEngine from circuitforge_core.resources.coordinator.lease_manager import LeaseManager @@ -29,6 +33,10 @@ def create_coordinator_app( app = FastAPI(title="cf-orch-coordinator") + @app.get("/", response_class=HTMLResponse, include_in_schema=False) + def dashboard() -> HTMLResponse: + return HTMLResponse(content=_DASHBOARD_HTML) + @app.get("/api/health") def health() -> dict[str, Any]: return {"status": "ok"} diff --git a/circuitforge_core/resources/coordinator/dashboard.html b/circuitforge_core/resources/coordinator/dashboard.html new file mode 100644 index 0000000..79fc9cb --- /dev/null +++ b/circuitforge_core/resources/coordinator/dashboard.html @@ -0,0 +1,340 @@ + + +
+ + +| Service | Node / GPU | VRAM | Priority | TTL / Expires | +
|---|