Skip to Content
ArchitectureHow the system works
Architecture · System mechanics

Inside NovusLens, layer by layer.

NovusLens turns company records into an organisation map, a knowledge libraryKnowledge libraryThe organisation’s written procedures and definitions. Each entry records its source, date and who can read it. NovusLens cites these entries as supplied information. and answers linked to evidence. Docker and MyceliumMyceliumThe application infrastructure underneath NovusLens. Its connected services exchange updates and keep the ordered structural log. provide application infrastructure. PostgresPostgresThe database software that stores the tables read by the NovusLens screens, along with document bodies, access records and protected personnel records. is the database that supplies the app’s records. The reasoning service calculates measurements and handles questions. Configured AI models help interpret records and compose answers. The web application displays the result and lets people contribute evidence and record decisions.

Sources connect through imports, acquirers and signed intake. Original evidence can enter Postgres directly. Structural records also travel through Mycelium and the projection worker, which updates database views. The internal wiki stores knowledge in Postgres. Scroll sideways on small screens.

Select an input path, or inspect any of the sixteen components. Arrows show record flow. The dotted wiki link shows where knowledge is stored.

One input can take two paths

An infrastructure export contains both the original evidence and the structure that NovusLens maps. The importer saves the original file as evidence in Postgres. It also extracts documented infrastructure cellsCellA box on the map that stands for a team, service, supplier or AI agent. It is a unit you can inspect, not necessarily a department or a person. and dependencies, using domain tags and labels to join them to the organisation map. Those structural records pass through Mycelium’s event log. The projectionProjectionThe regular pass that brings the read model up to date with the canonical log. It runs every 30 seconds by default. worker reads them and updates the queryable map in Postgres.

The source file does not have to travel through Mycelium to reach the database. Other inputs also write directly to the database, including document statements, sealed identity joins from personnel exports and signed activity batches.

What the layers do

LayerRole
SourcesCompany files, supported cloud exports, operational systems and agent estatesAgent estateThe collection of AI agents an organisation operates, together with the systems and providers they use. supply records.
ConnectImports parse files. AcquirersAcquirerA program that reads a customer's operational records, calculates quantities from them and records the results in NovusLens. read sources. A separate correctorCorrectorThe NovusLens component that compares measurements with recorded statements and adds observations and differences to the log. records measured observations. Signed intake checks and stores event batches.
Application infrastructureDocker hosts services. Mycelium connects writers and readers through its meshMeshA set of connected Mycelium services that exchange updates and keep the NovusLens log., live coordination and ordered structural log.
Data sourcePostgres holds maps, evidence, knowledge, identity joins and pending deliveries. The internal wiki stores its entries in the same database.
ComputeReasoning checks access, retrieves records, calculates measurements and handles actions. Models interpret context when a task needs them.
DisplayThe web app presents maps, the Knowledge library, evidence and answers. Its server handles scoped database reads and requests to reasoning.

The bands describe responsibilities. They do not imply one containerContainerA running program with its own packaged software and isolated environment, managed by Docker on the host. per icon or one pipeline for every input. Solid arrows connect the services that produce and consume records. Mycelium carries structural connections and keeps their ordered log. The dotted wiki link shows where the collection is stored.

Which path each input takes

InputProcessing and storage
Organisation charts and assessmentsImports store source files in Postgres. Charts record structure through Mycelium. Assessments record scores. Projection updates the readable map.
Policies, runbooks and board papersDocument ingestionIngestRead supplied records or documents and add their information to NovusLens, after the required checks. writes authored statements and source documents into the internal wiki in Postgres.
Personnel exportsThe personnel connectorConnectorSoftware that reads records from a source system, such as an incident tool. A customer-written file connects those records to teams or services in NovusLens. stores a sealed, hashedHashA fixed-length fingerprint calculated from content. Comparing fingerprints helps detect changes and match records. identity joinSealed identity joinStored links between employee fingerprints and teams or services. The fingerprints replace readable employee identifiers. Product pages do not show the links for individual people. in Postgres. Person-level records enter neither the structural log nor the wiki.
Cloud and datacentre exportsSupported cloud inventories, Terraform state and datacentre records supply documented structure. Original exports enter Postgres. Mapped records enter the structural log.
Operational APIsAPIApplication programming interface: a defined way for one program to request data or actions from another. and network-flow exportsAcquirers publish compact readings. A separate corrector commits measured observations and findingsFindingA difference in the records that needs a decision. It includes its sources and can describe a slow handoff, disputed fact or missing owner.. Score and flow acquisition retain supporting evidence and calibrationsCalibrationThe customer's own rule that turns raw figures, such as a gauge, a workflow history or an incident log, into a C/A/R score. A score moves when the calibration moves, and the change is recorded. in Postgres.
Agent declarations and boundary feedsAgentFactsAgentFactsA signed statement from an agent about its allowed work, its permissions and the person answerable for it. import and enrolled boundary acquisition retain source artifacts in Postgres, then commit mapped declarations and findings through Mycelium.
Signed agent activityThe reasoning HTTPHTTPHypertext Transfer Protocol: the rules a browser or program uses to send a request to a web service and receive its response. intake stores the signed batch, evidence and outboxOutboxA database list of saved messages waiting to be published. A message stays on the list until its progress is recorded. together in Postgres before acknowledging receipt. The projection worker later publishes references through Mycelium.

