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.
noumTab 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
| Command | What it does |
|---|---|
noum digest | Run the full pipeline (import, enrich, analyze, synthesize, embed) end-to-end. |
noum import | Parse git history and file structure into Datomic. No LLM calls. |
noum enrich | Resolve cross-file import and dependency edges. No LLM calls. |
noum analyze | Run LLM semantic analysis on repo files. The expensive stage. Pass --no-promote to bypass the content-addressed cache. |
noum synthesize | Identify components and architectural layers from analyzed data. |
noum embed | Build the TF-IDF vector index for semantic search. |
noum update | Sync the knowledge graph with the latest git state. Incremental. |
noum watch | Watch a repo and auto-update on new commits. Long-running. |
noum delta-ensure | Materialize a local delta DB against a trunk basis SHA (experimental, branch-aware). |
noum reseed | Reload prompts, queries, and rules from disk. |
Query and Ask
| Command | What it does |
|---|---|
noum ask | Ask a natural-language question. Iteratively queries the graph. |
noum query | Run a named or raw Datalog query. Auto-federates against a local delta DB when on a feature branch (--no-auto-federate to disable). |
noum queries | List the named-query catalog. |
noum schema | Show the database schema. |
noum status | Entity counts for a repository. |
noum sessions | List or view past ask sessions. |
noum feedback | Submit 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
| Command | What it does |
|---|---|
noum bench | Run benchmark evaluation against a fixed question set. |
noum results | Get benchmark results (latest run or by id). |
noum compare | Compare two benchmark runs by per-layer score deltas. |
noum introspect | Run the autonomous self-improvement loop. |
noum history | Show artifact change history (prompt/model drift). |
MCP and Visual UI
| Command | What it does |
|---|---|
noum setup | Configure MCP for Claude Desktop or Claude Code. |
noum serve | Start the MCP server over stdin/stdout (for clients to spawn). |
noum open | Open the experimental Electron desktop UI. See /concepts/desktop-ui/. |
Configuration
| Command | What it does |
|---|---|
noum settings | View or update settings. |
Daemon and Connections
| Command | What it does |
|---|---|
noum start | Start the local daemon. |
noum stop | Stop the local daemon. |
noum ping | Check daemon health. |
noum connect | Connect to a remote Noumenon instance via URL plus token. |
noum connections | List configured connections. |
noum disconnect | Remove a saved connection. |
Databases and Maintenance
| Command | What it does |
|---|---|
noum databases | List all known databases. |
noum delete | Delete a database (prompts for confirmation). |
noum demo | Download a pre-built demo database for instant querying. |
noum upgrade | Update noumenon.jar (re-run installer to update noum itself). |
noum version | Show the launcher version. |
noum help | Show 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.