Control Plane
How the web UI, iPhone app, proxyd, chat backend, the Skills Engine, and the vendor fallback fit.
snapshot 2026-05-05
source src/agentropy/server/proxyd.py, src/skg/generate.py, src/skg/integrations/agent_proxy.py, lib/chat_backend.py, lib/agent_router.py
local worktree guide
Entry Points
Where The User Enters
The browser surface is a single unified shell at /. Per-tab anchors: /#chat, /#decide, /#roadmap, /#calls, /#dashboard, /#skg-log, /#nodes, /#devices. Standalone deep links live at /blog, /plan?session=<id>, /decide?id=<rid>, and /proposals/<name>.
The iPhone app uses /mobile/v1/* routes for pairing, inbox, chat, roadmap, dashboard projections, and growth-governor state.
The web pages are thin control surfaces. The Mac process owns the work, state, vendor routing, and local tools.
Skills Engine
Where The Skills Engine Composes And Where Vendors Enter
Skills Engine Chat replies are composed by the Skills Engine first, with no vendor call. A learned skill runs host primitives and renders the answer locally; repeat and parameterized requests (for example the same question about a different city) compose from one learned skill.
vendor A vendor is called only when the Skills Engine has no skill for the request, and for the generative back-office paths: research summaries, weekly review, rule-draft learning, design review, bias checking, and publish review. Those paths enter through agent_router or a vendor-specific tool loop, and the chat reply a vendor produces is captured back into the Skills Engine as a new skill.
Dashboard rendering, device enrollment, status collection, token checks, file projection, and most collector writes are deterministic. They may feed context into a later model call, but they do not call a model themselves.
Vendor calls record metadata in telemetry. Prompt and reply payloads are excluded from call telemetry by design.
State
Shared State
The control plane does not invent a second database for the UI. It projects existing local files into web and mobile views.
Chat sessions, roadmap events, inbox items, approval actions, dashboard status, and growth packets all remain inspectable on disk.