Skip to content

PrivateAIM/node

FLAME Node

FLAME Node

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.

node >=24 Conventional Commits license

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.

Services

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.

Packages

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.

Quick Start

Prerequisites

  • 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 & Build

# 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

Development

# Run a service (CLI entry point)
npm run cli --workspace=apps/node-message-broker -- start

Each service documents its own configuration and scripts in its README.md.

Built With

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.

Documentation

The design authority for the message broker (Hub + Node tracks) lives in the Hub repo's working plans (Plan 013) and roadmap issue #1710.

Contributing

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.

Credits

Created and maintained by Peter Placzek (@tada5hi), with contributions from the PrivateAIM team. If you have any questions, feel free to reach out.

License

Made with 💚

Published under Apache 2.0.

About

FLAME Node, node-side (data-station) services for the FLAME platform: a privacy-preserving analytics infrastructure for federated data analysis across distributed institutions.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages