Skip to Content
ReferenceCommand-line reference
Reference · Command line

The command line, as the code reads it.

This page lists every subcommand and flag of six entry points: the lens command, the development driver, and four Python modules. Each row comes from the argument parser or the dispatch code in the file named in its section. Where a help text or a module comment disagrees with the code, this page follows the code.

For Docker administration, use ./lens graph and ./lens connectors for the two Python modules, or ./lens exec -- python -m ... for any module; the lens command section lists the tree. ./lens uploads host files given with --file, --mapping, --fixture or --enrolment, and copies a host file given with --out back after the command succeeds. Upload any other input file on standard input first, then pass its containerContainerA running program with its own packaged software and isolated environment, managed by Docker on the host. path:

./lens exec -- sh -c 'cat > /tmp/answers.json' < answers.json

GraphGraphA model made of units and links between them. In NovusLens it records teams, services and their dependencies. materialise and requeue commands need --host mesh-0 in Docker. Pass --viewer with the account chosen during setup when a command requires an operator.

Use ./lens run -- <command> for a fresh CLICLICommand-line interface: commands you type into a terminal to operate software. container, or ./lens exec -- <command> in a running service. Both use the installation configuration.

./lens

The one entry point for an installation, its running services and the developer checks, at the repository root. It needs Python 3.9 or newer; Preparing deletion needs no Docker. Other commands except help, version, doctor and some dev scripts need Docker. The ./ops and installer script entry points hand their arguments to it. The operator shell how-to shows it in use.

Usage: ./lens [global options] <command> [options] [arguments]. Run ./lens <command> --help for one command. For graph and connectors, put --directory and --version after the command and before the verb, as in ./lens graph --directory /srv/lens create-viewer --help. Everything after the verb belongs to the command.

CommandArguments and flagsPurpose
setup, configure, start, resume, monitor, status, logs, stop, runthe installer’s own arguments, --version VRun the installer container on the release the installation records. setup configures and then deploys; configure only saves the configuration. start starts the saved installation again; deploy is another name for it. setup without --init builds this checkout (--init local) when it is a Git checkout, and otherwise pulls ghcr:nightly. --version V runs another published release for this run only and leaves the record unchanged.
delete[--directory D] [--yes-i-am-sure <install-type>]Prepare deletion, then remove only the installation’s labelled demo resources. Read demo deletion before confirming.
backup, restore, forget-orgbackup [DEST]; restore ARCHIVE --yes [--allow-release-mismatch] [--replace-env | --allow-env-mismatch]; forget-org ORG --reason TEXT --yesBack up, restore and erase the installation’s two primary stores through the installer container. backup writes one private archive of the database, the meshMeshA set of connected Mycelium services that exchange updates and keep the NovusLens log. volumes, the setup metadata and .novuslens.env. restore needs no earlier setup: it puts back the archive’s configuration when the installation has none. It refuses a mismatched release or configuration file unless the matching flag is given. forget-org erases one organisation and cannot reach earlier backups or the mesh commits.
graph--directory D, --version V, then <verb> [flags]Run python -m conway_graph <verb> in the running reasoning service. The verbs are the ./lens graph table below; create-viewer, update-viewer and keyperson manage accounts and the key-person check. ./lens graph --help lists them, and each takes --help. --org is an ordinary flag after the verb. A missing required flag or a bad --role is refused on the host before Docker runs.
connectors--directory D, --version V, then <verb> [flags]Run python -m conway_connectors <verb> in the running reasoning service. The verbs are the ./lens connectors tables below. --org is an ordinary flag after the verb, as in ./lens connectors document --org <org> --viewer <account> --title <title> --file <file>. ./lens connectors --help lists them, and each takes --help.
viewer, create-viewerthe create-viewer flagsShorthands that run ./lens graph create-viewer with the same flags.
update-viewerthe update-viewer flagsShorthand that runs ./lens graph update-viewer with the same flags.
keyperson, document, acquire, correct, agents, agent-source, notify, graph --, connectors --not commandsEach exits non-zero and names the command to use: ./lens graph keyperson or ./lens connectors <verb>.
compose--directory D, --version V, -- <arguments>Run Docker ComposeDocker ComposeThe Docker tool that starts and connects the services listed in one configuration file. with the checked installation configuration and recorded release, adding the development overlay when selected. Arguments are literal; input files are not uploaded automatically.
docker-- <arguments>Run a host Docker command, such as registry sign-in or network inspection. No installation configuration is required.
exec--service S, --directory D, --version V, -- <command ...>Run any command in a running service. The default service is reasoning. --version V on exec, compose and the service commands picks another published release for this run only.
walk, down, gates, smoke--version dev|local|latest|nightly|0.x.yRun the development driver’s command of the same name. The default is the release the installation records, with a local build run as local. Without a record it is latest.
doctornoneCheck Python, Docker, Compose and the installation, and name each fix.
versionnonePrint this build of lens and the release the installation records.
fetch-source<commit>, the full 40-character commitFor a lens copied alone onto a host: download the source at that commit from GitHub into the directory holding lens, which must hold nothing else. GITHUB_TOKEN, when set, signs the download. Then --init local builds that source.
opsany ./lens ops commandRun the development driver; ./lens ops help lists its commands. It picks its version like smoke.
dev<script> [arguments]Run a repository script. ./lens dev lists them; scripts marked [host] run on this host and the rest in the development runner.

