Architecture
Overview
Hocus consists of the following components:
- Control plane - stateless Node.js server that serves the web dashboard. It's written in Remix.
- Temporal - stateless workflow engine that orchestrates the execution of prebuilds and other tasks.
- Agent - stateful Node.js application (in fact a Temporal worker) that runs on each machine that hosts workspaces or executes prebuilds. It manages virtual machines. Assumes it's always running in a container.
- Postgres database - stores information about projects, workspaces, prebuilds, and other entities. Also used by Temporal.
- OIDC Provider - used to authenticate with the control plane. If you use the quickstart script, it will be Keycloak. This can be any OIDC provider, including GitHub, GitLab, Google, and Azure Active Directory.
The application's state is stored in Postgres and on the agent's hard drive. Currently Hocus supports only a single agent, but in the future it will be possible to run multiple agents on separate machines.
Agent Networking
The following is a diagram of components and networking inside the agent container: