Architecture and services

A set of services behind one entry point. The API gateway owns the business logic, and specialist services handle data, documents and sandboxed work.

It runs as containers with Docker Compose.

Overview#

Figure 1. Everything enters through one proxy. Only the API gateway talks to the data stores and the document service.

Figure 1. Everything enters through one proxy. Only the API gateway talks to the data stores and the document service.

Core services#

ServiceRole
Web consoleThe screens people use (Next.js)
API gatewayAll business logic: sign-in, connectors, canonicalization, APIs, MCP, approvals, evaluation and AI features (Spring Boot)
Reverse proxyThe only public entry point (nginx)

Data plane#

StoreHolds
PostgreSQLUsers, workspaces, settings, audit, and unified records with lineage. Used in production; local development uses a single-file database.
Apache Jena FusekiThe ontology and each workspace's knowledge fabric
Neo4jThe record store in production, and access policies
Lakehouse (DuckDB and Spark)An alternative record store in Parquet files. It files records by system and object, not by workspace.
MinIOUploaded files and document originals
Apache KafkaChange events for live updates. A single server can use an in-memory bus instead.

Document intelligence#

ServiceRole
Document serviceReads, splits, indexes and answers from documents (Python)
QdrantSearch index of document passages
FalkorDBGraph of codes and terms that documents define or mention
Model server (our own GPU)PaddleOCR-VL, Qwen3 reranker and Qwen3 embedder

See Document intelligence for how they work together.

Sandboxed workers#

ServiceRole
Functions runnerRuns admin-written functions in isolated sandboxes
Insight worker (opt-in)Computes numerical insights from approved plans. Runs beside the gateway.
Artifact exporter (optional)Turns generated reports and slides into PDF or PowerPoint

External services#

ServiceUsed forNeeded when
Source systemsReading and writing business dataA system is connected
KeycloakSingle sign-onSingle sign-on is turned on
Language model providerAI features and document answersAI features are used; can be self-hosted
OpenAI embeddingsSearch vectors for documentsThe default; self-hosted embeddings avoid it
GPU model serverOCR and rerankingDocuments are added or searched; OCR falls back to Docling
Varnam component registryBuilding Pulse and Metaspace screensThose features are used
Microsoft GraphEmail sent by agentsAgent email is set up

Design principles#

  • One way in. Only the proxy is public. Every data store is reachable only from the server itself.
  • The gateway owns the data. The console never talks to a data store directly.
  • Degrade, don't fail. If an optional service is down, the rest keeps working and the affected feature says so. For example, if the document service is down, records and mappings keep working.
  • Heavy work stays apart. Spark, model inference and user code run outside the gateway.