Every command runs the release that .novuslens.env records. A --version in a different mode, such as dev on a ghcr installation, is refused; change the mode with start --init.

The commands that run in a service read .novuslens.env from the --directory option, then the NOVUSLENS_INSTALL_DIR variable, then the directory that holds ./lens. They copy a host file given with --file, --mapping, --fixture or --enrolment into the service’s /tmp and pass the new path on. A host path given with --out is written in the service, then copied back to the host when the command succeeds.

Global optionPurpose
--init dev|local|local:<tag>|ghcr:<tag>|remote:<version>Initialise the installation before an installation command. dev uses this checkout, local builds the images from it, local:<tag> builds them and tags them <tag>, and ghcr:<tag> or remote:<version> pulls a published release. <tag> is latest, nightly or 0.x.y.
--install-colimaOn macOS without Docker, install Colima with Homebrew without asking.
--install-dockerOn Linux without Docker, install Docker Engine without asking. Run as your own account, not root: it uses sudo and adds your account to the docker group.
--colima-flags '<flags>'The flags for colima start. The default is --cpu 4 --memory 8 --disk 100, plus --vm-type vz on Apple silicon.

Without --install-colima or --install-docker, ./lens prints the install commands and asks before running them. Without a terminal it refuses and names the flag. It never pipes a downloaded script to a shell.

./lens ops

The development driver, at the repository root. It is contributor tooling. It stops any mesh processes it finds, resets the read modelRead modelThe database tables used by the map, Ask and Find. NovusLens rebuilds these tables from its history of recorded changes. between runs, and runs the sidecarSidecarA separate supporting process that runs beside the application. Here it runs Mycelium and exposes the gateway that NovusLens calls. without persistence. Use the Compose installation commands for customer data.

Usage: ./lens ops --version dev <subcommand>. An unknown subcommand exits with code 64.

Only --version dev needs a source checkout. Any other version runs in its ops container from the source in that image, so a lens copied alone onto a host can run ./lens ops kit. That lens keeps the image’s controller files in .novuslens-ops/<version>/.

Most subcommands take no arguments. test accepts test paths. gates accepts a named group or --list. answers passes its arguments to scripts/answer_eval.py.

The runner takes the first free port from 3112 and prints its address. Every command in that runner uses the same port. Set NOVUSLENS_GATE_UI_PORT to a free port from 1 to 65535 when another demo uses it. Browser tests follow the selected port. UI cleanup checks the command and worktree before stopping a server; it refuses a Docker port forwarder or another worktree’s UI.

