12 Glossary

Domain Terms

TermDefinition
NebuShort for Nebuchadnezzar, the ship of the free in The Matrix. The name of this chat server.
MatrixAn open standard and communication protocol for real-time communication (https://matrix.org)
HomeserverA Matrix server that stores user accounts, rooms, and events for a domain
RoomA Matrix concept: a named, persistent channel where users exchange messages and state events
EventThe fundamental unit in Matrix: a JSON object representing a message, state change, or reaction
ThreadA Matrix concept (spec §11.12) for grouping related replies under a parent event using m.relates_to with rel_type: "m.thread"
Bundled AggregationsInline relation metadata (e.g. thread reply count, latest reply) delivered in unsigned.m.relations of a parent event during /sync to avoid extra HTTP round-trips
m.relates_toA Matrix event content key that links a reply or reaction to its parent event via event_id + rel_type
SyncMatrix's long-polling endpoint (GET /sync) that delivers new events and room state to clients
since-tokenAn opaque cursor used with /sync to retrieve only events after a given point in time
Content-Hash Event IDEvent ID format $<base64url(SHA-256(canonical_json(event)))> - tamper-evident, deterministic
Server-Server APIThe Matrix federation protocol - deliberately excluded from Nebu
Power LevelA numeric value (0–100) controlling what a room member can do in a room
EDU / PDUEphemeral Data Unit (typing, presence) / Persistent Data Unit (messages, state) in Matrix terminology

Technical Terms

TermDefinition
Go GatewayThe stateless Go binary that handles all HTTP traffic, TLS termination, OIDC validation, and Admin UI serving
Elixir CoreThe Elixir/OTP application (umbrella) managing stateful chat logic via GenServers
gRPCGoogle Remote Procedure Call - the protocol used for Go Gateway ↔ Elixir Core communication
EventBusA gRPC server-streaming service from Elixir Core to Go Gateway for real-time event delivery
message_bufferA PostgreSQL table that holds outgoing events when the Elixir Core is temporarily unavailable (ROT status)
Drain WorkerA Go goroutine that processes buffered messages from message_buffer when the Core reconnects
GRÜN/GELB/ROTGerman for Green/Yellow/Red - the three-state health model for the gRPC connection status
HordeAn Elixir library providing CRDT-based distributed process registry and supervision (https://hexdocs.pm/horde)
ETSErlang Term Storage - an in-memory key-value store built into the Erlang/OTP runtime (no Redis needed)
libclusterElixir library for automatic cluster node discovery (Phase 2)
golang-migrateGo library for PostgreSQL schema migrations; the Go Gateway is the sole schema owner
MinIOS3-compatible object storage server used as the local-dev media backend (Epic 12). Apache 2.0 licensed.
nebu-mediaThe MinIO bucket (created by the createbuckets init container) where all media uploads are stored
StorerGo interface (Put / Get / Delete) in media/internal/storage that abstracts file-system and S3 backends. LocalStorer implements it for the local filesystem; MinIOStorer for MinIO. Both handlers depend on Storer via injection (Story 12.2).
oapi-codegenA Go code generator that produces types and a ServerInterface from an OpenAPI 3.1 YAML spec
PSKPre-Shared Key - used for node registration security in the MVP (Docker Compose secrets)
mTLSMutual TLS - ephemeral certificate-based authentication planned for Phase 2 node registration
AIMDAdditive Increase Multiplicative Decrease - the adaptive drain rate algorithm for Phase 2
OIDCOpenID Connect - the authentication protocol used for all user logins (Keycloak, Azure AD, Dex, Google)
PKCEProof Key for Code Exchange - OIDC extension required for public clients
Bootstrap ModeFirst-run state where the first OIDC login automatically receives instance_admin role
Four-Eyes PrincipleCompliance access requires approval from two instance_admin users
Ed25519A fast elliptic-curve signing algorithm used for message non-repudiation
X25519An elliptic-curve Diffie-Hellman key exchange algorithm used for PII encryption
Canonical JSONDeterministic JSON serialization (keys sorted alphabetically) used for event hashing
GDPR / DSGVOGeneral Data Protection Regulation (EU) / Datenschutz-Grundverordnung (German)
arc42A lean architecture documentation framework - see https://arc42.org
BMADBuild More Architect Dreams - the agent-driven development method used for Nebu development

Roles

RoleDefinition
instance_adminCan manage users, rooms, and configuration; can approve compliance requests
compliance_officerCan request and access compliance exports (four-eyes approval required)
userRegular chat user; no administrative privileges
OperatorThe organization or individual who deploys and runs a Nebu instance
HosterAn IT service provider who runs Nebu as a managed service for customers

Source: CLAUDE.md, §Tech Stack, §Matrix API Scope; _bmad-output/planning-artifacts/architecture.md, §Naming Conventions; _bmad-output/planning-artifacts/prd.md, §User Journeys; Story 9-28 (Thread, Bundled Aggregations, m.relates_to)