Metadata-Version: 2.5
Name: nova-ai-pro
Version: 1.2.6
Summary: NOVA AI — modular AI assistant backend with composable intelligence primitives
Project-URL: Homepage, https://github.com/Hamza35779/NOVA-AI
Project-URL: Documentation, https://hamza35779.github.io/NOVA-AI/
Project-URL: Repository, https://github.com/Hamza35779/NOVA-AI
Project-URL: Issues, https://github.com/Hamza35779/NOVA-AI/issues
Author: NOVA AI Contributors
License: Apache-2.0
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: <3.14,>=3.10
Requires-Dist: click>=8
Requires-Dist: datasets>=4.5.0
Requires-Dist: ddgs>=9.11.4
Requires-Dist: httpx>=0.27
Requires-Dist: nvidia-ml-py>=12.560.30
Requires-Dist: openai>=1.30
Requires-Dist: posthog>=3.0
Requires-Dist: python-telegram-bot>=22.6
Requires-Dist: rich>=13
Requires-Dist: tomli>=2.0; python_version < '3.11'
Requires-Dist: tomlkit>=0.12
Requires-Dist: websockets>=15.0.1
Provides-Extra: browser
Requires-Dist: playwright>=1.40; extra == 'browser'
Provides-Extra: channel-discord
Requires-Dist: discord-py>=2.3; extra == 'channel-discord'
Provides-Extra: channel-gmail
Requires-Dist: google-api-python-client>=2.0; extra == 'channel-gmail'
Requires-Dist: google-auth-httplib2>=0.2; extra == 'channel-gmail'
Requires-Dist: google-auth-oauthlib>=1.0; extra == 'channel-gmail'
Provides-Extra: channel-line
Requires-Dist: line-bot-sdk>=3.0; extra == 'channel-line'
Provides-Extra: channel-mastodon
Requires-Dist: mastodon-py>=1.8; extra == 'channel-mastodon'
Provides-Extra: channel-messenger
Requires-Dist: pymessenger>=0.0.7; extra == 'channel-messenger'
Provides-Extra: channel-nostr
Requires-Dist: pynostr>=0.6; extra == 'channel-nostr'
Provides-Extra: channel-reddit
Requires-Dist: praw>=7.0; extra == 'channel-reddit'
Provides-Extra: channel-rocketchat
Requires-Dist: rocketchat-api>=1.30; extra == 'channel-rocketchat'
Provides-Extra: channel-slack
Requires-Dist: slack-sdk>=3.27; extra == 'channel-slack'
Provides-Extra: channel-telegram
Requires-Dist: python-telegram-bot>=21.0; extra == 'channel-telegram'
Provides-Extra: channel-twilio
Requires-Dist: twilio>=9.0; extra == 'channel-twilio'
Provides-Extra: channel-twitch
Requires-Dist: twitchio>=2.6; extra == 'channel-twitch'
Provides-Extra: channel-twitter
Requires-Dist: httpx>=0.27; extra == 'channel-twitter'
Provides-Extra: channel-viber
Requires-Dist: viberbot>=1.0; extra == 'channel-viber'
Provides-Extra: channel-xmpp
Requires-Dist: slixmpp>=1.8; extra == 'channel-xmpp'
Provides-Extra: channel-zulip
Requires-Dist: zulip>=0.9; extra == 'channel-zulip'
Provides-Extra: dashboard
Requires-Dist: textual>=0.80; extra == 'dashboard'
Provides-Extra: desktop
Requires-Dist: fastapi>=0.110; extra == 'desktop'
Requires-Dist: faster-whisper>=1.0; extra == 'desktop'
Requires-Dist: pydantic>=2.0; extra == 'desktop'
Requires-Dist: python-multipart>=0.0.9; extra == 'desktop'
Requires-Dist: uvicorn>=0.30; extra == 'desktop'
Provides-Extra: dev
Requires-Dist: maturin>=1.12.6; extra == 'dev'
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pre-commit>=3.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest-cov>=5; extra == 'dev'
Requires-Dist: pytest-timeout>=2.3; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: respx>=0.22; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-gen-files>=0.5; extra == 'docs'
Requires-Dist: mkdocs-literate-nav>=0.6; extra == 'docs'
Requires-Dist: mkdocs-material>=9.5; extra == 'docs'
Requires-Dist: mkdocs>=1.6; extra == 'docs'
Requires-Dist: mkdocstrings[python]>=0.25; extra == 'docs'
Provides-Extra: dpo-training
Requires-Dist: peft>=0.10; extra == 'dpo-training'
Requires-Dist: torch>=2.0; extra == 'dpo-training'
Requires-Dist: transformers>=4.40; extra == 'dpo-training'
Requires-Dist: trl>=0.8; extra == 'dpo-training'
Provides-Extra: energy-all
Requires-Dist: amdsmi>=6.1; extra == 'energy-all'
Requires-Dist: pynvml>=12.0; extra == 'energy-all'
Requires-Dist: zeus-ml[apple]; extra == 'energy-all'
Provides-Extra: energy-amd
Requires-Dist: amdsmi>=6.1; extra == 'energy-amd'
Provides-Extra: energy-apple
Requires-Dist: zeus-ml[apple]; extra == 'energy-apple'
Provides-Extra: eval-sheets
Requires-Dist: google-auth>=2.0; extra == 'eval-sheets'
Requires-Dist: gspread>=6.0; extra == 'eval-sheets'
Provides-Extra: eval-wandb
Requires-Dist: wandb>=0.17; extra == 'eval-wandb'
Provides-Extra: framework-comparison
Requires-Dist: polars>=1.0; extra == 'framework-comparison'
Provides-Extra: gpu-metrics
Requires-Dist: pynvml>=12.0; extra == 'gpu-metrics'
Provides-Extra: inference-cloud
Requires-Dist: anthropic>=0.30; extra == 'inference-cloud'
Requires-Dist: openai>=1.30; extra == 'inference-cloud'
Provides-Extra: inference-gemma
Requires-Dist: pygemma>=0.1.3; extra == 'inference-gemma'
Provides-Extra: inference-gguf
Requires-Dist: llama-cpp-python>=0.3.0; extra == 'inference-gguf'
Provides-Extra: inference-google
Requires-Dist: google-genai>=1.0; extra == 'inference-google'
Provides-Extra: inference-litellm
Requires-Dist: litellm>=1.40; extra == 'inference-litellm'
Provides-Extra: inference-mlx
Requires-Dist: mlx-lm>=0.31.1; (sys_platform == 'darwin') and extra == 'inference-mlx'
Provides-Extra: inference-vllm
Requires-Dist: vllm>=0.16.0; extra == 'inference-vllm'
Provides-Extra: learning-dspy
Requires-Dist: dspy>=2.6; extra == 'learning-dspy'
Provides-Extra: learning-gepa
Requires-Dist: gepa>=0.1; extra == 'learning-gepa'
Provides-Extra: media
Requires-Dist: openai>=1.30; extra == 'media'
Provides-Extra: memory-bm25
Requires-Dist: rank-bm25>=0.2.2; extra == 'memory-bm25'
Provides-Extra: memory-colbert
Requires-Dist: colbert-ai>=0.2; extra == 'memory-colbert'
Requires-Dist: torch>=2.0; extra == 'memory-colbert'
Provides-Extra: memory-faiss
Requires-Dist: faiss-cpu>=1.7; extra == 'memory-faiss'
Requires-Dist: numpy>=1.24; extra == 'memory-faiss'
Requires-Dist: sentence-transformers>=2.2; extra == 'memory-faiss'
Provides-Extra: memory-pdf
Requires-Dist: pdfplumber>=0.10; extra == 'memory-pdf'
Provides-Extra: mining-pearl-cpu
Provides-Extra: mining-pearl-vllm
Requires-Dist: docker>=7.0; extra == 'mining-pearl-vllm'
Requires-Dist: httpx>=0.27; extra == 'mining-pearl-vllm'
Provides-Extra: openhands
Requires-Dist: openhands-sdk>=1.0; (python_version >= '3.12') and extra == 'openhands'
Provides-Extra: orchestrator-training
Requires-Dist: torch>=2.0; extra == 'orchestrator-training'
Requires-Dist: transformers>=4.40; extra == 'orchestrator-training'
Provides-Extra: pdf
Requires-Dist: pdfplumber>=0.10; extra == 'pdf'
Provides-Extra: sandbox-docker
Requires-Dist: docker>=7.0; extra == 'sandbox-docker'
Provides-Extra: sandbox-wasm
Requires-Dist: wasmtime>=25; extra == 'sandbox-wasm'
Provides-Extra: scheduler
Requires-Dist: croniter>=2.0; extra == 'scheduler'
Provides-Extra: screen
Requires-Dist: mss>=9.0; extra == 'screen'
Requires-Dist: pillow>=10.0; extra == 'screen'
Requires-Dist: pytesseract>=0.3; extra == 'screen'
Provides-Extra: security-signing
Requires-Dist: cryptography>=43; extra == 'security-signing'
Provides-Extra: server
Requires-Dist: fastapi>=0.110; extra == 'server'
Requires-Dist: pydantic>=2.0; extra == 'server'
Requires-Dist: python-multipart>=0.0.9; extra == 'server'
Requires-Dist: uvicorn>=0.30; extra == 'server'
Provides-Extra: speech
Requires-Dist: faster-whisper>=1.0; extra == 'speech'
Provides-Extra: speech-deepgram
Requires-Dist: deepgram-sdk>=3.0; extra == 'speech-deepgram'
Provides-Extra: tools-search
Requires-Dist: ddgs>=9.11.4; extra == 'tools-search'
Requires-Dist: tavily-python>=0.3; extra == 'tools-search'
Provides-Extra: voice
Requires-Dist: numpy>=1.24; extra == 'voice'
Requires-Dist: sounddevice>=0.5; extra == 'voice'
Description-Content-Type: text/markdown

