liquidmetal-dev / liquidmetal-dev/brigade

Topology B: remote-host control plane

Open
#4 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Elixir
Stars
2
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Goal

Support a central control-plane deployment where Brigade nodes are NOT co-located on the flintlock hosts and dial remote flintlockd endpoints over the network. Complements the current topology A (a Brigade node on every host).

Why

Some fleets can't run BEAM on every microVM host, or want the orchestrator lifecycle decoupled from hosts. flintlock hosts stay lightweight; a small Brigade cluster (2–3 nodes) holds the host inventory and dials them.

Seams already in place

The behaviours were designed for this — no core rewrite expected:

  • Brigade.HostDriver — add a Remote impl (network dial + mandatory mTLS/basic-auth). Local stays for A. Host already carries auth_token + tls.
  • Brigade.HostRegistry — add a static-config / API provider (remote hosts are not Erlang nodes, so they can't self-register on nodeup).
  • Brigade.Store — consider a Postgres impl for the central control plane (Mnesia is tied to the mesh).

Considerations

  • Host liveness can no longer piggyback on Erlang nodedown — needs active health-checking of remote endpoints (the TCP/gRPC probe already exists in LocalFlintlock.HealthMonitor, generalize it).
  • Quorum gating still applies to the (smaller) control-plane cluster.
  • Reconciler currently runs per-host over localhost; remote mode needs a control-plane-driven reconcile fanning out to endpoints.

Deferred from the M0–M4 build.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading Brigade.HostDriver, Brigade.HostRegistry, Brigade.Store, LocalFlintock.HealthMonitor, and the current reconciler entry point. Trace how local registration, liveness, quorum gating, and per-host reconciliation work. Done means remote hosts can be configured, authenticated, health-checked, persisted centrally, and reconciled without relying on nodeup.

Written by the indexing model from the issue text.

Assessment

Tech stack
elixir, grpc, postgres
Domain
backend, databases, distributed-systems, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.