SubcommandArguments and flagsPurpose
gatesoptional group: all, mesh, customer, browser, llm, pr; --list lists groupsRuns the twelve release checks in order: smoke, test, steel, fresh, ask, federation, agents, domains, e2e, kit, boundary, durable. Writes a transcript to docs/gates/<date>-<sha>.md, with the head commit, whether the tree was clean, and a pass or fail with seconds per check. These are this project’s own release checks.
smokenoneThe regression base. Boots a fresh three-node mesh for each of two proof-of-concept scripts and runs them. Asserts that the gatewayGatewayA service that accepts requests and passes them into another system. The Mycelium gateway gives NovusLens access to the mesh.’s /metrics endpointEndpointA particular address on a service that accepts a defined kind of request. serves.
testoptional test pathsRuns workspace unit tests, the GuideGuideThe help pages inside NovusLens. They explain the pages, input formats and tasks in the version you use. They are product instructions, not evidence about the organisation. build check and dependencyDependencyA link where one unit needs something from another. A dependency is not a reporting line: it shows where work relies on something else. audits. Audits use pnpm audit --prod and pip-audit, checked against config/audit-triage.json.
test-meshnoneRuns the tests marked as needing a mesh gateway through the test driver.
steelnoneThe first acceptance run, on the demonstration organisation retail-lending. It builds the twin from the demonstration data and checks the critical path lengthCPLCritical path length. The total coordination weight of the longest chain of dependencies in the model. NovusLens reports it as index points, not elapsed time. (CPL) in index pointsIndex pointsThe unit of the dependency-chain index. Index points are structural weights, not hours or money, and every answer and what-if reports the index in them. through the Risk view. It then streams synthetic telemetryTelemetryMeasurements and activity records sent by a running system, such as ticket timings, network traffic or workflow results., runs the correctorCorrectorThe NovusLens component that compares measurements with recorded statements and adds observations and differences to the log. and checks the shift to a different CPL through the Data Governance view. Resets the read model on each run.
freshnoneThe third acceptance run. Builds a fresh organisation, meridian, which is the fictional demonstration organisation Meridian GridMeridian GridThe fictional demonstration organisation used by the demonstration walk and its sample data. Nothing about Meridian Grid describes a real company., end to end, with no hand-authored graph: a build-agent interview, cloud inventory ingestIngestRead supplied records or documents and add their information to NovusLens, after the required checks., a sealed personnel join and materialisation. Needs a configured OpenAI-compatible inferenceInferenceThe work a language model does to produce an answer from its instructions and input. endpoint; the default is local Ollama.
walknoneNot a release check. Builds the full Stage 2 twin on one persistent state and leaves it running, for browsing. ./lens ops --version dev down stops it. Needs Docker and a configured OpenAI-compatible inference endpoint; the default is local Ollama.
asknoneRuns the question-answering checks on the twin: tool guards, the external MCPMCPModel Context Protocol: a standard way for an AI application to discover and call named tools supplied by another program. client, the group routing, the sweep’s adjudication, and the compliance-verb filter. Needs a configured OpenAI-compatible inference endpoint; the default is local Ollama.
answersarguments passed to scripts/answer_eval.py: --runs N, --items ID,ID, --out FILE, --timeout NRuns the answer evaluation on demand. Equivalent questions must produce the same supported conclusions. The question set is config/answer-eval.json. It is not one of the twelve release checks.
federationnoneChecks sovereignty and federationFederationSharing selected signed facts and summaries between separate regional twins, while their detailed records stay in their own regions. between two region twins: a signed cross-region fact that verifies, a tampered one that is refused, the Group view, and the agent-to-agent conformance surface. PostgresPostgresThe database software that stores the tables read by the NovusLens screens, along with document bodies, access records and protected personnel records. only.
agentsnoneChecks the agent records: signed AgentFactsAgentFactsA signed statement from an agent about its allowed work, its permissions and the person answerable for it. declarations, measuredMeasuredThe top evidence level: a connected source recorded the observation within a stated period. A measurement shows what was observed on that occasion, not that it always holds. activity from external feeds 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. about missing controls.
domainsnoneChecks the business-domain taxonomy mapped onto 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 the team-to-domain boundary findings. Postgres and mesh, no language modelLanguage modelSoftware that produces text from instructions and supplied context. NovusLens checks its answers against the records retrieved for the question..
e2enoneBrowser end-to-end tests with Playwright and the system Chrome, for the per-cell chat, the Group view and the Governance lens. A test substitute for the language model and prepared sample records are used.
ux-checkenvironment: E2E_BASE_URL (default http://127.0.0.1:3111), E2E_WALK_ORG (default meridian)Runs the executive UI tests (pnpm --filter ui test:executive) and the overlap check against a running UI.
kitnoneThe clean-install check. A fresh read model and mesh, then the engagement kit’s minimal engagement for an organisation other than Meridian Grid, through product paths only.
boundarynoneChecks the public boundary in the customer profileDeployment profileA setting that selects customer or development behaviour. Customer mode refuses development credentials and uses the signed-in session as the identity.. Identity is the login session and nothing else. Exercised through the UI proxyProxyA service that receives a request and forwards it to another service. The NovusLens web proxy adds the signed-in identity and service token. and at the service.
durablenoneChecks that the canonical commit log survives a restart of the Compose installation’s persistent nodes, and a backup and restore round trip.
sidecarnoneCopies the image-owned pinnedPinA recorded choice of one exact dependency version. It prevents an update from changing that dependency without a deliberate decision. three_node_demo into .sidecar/. No host MyceliumMyceliumThe application infrastructure underneath NovusLens. Its connected services exchange updates and keep the ordered structural log. checkout or Rust build is used.
meshnoneBoots the local three-node mesh in the background, with gateways on 8400, 8401 and 8402. Stop it with ./lens ops --version dev down.
estatenoneStarts a simulated customer estate on its own two-node mesh, with gateways on 8410 and 8411. Its findings are labelled simulated. It stays running.
downnoneStops the mesh, estate and reasoning servers. UI cleanup checks the command and worktree before signalling a server; another worktree’s UI or a Docker port forwarder is refused.

./lens graph

SourceSourceA document, interview statement, measurement or export that supports a value. Each source has a date and a stated scope.: apps/graph/src/conway_graph/__main__.py. It migrates the database, materialises the read model from the mesh log, computes the twin, and administers viewers and organisations.

The database comes from DATABASE_URL. The customer profile refuses to start without it. A database that is down answers in plain words, not a traceback.

No top-level flags. Each subcommand takes its own.

Every subcommand also takes an output flag. --rich, the default, formats the result and colours it on a terminal. --plain prints the same lines with no colour or layout. Scripts that read the output use it. --json prints one JSONJSONJavaScript Object Notation: a text format for data, using named fields, lists and values. Configuration files and service messages use it. document with ok and command keys. A refusal under --json is a document with ok: false and an error. --wizard asks for each flag in turn, offering the value given or the flag’s default. It asks on standard error and needs a terminal. Without one it exits 2 with a usage message, as a bad flag does, even under --json. Messages name the command as you ran it, so a repair that ./lens graph prints starts with ./lens graph.

SubcommandArguments and flagsPurpose
migratenoneApplies the schemaSchemaThe declared structure of data: which fields or tables exist and which values they accept. migrationsMigrationAn ordered change to a database's tables or rules. Applied migration files are recorded so the same file is not run again. the code ships. Prints what it applied, or that the schema is up to date.
resetnoneWipes the read model. The mesh log stays canonical, so materialise and engine can rebuild it.
materialise--org (required); --host (default 127.0.0.1); --port (default 8400); --fullApplies commits from the mesh log to the read model. --full rescans the whole log and applies only what the applied-event ledger lacks, which recovers late arrivals. Refuses an organisation that has been forgotten.
engine--org (required)Computes the critical path length (CPL) for each layer, asserted and observed, in index points, and the fidelity countsTwin fidelityCounts of the model's sourced facts at the told, shown and measured evidence levels. It describes the available support, not whether the claims are true.: facts toldToldEvidence that somebody stated the value. It is the weakest level, and it is always attributed to its speaker., shownShownEvidence that a document supports a value. A recovery plan that states a target shows the target, but it does not show that the target was achieved. and measured, and score slots still excluded. Records the history.
requeue--org (required); --hlc (required, integer); --host; --portRe-applies one quarantinedQuarantineA holding area for a log entry that could not be applied. The entry keeps its error and waits for a retry or an operator. log entry by its hybrid logical clockHybrid logical clockA number attached to a log entry to order it against other entries. It combines clock time with a counter, so entries can be ordered even when clocks do not agree exactly. value. The act is audited.
retry--org (required)Re-attempts the organisation’s retryable quarantined entries now.
show--org (required); --viewer (required)Prints the twin snapshot: the cells and the CPL, as a table, or as JSON with --json. Every read carries its viewer and is recorded in the query audit.
create-viewer--viewer (required); --role (required; one of cxo, bu-owner, infra, operator, board); --org (required; * for the operator); --scope-cell (for bu-owner, the subtreeSubtreeOne unit and every unit nested beneath it in the organisation's hierarchy. root); --passphraseCreates an actor. Refuses an account that already exists. A passphrase sets the login credential, stored hashedHashA fixed-length fingerprint calculated from content. Comparing fingerprints helps detect changes and match records..
update-viewer--viewer (required); --role; --org; --scope-cell; --passphraseChanges an existing actor and refuses one that does not exist. Changes only the flags given. Omit --passphrase to leave the credential unchanged.
viewerthe create-viewer flagsOn the host, ./lens graph viewer, ./lens viewer and ./lens create-viewer all run create-viewer with the same flags. The scripted create-or-update stays inside the container for fixturesFixtureA prepared set of records used for a test or demonstration. A fixture is sample data, not a live customer's records. and scripts, as ./lens exec -- python -m conway_graph viewer ….
keyperson--org (required); --host and --port (default: the installation’s NOVUSLENS_MESH_HTTP_ADDR and NOVUSLENS_MESH_HTTP_BASE, mesh-0 and 8400 in Docker; else 127.0.0.1 and 8400)Runs the key-person check, as python -m conway_graph.keyperson does. In Docker it needs no --host.
guideaction: load or status; --path (default config/guide.json)load loads the release’s Guide pages into the database. status prints the page count, the release and the load time.
forget-org--org (required); --reason (required); --yes; --by (default operator); --allow-reuseErases one organisation from the read model and the Postgres-primary stores, and records the act. Refuses without --yes. --allow-reuse is for development and rehearsal only: it lets the identifier be rebuilt.
finding-scope--org (required)Counts findings by scopeScopeThe work, data, activity or access that a rule, statement or calculation covers. For access, it names the records an account can see. For team measures, “Own operations” covers the selected unit. “Including descendants” adds the units beneath it. class, and lists those with no declared scope; --json prints the counts and the list as JSON. Only the full view sees unscoped findings, until their kind is classified in config/finding-scope.json.

./lens connectors

Source: apps/connectors/src/conway_connectors/__main__.py. It brings evidence into the twin from feeds, cloud inventories, operational systems, documents and an estate’s boundary feedBoundary feedRecords supplied by the customer’s own systems about activity at the edge of an agent or service. NovusLens reads those records; it does not watch the agent., and it runs the corrector.

The top-level flags go before the subcommand.

FlagDefaultPurpose
--orgrequiredThe organisation the command acts on
--hostNOVUSLENS_MESH_HTTP_ADDR, else 127.0.0.1The mesh gateway host
--portNOVUSLENS_MESH_HTTP_BASE, else 8400The mesh gateway port

The subcommands are grouped below. Each row names its flags.

Feeds and correction

SubcommandArguments and flagsPurpose
stream--cycles (default 5); --refresh-ms (default 2000); --leads-file (JSON)Refreshes the synthetic feeds on their interval. The entries are labelled synthetic.
once--refresh-ms (default 2000); --leads-file (JSON)Runs a single refresh pass of the synthetic feeds.
correctnoneRuns one correctionCorrectionA change to a recorded value or record. The earlier version stays in the history, and any conclusion that depended on it is checked again. pass, in which observed evidence overrides asserted. Prints each correction, each confirmation, the cells measured, the fencing tokenFencing tokenA number that identifies a turn to update shared data. NovusLens rejects an earlier correction’s writes after a newer correction is applied. and the last hybrid logical clock value.

Operational systems

SubcommandArguments and flagsPurpose
acquireSee acquire flags.Polls an operational system and produces measured evidence. servicenow and jira give edge lead timesLead timeThe elapsed time between starting a request or handoff and completing it.. prometheus and github give cell Complexity, Agility and RecoverabilityRecoverabilityThe R in C/A/R: how well a team or service restores acceptable service after a failure. Recovery times and tested alternatives can supply evidence. (C/A/RC/A/RThree separate scores for a team or service: Complexity, Agility and Recoverability. Each uses current evidence and the customer’s stated scoring rules.), from exported measurements and raw workflow runs. pagerduty gives recovery quantities from raw incidents, and standalone it refuses most inputs. composite combines several sources, with --source, and needs no --url. network-flow reads a flow-log export and reports undeclared egressEgressTraffic leaving a system or network for another destination.. --url is required for every kind except composite and network-flow.

Acquire flags

FlagRequirement and meaning
--kindRequired: servicenow, jira, prometheus, github, pagerduty, composite or network-flow.
--urlSource URL; required except for composite and network-flow.
--source KIND=URLRepeatable; composite only.
--mappingRequired; the customer’s mapping as JSON.
--tokenOptional access token.
--formathubble or vpc-flow-v2; network-flow only.
--flow-log FILERepeatable; network-flow only.
--refresh-msDefault 30000.

Estate boundary

SubcommandArguments and flagsPurpose
boundary--gateway HOST:PORT (required); --enrollment (or --enrolment), a JSON file of the source and subject key enrolmentEnrolmentThe operator's recorded permission for a source to send specified record types about named agents, using an identified signing key.Pulls a customer estate’s boundary feed. It reads the estate’s gateway, never the twin’s, and it is read-only against the estate. Findings from a simulated estateSimulated estateA set of example agents supplied for testing and demonstrations. Their findings carry the label “(simulated estate)”. Real customer reports do not carry that label. say so.
agent-demo--agent-cell (required); --owner-cell (required); --viewer (default operator); --phase (initial, correction or all; default all); --scenario (intervention or drift; default intervention); --fleet N (default 0); --freshSends the reference agent-evidence case on stored records. It is a simulated fixture, never a live estate. drift runs the remitRemitA written list of an agent’s allowed actions, resources and destinations for information. The list states whether it is complete. model. --fleet N sends the case for N simulated agent cells sharing one gateway.
agents--fixture (required); --attest-by; --solicited-byDevelopment or fixture use only; refused by the customer profile. Ingests AgentFacts documents. Platform-signed documents are shown. Hand-edited template documents are told, and operator-attested.

Assurance

Assurance inputs are one scope, one period, with coverageCoverageWhat the available records cover, and what is missing. A count such as “3 of 5 dependencies measured” names the measured portion and the gap. stated. They are never an opinion.

SubcommandArguments and flagsPurpose
assurance bundle--since (required; ISO date or epochEpochFor timestamps, the starting point is 1 January 1970 at midnight in the shared world time reference. For evidence policy, it is the recorded version number. milliseconds); --until (required); --purpose (required); --out (required); --viewer (default operator); --period-mode (default current-at-issue, or opened-in-period)Issues a bundle for a period. The modes active-during-period and reconstructed-at-period-end are refused in this release, and the refusal gives the reason.
assurance sample--bundle (required); --seed (required; state it so an auditor can repeat it); --size (default 10); --out (required)Makes a reproducible draw from an issued bundle.
assurance changes--previous (required); --current (required)Shows what differs between two issued bundles.
assurance accept--bundle-sha256 (required); --acceptor (required); --decision (required; accepted, rejected or accepted-with-conditions); --purpose (required); --policy-ref (required); --note; --viewer (default operator)Records an external party’s decision on a bundle.

Notices

Notices tell a recipient when a finding opens. They are oversight, never control: a notice carries no action.

SubcommandArguments and flagsPurpose
notify subscribe--endpoint (required; an http or https URL); --kind (required, repeatable; a notifiable finding kind); --scope-cell; --viewer (default operator)Declares a recipient.
notify list--viewer (default operator); --include-disabledLists live subscriptions.
notify remove--subscription-id (required); --viewer (default operator)Marks a subscription as removed.
notify poll--base-url (default http://127.0.0.1:3111); --viewer (default operator)Runs one delivery pass, issuing whatever is unsent.
notify watch--interval (seconds, default 60); --cycles (default 0, meaning until interrupted); --base-url; --viewerRuns poll at regular intervals. Schedule this command explicitly.
notify deliveries--viewer (default operator); --limit (default 20)Lists what was issued, when, and the outcome.

Agent evidence sources

SubcommandArguments and flagsPurpose
agent-source enrolSee source enrolment flags.Writes an enrolment file for one source.
agent-source check--batch (required); --enrolment (or --enrollment)Says exactly why a batch would be refused. With an enrolment, it also applies the rules that depend on the enrolment.
agent-source activate--enrolment (repeatable); --setting KEY=MS (repeatable; fleet_window_ms from one minute to one day, or evidence_horizon_ms from one hour to one year); --viewer (default operator)Merges enrolments into the organisation’s policy and activates it. The change is additive and history is kept.
agent-source criterion--case (required); --name (required); --unit (required); --window-start (required; epoch milliseconds); --window-end (required; epoch milliseconds); --expected (required; a number); --viewer (default operator)Records the outcome criterion for an intervention case.
agent-source mycelium-audit--node, --gateway HOST:PORT, --source, --subject, --batch-id, --out (all required)Exports a Mycelium node’s signed audit stream as an unsigned Agent Evidence batch.

Source enrolment flags

FlagRequirement and meaning
--sourceRequired; stable source identifier.
--public-keySource’s Ed25519Ed25519The digital-signature method used to sign evidence. The private key signs the exact content; the public key checks that signature. public keyPublic keyA value used to check a digital signature. Sharing it lets others check signatures but does not let them create new signatures., as base64Base64A way to write bytes using ordinary text characters, so a key or signature can be carried in a text field.. Use this or --generate-key.
--generate-key PATHPilot only; creates a private keyPrivate keyA secret value used to create digital signatures. The source keeps it so others cannot sign evidence in its name.. Hand it to the source and delete the operator’s copy.
--bind SUBJECT=CELLRequired and repeatable; links an agent identifier to a cell.
--record-typeRequired and repeatable; record types this source may send.
--grant-issuer, --authoriser, --acceptor, --remit-issuerEach is repeatable; permitted parties for the corresponding records.
--environmentproduction, simulated or unknown; default unknown.
--outRequired; enrolment output file.

Domain model and documents

SubcommandArguments and flagsPurpose
ingest--source (required; aws, gcp, azure, terraform or cmdb); --fixture (required); --solicited-byImports cloud or configuration records as infrastructure cells at the shown rungRungOne of three levels of support for a recorded value: told, shown or measured. The level appears beside the value..
documentSee document flags.Puts a policy, runbook or briefing into the meaning canonMeaning canonThe organisation’s supplied written descriptions of its operations, systems and terms. NovusLens stores these separately from records of teams, dependencies and measurements..
people--fixture (required)Turns a personnel tree into the sealed 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 only.
drift--estate SOURCE=FIXTURE (repeatable; overrides a stored document); --host; --port (default 8400)Compares declared infrastructure as codeInfrastructure as codeFiles that declare the computing resources an organisation intends to run. Comparing them with a provider export can reveal differences. with the actual control plane. Without --estate it reads the estate documents the twin holds.
ops-report--fixture (required); --solicited-byIngests an operations and resilience report, and records the C/A/R measures at the shown rung.
agent-facts--fixture (required); --solicited-byDevelopment or fixture use only; refused by the customer profile. Reads signed AgentFacts and maps an agent node.
domain-taxonomy--fixture (required); --solicited-byIngests the declared business domainsDomainA business area defined by the work it does, such as purchasing or customs. It may involve several teams, and one team may serve several areas. and the links between teams and business areas.
orgchart--fixture (required)Ingests an organisation chart as the declared team structure. It declares boxes, not flow, so it adds no edges.
finance--fixture (required)Ingests finance classification (cost and profit centres) to review funding and decision rights.
regulation--fixture (required)Ingests the regulation catalogue and the compliance-owned scope mapping, to identify recoverability obligations without measured support.
link--estate SOURCE=FIXTURE (repeatable)Runs the global link pass. It resolves cross-domain and cross-provider infrastructure-as-code dependencies into edges. Run it after all sources are ingested.

Document flags

FlagRequirement and meaning
--viewerRequired; account importing the document.
--titleRequired; document title.
--fileRequired; Markdown or plain text file.
--cellRepeatable; cells the document concerns.
--pageGrouping path, such as org/board.
--attribute KEY=VALUERepeatable; extra named values.
--visibilityJSON; omit to use the default derived from the viewer.
--supersedes ENTRY_IDRepeatable; retracts the named entry and records the reason.
--based-on ENTRY_IDRepeatable; records a support dependency and leaves the earlier entry current.

./lens exec: reasoning service

Source: apps/reasoning/src/conway_reasoning/serve.py. It runs the reasoning service, which the browser reaches through the Next.jsNext.jsThe web framework used to build and run the NovusLens interface. It provides pages, server code and request handlers. proxy. It takes no subcommands.

FlagDefaultPurpose
--port8500The HTTPHTTPHypertext Transfer Protocol: the rules a browser or program uses to send a request to a web service and receive its response. port. Use --host to choose the listening address.
--host127.0.0.1The HTTP listening address. Compose sets 0.0.0.0 inside its private network; the reasoning port is not published to the host.
--mesh-host127.0.0.1The mesh gateway host
--mesh-port8400The mesh gateway port. Set it to the gateway port used by the installation.

Behaviour that depends on the profile:

  • In the customer profile the service refuses to start without CONWAY_SERVICE_TOKEN and MYCELIUM_GATEWAY_TOKEN.
  • In the customer profile the analysis tools are not registered on the mesh gateway, because a gateway bearerBearer tokenA secret value sent with a request to prove that the caller holds it. Anyone who obtains it can use it, so it must be protected. does not identify a viewer. Set NOVUSLENS_MCP_EXPOSE=1 to register them anyway.
  • In the customer profile every route requires the service tokenService tokenA secret value sent with requests between NovusLens services. The receiving service refuses requests with a missing or wrong value. header, except /health and /ready, which carry only liveness and the projectionProjectionThe regular pass that brings the read model up to date with the canonical log. It runs every 30 seconds by default. age. Requests reach the service only through the UI.

./lens exec: projection worker

Source: apps/reasoning/src/conway_reasoning/project.py. It is the projection loop. It advances the read model at regular intervals, so the picture moves when the log moves rather than when a user clicks. Compose runs it as the projector service. It takes no subcommands.

FlagDefaultPurpose
--interval30Seconds between passes. Values below 5 are refused.
--orgevery organisation in the read modelOne organisation only
--onceoffOne pass, then exit. Exits with code 1 if the database is unavailable.
--mesh-host127.0.0.1The mesh gateway host
--mesh-port8400The mesh gateway port. Set it to the installation gateway port.

Each pass, for each organisation, retries quarantined entries and materialises new commits. It then delivers the agent-evidence outboxOutboxA database list of saved messages waiting to be published. A message stays on the list until its progress is recorded. and refreshes the engines, but only when the pass applied or retried something. Every pass is recorded in projection_runs, and every surface reads the latest row as its “records as of” time. A database outage is retried with a backoffBackoffA delay before retrying a failed operation. The delay usually grows after repeated failures to avoid making an outage worse. from 5 seconds, doubling to 60 seconds. The loop does not exit on it.

Last updated