Architecture tour
How clients, control plane, workers, and proxy line up — oriented for builders evaluating Zectre.
System sketch
┌── control plane ─────────────────────────────┐
zectre CLI / │ zectre-api (REST) zectre-scheduler │
dashboard ──HTTP──▶ │ zectre-registry zectre-build (opt.) │
└───┬────────────────────────────────────────┘
│
Per worker: │
zectre-agent ◀══HTTP══▶ zectre-scheduler register, heartbeat,
│ task actions (scheduler
│ pushes to agent HTTP API)
│
zectre-agent ──HTTP──▶ zectre-api e.g. task log upload
End users / apps ──▶ zectre-proxy ──▶ task backends (host:port from DB)How traffic actually flows
- Human clients (CLI, dashboard) talk to
zectre-apiover HTTP (REST/JSON) for projects, deployments, env, auth, etc. - Agents do not pair only with the API: they register and heartbeat against
zectre-schedulerover HTTP, and the scheduler pushes work to an HTTP server on the agent (task start/stop and related actions). - The agent also calls the API for some operational paths (for example shipping logs to
/api/v1/tasks/...). zectre-proxyterminates user traffic, looks up routing metadata in Postgres (preview URLs,routes, app subdomains), and forwards to the live task address.
Responsibility cheat sheet
| Component | You should think… |
|---|---|
| API | “REST surface for operators and automation; owns much of the persisted platform model.” |
| Scheduler | “Allocates work to nodes; drives agents over HTTP (register/heartbeat + pushed actions).” |
| Registry | “Artifact storage referenced by deployments.” |
| Agent | “Supervisor on a node: runs processes, reports state, obeys the scheduler.” |
| Proxy | “HTTP ingress: resolves host → deployment/task from DB, then connects to {node.address}:{port}.” |
| Catalog (optional) | “OAuth + JWT issuer the API trusts via JWKS.” |
Why this shape
- Separation of plan and run — API and scheduler decide what should run and where; agents enforce that it runs on their machine.
- Artifact-centric deploys — Reproducible rollbacks and promotions when builds feed the registry.
- Dynamic proxy — Tasks move between nodes; the proxy re-reads routing state instead of assuming fixed DNS only.
Next steps
- Operate it: Platform services, Zectre API, Platform overview, Dashboard.
- Ship code: CLI quick start and First deployment.