Metadata-Version: 2.5
Name: nova-ai-pro
Version: 1.1.1.dev43
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: pre-commit>=3.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest-cov>=5; 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: 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-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>

---

> **[Documentation](https://hamza35779.github.io/NOVA-AI/)**
>
> **[Roadmap](https://hamza35779.github.io/NOVA-AI/development/roadmap/)**

## 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 (1-Click)** | Double-click `start.bat` | `irm https://hamza35779.github.io/NOVA-AI/install.ps1 \| iex` or run `install.bat` |
| **Linux · macOS** | `./start.sh` | `curl -fsSL https://hamza35779.github.io/NOVA-AI/install.sh \| bash` |
| **Docker** | `docker compose -f deploy/docker/docker-compose.yml 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

# 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 eight 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 |
| `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 |
| `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 |

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
uv run pre-commit install
uv run pytest tests/ -v
```

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)