Cloud ingestion reads supplied Amazon Web Services (AWSAWSAmazon Web Services: a cloud platform whose account and resource exports NovusLens can read.), Azure and Google Cloud Platform (GCPGCPGoogle Cloud Platform: a cloud platform whose project and resource exports NovusLens can read.) files in supported formats. It does not discover the estate through live cloud APIs. Operational readers support Jira or ServiceNow tickets, Prometheus metrics, GitHub workflow runs and PagerDuty incidents. Network-flow inputs are supplied Hubble or Amazon Virtual Private Cloud (VPCVPCVirtual private cloud: a private network defined inside a cloud provider's infrastructure.) Flow Logs exports. Customer mappings connect those readings to the organisation map. Demonstration sources remain labelled simulated.

For signed activity, a receipt confirms storage. It does not establish independent assurance or mean the records have already been projected. Agent declarations use a separate connector path and do not pass through this signed-event outbox.

Where the internal wiki fits

The internal wiki appears in the app under Records → Knowledge library. It holds policies, runbooks, definitions and other written accounts linked to sources and the teams they concern. The graphGraphA model made of units and links between them. In NovusLens it records teams, services and their dependencies. remains the account of structure and measurement. The wiki holds statements from documents.

The meaning module runs within the application and stores entries in Postgres. The book icon represents the knowledge collection stored in Postgres. Current entries retain the supplied text. An automated curator and the Mycelium wiki gatewayGatewayA service that accepts requests and passes them into another system. The Mycelium gateway gives NovusLens access to the mesh. are planned. People can request a model-assisted review for contradictory statements.

The web app sends knowledge-library reads and contributions through the reasoning service. Reasoning checks each viewer’s access and can retrieve permitted wiki entries alongside graph records when answering a question. The repository’s developer wiki is separate from this customer knowledge base.

How questions and decisions move

  1. Identify the person making the request. The web app uses the signed-in viewer. Its server reads permitted maps directly from Postgres.
  2. Retrieve or calculate. Reasoning supplies current computed scores, retrieves permitted evidence and handles questions or knowledge-library operations.
  3. Interpret when needed. A configured model can extract an interview proposal, compose an answer or review document statements. Measurements come from calculations and evidence.
  4. Confirm structural proposals. A person confirms captured changes. Reasoning records structural decisions, resolved findings and assessments through Mycelium.
  5. Refresh the view. Projection updates Postgres. Some actions also refresh the view immediately. The web app shows the resulting maps, evidence and answers.

Reasoning also writes wiki entries, pending proposals and audit records directly into Postgres. The browser reaches these services through the web server. It does not connect directly to the database, mesh or AI endpointEndpointA particular address on a service that accepts a defined kind of request..

What Docker hosts

An installation has seven running containers: the web app, reasoning, projection, Postgres and three Mycelium sidecars. A startup job prepares the database. Other optional jobs load demonstrations or run connector and administration commands. Imports and source connectors run as jobs. Signed intake and the wiki run within application services.

The services communicate over a private backend network. Services that need outbound access also join an outbound network. Persistent volumes retain Postgres and each Mycelium sidecarSidecarA separate supporting process that runs beside the application. Here it runs Mycelium and exposes the gateway that NovusLens calls.’s records. Backups must preserve the database and mesh together. The projection container reads the structural log and pending signed-evidence deliveries. The database does not push those records itself. A configured reasoning service can also run the shared delivery helper.

The diagram’s outline describes the core Docker ComposeDocker ComposeThe Docker tool that starts and connects the services listed in one configuration file. deployment. It does not prescribe every installation’s physical layout.

Where AI runs

Model hosting is configurable. People can browse and import records without a model. Model-assisted tasks need an external endpoint or an enabled local Ollama container. The model-hosting area sits beside the core deployment to show this choice. An enabled local Ollama container still belongs to the deployment.

NovusLens uses an OpenAI-compatible HTTP endpoint. OpenRouter is supported when configured. Interview capture, question answering, strategy advice and contradiction review can each use a different model through that endpoint. The interactive app calls models through reasoning. The command-line interview builder can also call the endpoint directly. Model requests do not travel through Mycelium.

Models return proposals, interpretations and explanations to application code. They do not write directly into the database or create measured scores from descriptive language.

Last updated