Skip to content

Set up a checkout

The local development stack contains Postgres, the control plane, and the web app. It intentionally has no node agent: the agent needs a Linux GPU host, so a local checkout is for UI and API work unless your workstation is also configured as a fleet host.

  1. Clone the repository and its submodules.

    Terminal window
    git clone --recurse-submodules https://github.com/accreleus/quasar.git
    cd quasar
  2. Read the project contracts.

    Terminal window
    less CLAUDE.md
    less AGENTS.md
    make help
  3. Initialise the checkout.

    Terminal window
    make init

    This is idempotent. It initialises the protocol submodule, builds the containerised development toolchain, and checks the environment. It never overwrites an existing .env.

  4. Check the environment and configuration.

    Terminal window
    make doctor
    make config-check
  5. Start the local agentless stack.

    Terminal window
    make up
    make status

Use make dev-web for the Vite development loop and make dev-cp to run the Go control plane against an ephemeral Postgres database. Stop the local stack with make down; its volumes are preserved.

Each worktree gets a derived QUASAR_INSTANCE, its own Compose project, a dedicated ten-port block, and an ephemeral test database. Do not hardcode ports, container names, or Compose project names in new tooling. Use the helpers under scripts/dx/ and expose routine workflows through the root Makefile.

Terminal window
cd site
npm ci
npm run dev

Build the production site with npm run build. Keep user and operator material outside this developer section; implementation and contribution material belongs here or in the repository’s canonical docs/ tree.

The build reads protocol/openapi.yaml to generate the Control-plane API reference, so it needs the protocol submodule present. make init handles that; in a checkout cloned without --recurse-submodules, run git submodule update --init protocol first. The build says so if it is missing.