Experimental, early beta. Data model and interfaces are unstable; expect breaking changes between releases.

CLI

The noum launcher is the primary way to drive Noumenon from a shell. It's the same surface as the HTTP API and MCP tools, exposed as familiar commands with tab-completion and an interactive menu when invoked with no arguments.

Interactive Mode

Run noum with no arguments for a menu-driven TUI. Commands are grouped by category, repositories and ask sessions come from live data, and there's nothing to memorize.

noum

Tab through the menu, pick a command, and supply parameters from selectable lists. Useful when you're exploring; the same actions are available as direct flags for scripts.

Pipeline Selectors

Pipeline commands (analyze, enrich, update, digest) accept selectors to scope the work to a subset of the repo:

  • --path src/foo — only files under that directory.
  • --include "src/**/*.clj" — glob whitelist.
  • --exclude "**/*_test.clj" — glob blacklist.
  • --lang clojure — restrict to a single language.
noum analyze ./my-repo --include "src/**/*.clj" --exclude "**/*_test.clj"

Branches and Federation

Experimental — interfaces may change between releases. When the active connection is hosted and your local git rev-parse HEAD has diverged from the trunk DB's stored basis, noum query automatically materializes a sparse local delta DB at ~/.noumenon/deltas/ and routes the named query through /api/query-federated. A one-line yellow banner — Federating against local delta @<basis7>… — makes the rerouting observable. Disable per-call with --no-auto-federate or persistently with noum settings federation/auto-route false.

Explicit form (still works): noum query <name> <repo> --federate --basis-sha <sha>. Materialize the delta directly with noum delta-ensure <repo> --basis-sha <sha>; GC orphan deltas with bb prune-deltas from the noumenon source tree.

Drift Handling

When you change a prompt template or switch LLM models, prior analysis results are still valid until you decide otherwise. Drift is advisory: Noumenon logs which files were analyzed with a different prompt or model, but only re-analyzes them when you ask. Pass --reanalyze prompt-changed or --reanalyze model-changed (or stale, or all) to refresh.

Pipeline

CommandWhat it does
noum digestRun the full pipeline (import, enrich, analyze, synthesize, embed) end-to-end.
noum importParse git history and file structure into Datomic. No LLM calls.
noum enrichResolve cross-file import and dependency edges. No LLM calls.
noum analyzeRun LLM semantic analysis on repo files. The expensive stage. Pass --no-promote to bypass the content-addressed cache.
noum synthesizeIdentify components and architectural layers from analyzed data.
noum embedBuild the TF-IDF vector index for semantic search.
noum updateSync the knowledge graph with the latest git state. Incremental.
noum watchWatch a repo and auto-update on new commits. Long-running.
noum delta-ensureMaterialize a local delta DB against a trunk basis SHA (experimental, branch-aware).
noum reseedReload prompts, queries, and rules from disk.

Query and Ask

CommandWhat it does
noum askAsk a natural-language question. Iteratively queries the graph.
noum queryRun a named or raw Datalog query. Auto-federates against a local delta DB when on a feature branch (--no-auto-federate to disable).
noum queriesList the named-query catalog.
noum schemaShow the database schema.
noum statusEntity counts for a repository.
noum sessionsList or view past ask sessions.
noum feedbackSubmit feedback on an ask session.

Spend is queryable. noum query llm-cost-total <repo> sums input tokens, output tokens, and dollars across every recorded LLM call; llm-cost-by-model and llm-cost-by-file break the same totals down. The same queries run through noumenon_query over MCP and the HTTP API. See Cost Transparency.

Benchmarks and Introspection

CommandWhat it does
noum benchRun benchmark evaluation against a fixed question set.
noum resultsGet benchmark results (latest run or by id).
noum compareCompare two benchmark runs by per-layer score deltas.
noum introspectRun the autonomous self-improvement loop.
noum historyShow artifact change history (prompt/model drift).

MCP and Visual UI

CommandWhat it does
noum setupConfigure MCP for Claude Desktop or Claude Code.
noum serveStart the MCP server over stdin/stdout (for clients to spawn).
noum openOpen the experimental Electron desktop UI. See /concepts/desktop-ui/.

Configuration

CommandWhat it does
noum settingsView or update settings.

Daemon and Connections

CommandWhat it does
noum startStart the local daemon.
noum stopStop the local daemon.
noum pingCheck daemon health.
noum connectConnect to a remote Noumenon instance via URL plus token.
noum connectionsList configured connections.
noum disconnectRemove a saved connection.

Databases and Maintenance

CommandWhat it does
noum databasesList all known databases.
noum deleteDelete a database (prompts for confirmation).
noum demoDownload a pre-built demo database for instant querying.
noum upgradeUpdate noumenon.jar (re-run installer to update noum itself).
noum versionShow the launcher version.
noum helpShow help. Pass a subcommand for command-specific options.

Every command takes --help for full flags and examples. The launcher source is in launcher/src/noum; the underlying daemon entry points live in src/noumenon/main.clj.