<div align="center">
<img width="400" height="200" alt="NovaAI_Horizontal_Logo" src="https://github.com/user-attachments/assets/3cd5dc54-5e23-4ddc-a508-11b8a85b063f" />



  <p><i>Personal AI, On Personal Devices.</i></p>

  <p>
    <img src="https://img.shields.io/badge/python-%3E%3D3.10-blue" alt="Python">
    <img src="https://img.shields.io/badge/license-Apache%202.0-green" alt="License">
  </p>
</div>

---

<div align="center">
  <img alt="NOVA AI demo reel" src="assets/nova_ai_demo_reel.webp" width="75%">
</div>

---

> **[Complete Setup & User Guide](SETUP_AND_USAGE_GUIDE.md)**
>
> **[Documentation](https://hamza35779.github.io/NOVA-AI/)**
>
> **[Roadmap](https://hamza35779.github.io/NOVA-AI/development/roadmap/)**

## Prerequisites

NOVA AI is local-first: the only hard requirement is Python. Everything else is optional, depending on how you want to run models.

| Requirement | Version | Required? | Notes |
|---|---|---|---|
| **Python** | 3.10 – 3.13 | ✅ Required | 3.14 is not supported (no numpy 2.2 wheels — see `pyproject.toml`) |
| **Node.js** | 18+ (CI uses 22) | Optional | Only needed to build the web UI, desktop app (Tauri), or the browser extension |
| **Rust** | 1.90+ | Optional | Only needed when building from source, to compile the native `nova_ai_rust` extension (maturin). PyPI wheels bundle the compiled extension, so `pip install nova-ai-pro` needs no Rust |
| **uv** | latest | Recommended | Fast Python env manager; auto-installed by `start.sh` and the installers |
| **Ollama** | latest | Optional | Local model server. Without it, use in-process GGUF models or cloud APIs |
| **Git** | any recent | Recommended | Needed to clone the repo; checked by the installers |
| **Tesseract OCR** | 5.x | Optional | Only for `nova screen` text extraction ([UB-Mannheim build](https://github.com/UB-Mannheim/tesseract/wiki) on Windows; `tesseract-ocr` on Linux, `brew install tesseract` on macOS) |
| **Docker** | 24+ | Optional | Only for the containerized deployment (`deploy/docker/`) |

**Hardware:** any 64-bit Windows 10/11, macOS 12+, or modern Linux. 4 GB RAM minimum, 16 GB+ recommended. A CUDA/Metal/ROCm GPU or Apple Silicon is optional but makes 7–8B models much faster. Small models (0.5–3B) run fine on CPU.

## Quick Start (from source)

The fastest way to a running system from a fresh clone:

```bash
git clone https://github.com/Hamza35779/NOVA-AI.git
cd NOVA-AI
./start.sh          # Linux / macOS — interactive launcher (Windows: start.bat)
```

`start.sh` / `start.bat` check Python, then give you a menu: chat, voice, web server, memory wiki, diagnostics, and (on Windows) the opencode wizard. If you prefer to set things up manually, see [Install from source](#install-from-source) below.

> One-command everything (installs uv/Ollama if missing, pulls a starter model, builds the UI, starts backend + frontend, opens the browser): `./scripts/quickstart.sh`

## Install from source

### 1. Get the code and Python deps

```bash
git clone https://github.com/Hamza35779/NOVA-AI.git
cd NOVA-AI

# With uv (recommended):
uv sync --extra server --extra tools-search

# Or with plain pip (virtualenv recommended):
python -m venv .venv && source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -e ".[server,tools-search]"
```

> **Windows note on `inference-gguf`:** the in-process GGUF engine extra
> (`--extra inference-gguf`) compiles `llama-cpp-python` from source and needs
> Visual Studio Build Tools (C++ workload) + CMake. Without them `uv sync` /
> `pip install` fails inside its CMake step. Skip that extra (use Ollama or
> the cloud engines), or install the build tools first — prebuilt Windows
> wheels are not published.

Extra groups (install only what you need): `dev` (pytest/ruff/mypy/maturin), `desktop` (server + speech), `server` (FastAPI backend), `inference-gguf` (in-process GGUF, no Ollama needed — see the Windows note above), `inference-vllm`, `inference-cloud`, `inference-litellm`, `memory-faiss` / `memory-pdf` / `memory-bm25`, `voice`, `screen`, `channel-telegram`, and more — see `[project.optional-dependencies]` in `pyproject.toml`.

### 2. Build the native Rust extension (recommended)

The storage/memory layer is faster with the compiled `nova_ai_rust` extension and some server APIs require it:

```bash
# Needs Rust 1.90+ (rustup installs it automatically from rust/rust-toolchain.toml)
uv run maturin develop --manifest-path rust/crates/nova_ai-python/Cargo.toml
```

### 3. Build the web UI

The built UI is not committed — `nova serve` serves it from `src/nova_ai/server/static/`, which is generated by the frontend build:

```bash
cd frontend
npm install
npm run build
cd ..
```

### 4. Verify and run

```bash
uv run nova doctor      # hardware, GPU, and engine health check
uv run nova serve       # web UI + API at http://localhost:8000
```

Then open **http://localhost:8000**. The in-app **GGUF Hub** can download a starter model with one click — no Ollama required.

### 5. Connect a model engine (pick one)

| Option | Setup | Best for |
|---|---|---|
| **In-process GGUF** (zero setup) | Nothing — use the GGUF Hub in the web UI, or drop a `.gguf` file into `~/.nova_ai/models/` | Fully offline, no extra services |
| **Ollama** | [Install Ollama](https://ollama.com), then `ollama serve` and `ollama pull qwen2.5:7b` | Easiest local model management |
| **Cloud APIs** | Export `OPENAI_API_KEY` / `ANTHROPIC_API_KEY` / `GEMINI_API_KEY` / `GROQ_API_KEY`, or set them in the web UI Settings page | Maximum capability |
| **vLLM** | `uv sync --extra inference-vllm`, run a vLLM OpenAI-compatible server, point NOVA AI at it | GPU servers, batch throughput |

Running `nova init` writes `~/.nova_ai/config.toml` with hardware-detected defaults (or start from a template in `configs/nova_ai/config.toml`).

## Uninstalling

Source installs live entirely inside the cloned folder plus `~/.nova_ai/`:

```bash
# Remove the checkout (deactivates the CLI / uv environments)
cd .. && rm -rf NOVA-AI

# Remove user data: config, databases, downloaded GGUF models
rm -rf ~/.nova_ai        # Windows (PowerShell): Remove-Item -Recurse ~\.nova_ai

# Optional extras you may have installed along the way:
#   uv:        rm -rf ~/.local/share/uv ~/.cargo/bin/uv
#   Ollama:    use the platform uninstaller, or `brew uninstall ollama`
#   Rust:      rustup self uninstall
```

The curl/one-line installer variant ships an uninstaller: `nova-uninstall`
(sees `scripts/install/nova-uninstall.sh`). There is no `pip uninstall nova-ai`
step needed for source installs; for the PyPI package use
`pip uninstall nova-ai-pro`.

## Why NOVA AI?

Personal AI agents are exploding in popularity, but nearly all of them still route intelligence through cloud APIs. Your "personal" AI continues to depend on someone else's server. Local language models already handle most single-turn chat and reasoning queries, and their capability per watt keeps improving year over year. What has been missing is the software stack to make local-first personal AI practical.

NOVA AI is that stack. It is a framework for local-first personal AI, built around three core ideas: shared primitives for building on-device agents; evaluations that treat energy, FLOPs, latency, and dollar cost as first-class constraints alongside accuracy; and a learning loop that improves models using local trace data. The goal is simple: make it possible to build personal AI agents that run locally by default, calling the cloud only when truly necessary. NOVA AI aims to be both a research platform and a production foundation for local AI, in the spirit of PyTorch.

## Installation & Quick Start

Pick your platform and start in seconds:

| Platform | Quick Launch | Installation One-liner |
|---|---|---|
| **Windows (Setup EXE, no Python)** | Double-click `NOVA-AI-Setup-1.2.6.exe` — includes **Alt+Space Quick Capture** | [Latest Release](https://github.com/Hamza35779/NOVA-AI/releases) |
| **Windows (1-Click)** | Double-click `start.bat` | `irm https://raw.githubusercontent.com/Hamza35779/NOVA-AI/main/deploy/windows/install.ps1 \| iex` or run `install.bat` |
| **Linux · macOS** | `./start.sh` | `curl -fsSL https://raw.githubusercontent.com/Hamza35779/NOVA-AI/main/scripts/install/install.sh \| bash` |
| **Docker** | `cp deploy/docker/.env.example .env  # fill NOVA_AI_API_KEY` then `docker compose -f deploy/docker/docker-compose.yml --env-file .env up` | Containerized setup with local Ollama engine |
| **Desktop GUI** | Download `.exe` / `.dmg` / `.AppImage` | [Latest Release](https://github.com/Hamza35779/NOVA-AI/releases) |

### Start Working with NOVA AI

```bash
# Interactive Chat
nova chat

# Hands-free Voice Conversation
nova voice --push-to-talk

# Smart Model Router (Auto-selects optimal model)
nova router status
nova router test "Analyze quantum algorithms"

# Active Memory Wiki
nova memory-wiki show profile
nova memory-wiki search "preferences"

# Interactive Canvas (Open HTML/SVG/Chart visualizations)
nova canvas list

# Build/Test Diagnostics with Self-Healing Fix Suggestions
nova dev-watch -c "pytest -q"

# Presets & System Diagnostics
nova init --preset morning-digest-minimal
nova doctor
```

> Prefix `nova ...` with `uv run`, or `source .venv/bin/activate` first.

| Preset | What it does |
|---|---|
| `morning-digest-mac` / `morning-digest-linux` / `morning-digest-minimal` | Spoken daily briefing from email, calendar, health, news |
| `deep-research` | Multi-hop research across indexed docs with citations |
| `code-assistant` | Agent with code execution, file I/O, and shell access |
| `scheduled-monitor` | Stateful agent on a schedule with memory |
| `chat-simple` | Lightweight conversation, no tools |

Example:

```bash
nova init --preset morning-digest-mac
nova connect gdrive          # one OAuth covers Gmail / Calendar / Tasks
nova digest --fresh          # generate and play your first briefing
```

Per-preset deep dives: [morning digest](https://hamza35779.github.io/NOVA-AI/user-guide/morning-digest/) · [deep research](https://hamza35779.github.io/NOVA-AI/user-guide/deep-research/) · [code assistant](https://hamza35779.github.io/NOVA-AI/user-guide/code-assistant/) · [scheduled monitor](https://hamza35779.github.io/NOVA-AI/user-guide/scheduled-monitor/) · [chat simple](https://hamza35779.github.io/NOVA-AI/user-guide/chat-simple/) · or the full [quickstart guide](https://hamza35779.github.io/NOVA-AI/getting-started/quickstart/).

### Skills

Skills teach agents how to better use tools and improve their reasoning. Every skill is a tool — agents discover them from a catalog and invoke them on demand.

```bash
# Install skills from public sources
nova skill install hermes:arxiv
nova skill sync hermes --category research

# Use skills with any agent
nova ask "Use the code-explainer skill to explain this Python code: for i in range(5): print(i*2)"

# Optimize skills from your trace history
nova optimize skills --policy dspy

# Benchmark the impact
nova bench skills --max-samples 5 --seeds 42
```

Import from [Hermes Agent](https://github.com/NousResearch/hermes-agent) (~150 skills), [OpenClaw](https://github.com/openclaw/skills) (~13,700 community skills), or any GitHub repo. Skills follow the [agentskills.io](https://agentskills.io/specification) open standard.

See the [Skills User Guide](https://hamza35779.github.io/NOVA-AI/user-guide/skills/) and [Skills Tutorial](https://hamza35779.github.io/NOVA-AI/tutorials/skills-workflow/) for details.

### Built-in Agents

NOVA AI ships with built-in agents across three execution modes (on-demand, scheduled, continuous):

| Agent | Type | What it does |
|-------|------|-------------|
| `morning_digest` | Scheduled | Daily briefing from email, calendar, health, news — with TTS audio and a desktop notification when ready |
| `deep_research` | On-demand | Multi-hop research with citations across web and local docs |
| `monitor_operative` | Continuous | Long-horizon monitoring with memory, compression, and retrieval |
| `orchestrator` | On-demand | Multi-turn reasoning with automatic tool selection |
| `native_react` | On-demand | ReAct (Thought-Action-Observation) loop agent |
| `self_healing_react` | On-demand | ReAct with a bounded self-repair loop — powers `nova dev-watch` diagnostics |
| `operative` | Continuous | Persistent autonomous agent with state management |
| `native_openhands` | On-demand | CodeAct — generates and executes Python code |
| `simple` | On-demand | Single-turn chat, no tools |

### opencode Integration

Use [opencode](https://opencode.ai) with NOVA AI in both directions — opencode gets your
local Ollama models (as the `nova-ai` provider) **and** NOVA's tool registry via MCP, so
coding-agent sessions run local-first:

```bash
nova opencode install   # fetch the opencode CLI when missing
nova opencode init      # write/merge ./opencode.json (provider + MCP tools)
nova serve              # start the backend (another terminal)
nova opencode launch    # open opencode wired to NOVA AI
```

`nova opencode status` shows per-provider data residency (local vs cloud); `--local-only`
locks opencode to local models and disables session sharing. Docs: [opencode Integration](https://hamza35779.github.io/NOVA-AI/user-guide/opencode/).

### Desktop Extras

- **⚡ Quick Capture (Windows: `Alt+Space`, macOS: `Cmd+Shift+Space`)** — a Raycast-style chat popup from anywhere; the conversation syncs back to the main app automatically.
- **🔔 Morning digest notifications** — a desktop notification fires the moment your briefing is stored (covers scheduler, CLI, and server delivery); `nova digest` plays audio on Windows via `winsound`/the default media player.
- **🔨 Dev-Watch** — run a build/test command, get failure classification (timeout / exit code / embedded errors) plus self-healing fix suggestions; results feed the **Build Diagnostics** panel on the Dashboard (`/api/devwatch/runs`).

---

## Complete CLI Commands Reference

NOVA AI features a comprehensive CLI suite (`nova` or `python -m nova_ai.cli` or standalone `nova-ai.exe`):

### 1. 💬 Chat, Voice & Perception
| Command | Description | Example |
|---|---|---|
| `nova chat` | Launch an interactive multi-turn REPL chat session | `nova chat --model llama3` |
| `nova ask "<query>"` | Send a single query directly to the model/agent | `nova ask "Summarize this repo"` |
| `nova voice` | Real-time hands-free voice conversation mode | `nova voice --push-to-talk` |
| `nova screen capture` | Capture active window/screen and run OCR text extraction | `nova screen capture --output screen.png` |
| `nova screen ask "<query>"` | Ask questions about what's currently on your screen | `nova screen ask "Explain this error"` |

### 2. 🚀 Server & Background Daemons
| Command | Description | Example |
|---|---|---|
| `nova serve` | Start the local OpenAI-compatible REST & WebSocket API server | `nova serve --port 8000` |
| `nova start` | Start the NOVA AI server as a background daemon process | `nova start` |
| `nova status` | Check status of the running background daemon | `nova status` |
| `nova restart` | Restart the running server daemon | `nova restart` |
| `nova stop` | Terminate the server background daemon | `nova stop` |
| `nova tunnel` | Expose local API securely to the internet via Cloudflare Tunnel | `nova tunnel --port 8000` (starts; `nova tunnel status` inspects config) |

### 3. 🧠 Models & Smart Routing
| Command | Description | Example |
|---|---|---|
| `nova model list` | List all discovered local and cloud AI models | `nova model list` |
| `nova model pull <name>` | Download a local GGUF/Ollama model directly | `nova model pull llama3` |
| `nova host <model>` | Serve and host a local model with hardware acceleration | `nova host qwen2.5:7b` |
| `nova router status` | View the Smart Router complexity tiers & statistics | `nova router status` |
| `nova router test "<query>"` | Test dynamic query complexity classification | `nova router test "Design a microservice"` |

### 4. 🛠️ Autonomous Tools & Integrations
| Command | Description | Example |
|---|---|---|
| `nova tool list` | List all registered built-in and dynamic tools | `nova tool list` |
| `nova integrations list` | View software connectors (Packet Tracer, Office, Canvas, Git) | `nova integrations list` |
| `nova integrations enable <id>`| Enable a specific software bridge | `nova integrations enable cisco_packet_tracer` |
| `nova canvas list` | List interactive Canvas charts, HTML, and SVG artifacts | `nova canvas list` |
| `nova scheduler list` | View and manage scheduled tasks and cron jobs | `nova scheduler list` |
| `nova add <mcp-server>` | Connect external Model Context Protocol (MCP) servers | `nova add filesystem` |
| `nova tool list` | List registered tools with descriptions | `nova tool list` |

### 5. 📚 Long-Term Memory & Deep Research
| Command | Description | Example |
|---|---|---|
| `nova memory status` | Inspect SQLite vector store and indexed chunk counts | `nova memory status` |
| `nova memory search "<q>"` | Semantic search over indexed personal knowledge base | `nova memory search "project plan"` |
| `nova memory-wiki show <topic>`| Display structured markdown knowledge-base articles | `nova memory-wiki show profile` |
| `nova research` | Auto-detect local sources, ingest, and launch Deep Research chat (use `nova ask --research "<topic>"` for one-shot cited research) | `nova ask --research "Latest advancements in LLM reasoning"` |

### 6. ⚙️ Diagnostics, Config & Benchmarking
| Command | Description | Example |
|---|---|---|
| `nova doctor` | Run full hardware, GPU, and engine health diagnostics | `nova doctor` |
| `nova logs` | Show server/CLI log files (`-f` to follow) | `nova logs -f server.log` |
| `nova dev-watch -c "<cmd>"` | Run a build/test command and self-diagnose failures with fix suggestions | `nova dev-watch -c "pytest -q" --watch` |
| `nova init` | Auto-detect GPU hardware and create `~/.nova_ai/config.toml` | `nova init --preset deep-research` |
| `nova config show` | Print loaded configuration hierarchy and settings | `nova config show` |
| `nova config set <k> <v>` | Modify a configuration property in TOML | `nova config set engine.default ollama` |
| `nova bench` | Measure inference latency, tokens/sec, and energy consumption | `nova bench run --model llama3` |
| `nova self-update` | Upgrade NOVA AI to the latest release | `nova self-update` |

---

See the [User Guide](https://hamza35779.github.io/NOVA-AI/user-guide/morning-digest/) and [Tutorials](https://hamza35779.github.io/NOVA-AI/tutorials/) for detailed setup instructions.

Full documentation — including Docker deployment, cloud engines, development setup, and tutorials — at **[hamza35779.github.io/NOVA-AI](https://hamza35779.github.io/NOVA-AI/)**.

## Community

- **GitHub:** [github.com/Hamza35779/NOVA-AI](https://github.com/Hamza35779/NOVA-AI)
- **Issues:** [github.com/Hamza35779/NOVA-AI/issues](https://github.com/Hamza35779/NOVA-AI/issues)

## Contributing

We welcome contributions! See the [Contributing Guide](CONTRIBUTING.md) for incentives, contribution types, and the PR process.

Quick start for contributors:

```bash
git clone https://github.com/Hamza35779/NOVA-AI.git
cd NOVA-AI
uv sync --extra dev --extra framework-comparison --extra server
uv run maturin develop --manifest-path rust/crates/nova_ai-python/Cargo.toml   # native extension (CI builds it too)
cd frontend && npm ci && npm run build && cd ..                                # embeds the UI into nova serve
uv run pre-commit install
uv run pytest tests/ -v
```

Useful scripts: `scripts/gen-cli-docs.py` regenerates `docs/cli/` from `nova --help`, and `scripts/check-versions.sh` catches stale installer/version strings before CI does.

Browse the [Roadmap](https://hamza35779.github.io/NOVA-AI/development/roadmap/) for areas where help is needed. Comment **"take"** on any issue to get auto-assigned.

## License

[Apache 2.0](LICENSE)
