Node-side (data-station) services for the FLAME platform.
Privacy-preserving, federated analytics across distributed institutions —
the components that run at a node, alongside the central Hub.
Documentation · Quick Start · Services · Packages · Hub
FLAME Node is the home of the node-side services for FLAME (PrivateAIM) — a privacy-preserving analytics infrastructure that runs distributed computations across institutional boundaries without moving the underlying data. The services in this repo run at a data station (node) and are the counterpart to the central Hub.
It is structured like the Hub repo: an npm-workspaces monorepo orchestrated by Nx, with
TypeScript services under apps/*, shared libraries under packages/*, the same hexagonal
(ports & adapters) architecture, and the same conventions. Services consume the
published @privateaim/* and @authup/* packages rather than re-vendoring Hub code.
Important
This monorepo holds only a subset of the FLAME node-side services. The data station runs several components; this repo currently contains the new TypeScript message broker. Other node-side components live in their own repositories and may stay there — not everything is consolidated into this monorepo.
Runnable applications. Each service follows the same hexagonal (ports & adapters) architecture as the Hub backend services.
| Service | Description |
|---|---|
| node-message-broker 💬 | Node-side message broker — flamesdk-compatible container REST API, node-to-node end-to-end crypto, and local webhook delivery; relays to and pulls from the Hub durable mailbox. Replaces the legacy Java node-message-broker. |
Further node-side services may be added here over time; others may remain in their own repositories.
Shared, node-specific libraries live under packages/*. None are published
yet — cross-cutting concerns (logging, DI base, HTTP helpers, domain types, the Hub
message client) come from the published @privateaim/* packages maintained in the
Hub repo, not from local copies. Node-specific
shared kits will be added here as the service set grows.
- Node.js 24+
- npm (workspaces)
External services (for running the broker locally): Authup (node-local OAuth2), the Hub message broker (durable mailbox), and server-core (participant + analysis-credential resolution).
# Install dependencies
npm install
# Build all packages (Nx, dependency-aware)
npm run build
# Run the test matrix (Nx + Vitest)
npm run test
# Lint
npm run lint
npm run lint:fix # with auto-fix# Run a service (CLI entry point)
npm run cli --workspace=apps/node-message-broker -- startEach service documents its own configuration and scripts in its README.md.
FLAME Node is built on the same stack as the Hub — open-source libraries maintained by the
same author:
Authup (identity & access),
Routup (HTTP routing),
Hapic (HTTP clients), and
validup (validation) —
orchestrated with Nx, built with tsdown,
and tested with Vitest. It consumes the published
@privateaim/* domain & server kits from the Hub.
- AGENTS.md — repo guide, with the detailed
.agents/*references (structure, architecture, testing, conventions). - Each service has its own
README.md.
The design authority for the message broker (Hub + Node tracks) lives in the Hub repo's working plans (Plan 013) and roadmap issue #1710.
Contributions follow the same conventions as the Hub: Conventional Commits,
ESLint, and the hexagonal architecture described in .agents/conventions.md.
Versioning and changelogs are owned by release-please — do not hand-edit them.
Created and maintained by Peter Placzek (@tada5hi), with contributions from the PrivateAIM team. If you have any questions, feel free to reach out.
Made with 💚
Published under Apache 2.0.