Get NOVA running in 5 minutes — harness pipelines, autonomous watchers, and all.
- Python 3.10+
- Linux (for watchers — requires
inotifywait). macOS/Windows: harnesses work fine; watchers need inotify-tools or an equivalent. - An LLM API key, or use the built-in
echoprovider (no key — great for testing)
# No API key — echo provider, perfect for first run
pip install nova-orchestrator
# With OpenAI
pip install "nova-orchestrator[openai]"
# With Anthropic Claude
pip install "nova-orchestrator[anthropic]"
# With Ollama (local, no cost)
pip install "nova-orchestrator[ollama]"
# Everything
pip install "nova-orchestrator[all]"Verify:
nova --version
# nova 1.3.0nova setupThis creates ~/.nova/ with:
~/.nova/
├── brain.db ← SQLite knowledge store (pages, takes, events)
├── memory.md ← Persistent agent memory
├── kb/ ← Knowledge base markdown files
│ ├── lessons/
│ └── synthesis/
├── wiki/ ← Auto-generated wiki pages
│ ├── entities/
│ └── concepts/
├── kanban/boards/ ← Task tracking (optional)
├── engines/ ← Built-in reaction engines (auto-installed)
│ ├── dream.py
│ ├── learn.py
│ ├── synthesize.py
│ ├── chain.py
│ ├── fix_orphan.py
│ └── memory_slim.py
└── logs/ ← Watcher logs and pid files
Use a custom location:
nova setup --nova-home ~/my-project/nova
export NOVA_HOME=~/my-project/nova # add to .bashrc / .zshrcInstall inotify-tools if you haven't already:
sudo apt-get install inotify-tools # Debian/Ubuntu
sudo dnf install inotify-tools # Fedora/RHELStart all watchers:
nova watcher startCheck they're running:
nova watcher status
# NOVA watcher status (nova_home=~/.nova)
#
# [brain-watcher] RUNNING (pid=12345)
# [kb-watcher] RUNNING (pid=12346)
# [hook-server] RUNNING (pid=12347)
#
# brain.db: takes=0 orphan=0 health=100.0Stop when you're done:
nova watcher stopmacOS / Windows: skip this step. Harnesses still run and accumulate knowledge — you just trigger the engines manually:
python -m nova.engine.learn,python -m nova.engine.dream, etc.
nova run research --provider echo --context topic="transformer attention mechanisms"NOVA_LLM_API_KEY=sk-... nova run research --context topic="transformer attention mechanisms"NOVA_LLM_API_KEY=sk-ant-... nova run research \
--provider anthropic --context topic="transformer attention mechanisms"# Start Ollama first: ollama serve
nova run research --provider ollama --context topic="transformer attention mechanisms"The run produces:
~/.nova/output/research/report.md— final output~/.nova/output/research/evolution.md— quality score history- New takes in
brain.db— picked up by watchers automatically
After a few harness runs, the watchers react automatically:
takes +5 → learn engine runs → links takes to KB pages
takes +15 → synthesize runs → writes kb/synthesis/nova-*.md
takes +100 → DreamCycle runs → computes health score, emits DREAM_DONE event
Check what happened:
nova watcher status
# brain.db: takes=18 orphan=0 health=97.5Read synthesized knowledge:
ls ~/.nova/kb/synthesis/
# nova-2026-06-10.mdYou can add knowledge directly — the watchers will react:
from nova.db.brain import BrainDB
db = BrainDB("~/.nova/brain.db")
# Add a take (atomic knowledge claim)
db.add_take(
claim="Sparse attention reduces quadratic complexity to O(n log n)",
holder="my-research",
kind="insight",
weight=0.9,
)
# Check state
print(db.snapshot())
# {'takes': 19, 'orphan': 0, 'open_contra': 0, 'health': 97.5}Or write a markdown file to ~/.nova/kb/:
cat > ~/.nova/kb/my-insight.md << 'EOF'
---
title: My First Insight
type: concept
---
# My First Insight
Autonomous knowledge systems improve with every run.
EOFThe KB watcher detects the new file and syncs it to brain.db immediately.
nova new my-pipeline --pattern pipelineThis scaffolds harnesses/my-pipeline/harness.yaml. Edit it:
name: my-pipeline
pattern: pipeline
phases:
- name: research
executor: llm
prompt: |
Research the following topic and summarise key findings:
Topic: {{context.topic}}
output_file: research.md
- name: write
executor: llm
prompt: |
Using this research: {{research.md}}
Write a concise technical blog post about {{context.topic}}.
output_file: post.md
quality_check:
enabled: true
threshold: 75Run it:
nova run my-pipeline --context topic="vector databases in production"nova setup Initialize ~/.nova data directory
nova watcher start Start brain + KB watchers (background)
nova watcher status Show watcher state + brain.db stats
nova watcher stop Stop all watchers
nova run <harness> Run a harness end-to-end
nova run <harness> --resume Resume from last checkpoint
nova run <harness> --dry-run Dry run (no LLM calls, no writes)
nova new <name> --pattern pipeline Scaffold a new harness
nova list List available harnesses
nova evolution <harness> Show run history and quality scores
nova kb search <query> Search the knowledge base
nova kb list List all KB pages
nova inspect build Build architecture graph (current dir)
nova inspect report Generate architecture report
nova inspect hotspots Show most-connected nodes
nova inspect path --from A --to B Find path between two code nodes
- Writing Harnesses — full harness YAML reference
- Providers — LLM, publisher, notifier configuration
- Quality Gates — how automatic scoring works
- Autonomous Event Loop — deep dive into the watcher architecture
- Custom Provider — wire in your own LLM or publisher