Instructions to use Xx-Vexento-xX/openhome-nova with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- llama-cpp-python
How to use Xx-Vexento-xX/openhome-nova with llama-cpp-python:
# !pip install llama-cpp-python from llama_cpp import Llama llm = Llama.from_pretrained( repo_id="Xx-Vexento-xX/openhome-nova", filename="nova.gguf", )
llm.create_chat_completion( messages = "No input example has been defined for this model task." )
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use Xx-Vexento-xX/openhome-nova with llama.cpp:
Install from brew
brew install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama-server -hf Xx-Vexento-xX/openhome-nova # Run inference directly in the terminal: llama-cli -hf Xx-Vexento-xX/openhome-nova
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama-server -hf Xx-Vexento-xX/openhome-nova # Run inference directly in the terminal: llama-cli -hf Xx-Vexento-xX/openhome-nova
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf Xx-Vexento-xX/openhome-nova # Run inference directly in the terminal: ./llama-cli -hf Xx-Vexento-xX/openhome-nova
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf Xx-Vexento-xX/openhome-nova # Run inference directly in the terminal: ./build/bin/llama-cli -hf Xx-Vexento-xX/openhome-nova
Use Docker
docker model run hf.co/Xx-Vexento-xX/openhome-nova
- LM Studio
- Jan
- Ollama
How to use Xx-Vexento-xX/openhome-nova with Ollama:
ollama run hf.co/Xx-Vexento-xX/openhome-nova
- Unsloth Studio
How to use Xx-Vexento-xX/openhome-nova with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for Xx-Vexento-xX/openhome-nova to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for Xx-Vexento-xX/openhome-nova to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for Xx-Vexento-xX/openhome-nova to start chatting
- Pi
How to use Xx-Vexento-xX/openhome-nova with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama-server -hf Xx-Vexento-xX/openhome-nova
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "Xx-Vexento-xX/openhome-nova" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent new
How to use Xx-Vexento-xX/openhome-nova with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama-server -hf Xx-Vexento-xX/openhome-nova
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default Xx-Vexento-xX/openhome-nova
Run Hermes
hermes
- Docker Model Runner
How to use Xx-Vexento-xX/openhome-nova with Docker Model Runner:
docker model run hf.co/Xx-Vexento-xX/openhome-nova
- Lemonade
How to use Xx-Vexento-xX/openhome-nova with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Xx-Vexento-xX/openhome-nova
Run and chat with the model
lemonade run user.openhome-nova-{{QUANT_TAG}}List all available models
lemonade list
llm.create_chat_completion(
messages = "No input example has been defined for this model task."
)YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
I'm So Sorry however this version of Nova is broken, and spits out garbage. Use the updated v2 model please
openHome 🏠
A local, privacy-first smart home security system with an optional AI reasoning layer. No cloud, no subscriptions, no data leaving your network.
What It Does
openHome connects ESP32 sensors around your home to a Raspberry Pi hub that monitors events in real time. A web dashboard lets you view device states and control everything manually. Optionally, NOVA — a fine-tuned Qwen 0.5B model — reasons over sensor events and natural language commands to automate responses.
Without AI: sensors report → hub stores state → dashboard updates → you control devices manually.
With AI: sensors report → NOVA reasons → actions execute automatically (lights, thermostat, notifications, etc.)
Hardware
| Device | Role |
|---|---|
| Raspberry Pi | Central hub running FastAPI server |
| ESP32 (×13) | Distributed sensors and actuators |
| RGB lights | Controllable via hub |
| Smart plugs | Controllable via hub |
| Thermostat | Controllable via hub |
Supported Sensor Types
- Door sensors
- Motion sensors
- Flood/water sensors
- Smoke + CO sensors
- RFID locks
- Panic buttons
- Doorbells
- Garage door controller
- Climate monitors
- Air quality sensors
- Smart plugs
- RGB lights
- Thermostat
Software Stack
ESP32 Sensors
│ (HMAC-signed HTTPS payloads)
▼
Raspberry Pi Hub ── FastAPI server
│ │
│ SQLite state store
│ RAG memory (ChromaDB)
│ NOVA via Ollama
▼
Web Dashboard (vanilla JS)
│
└── Manual controls, live device state, notifications
Project Structure
openHome/
├── pi/ # Raspberry Pi hub
│ ├── server.py # FastAPI main server
│ ├── ai_brain.py # NOVA inference + action dispatch
│ ├── action_executor.py # Sends commands back to ESP32s
│ ├── device_schemas.py # Device type definitions
│ ├── rag_memory.py # ChromaDB RAG layer
│ └── secrets_config.py # API keys + HMAC secrets (gitignored)
│
├── esp32/ # ESP32 firmware (Arduino IDE)
│ ├── door_sensor/
│ ├── motion_sensor/
│ ├── flood_sensor/
│ ├── smoke_co_sensor/
│ ├── rfid_lock/
│ ├── panic_button/
│ ├── doorbell/
│ ├── garage_door/
│ ├── climate_monitor/
│ ├── air_quality/
│ ├── smart_plug/
│ ├── rgb_lights/
│ └── thermostat/
│
├── dashboard/ # Web UI
│ ├── index.html
│ ├── style.css
│ └── app.js
│
├── dataset/ # NOVA training pipeline
│ ├── generate_training_data.py
│ ├── train_cpu.py
│ ├── openhome_train.jsonl
│ └── openhome_val.jsonl
│
└── README.md
NOVA — The AI Layer
NOVA is a Qwen2.5-0.5B model fine-tuned on 1,909 openHome-specific examples covering:
- Sensor event → action reasoning (doors, motion, smoke, flood, panic, RFID, etc.)
- Natural language commands ("goodnight", "movie mode", "I'm leaving")
- Time-of-day context (night vs. day behavior)
- Constraint enforcement (read-only sensors, garage with car present, thermostat limits)
- Multi-action routines
Training stats:
- Base model:
Qwen/Qwen2.5-0.5B-Instruct - Dataset: 1,718 train / 191 val examples
- Final loss: ~0.039
- Format: GGUF Q8_0 via llama.cpp
- Inference: Ollama
NOVA always replies with a valid JSON array of action objects or [] for no action. It never explains itself, never fabricates device IDs, and respects all device constraints.
Setup
Prerequisites
- Raspberry Pi (3B+ or newer)
- Python 3.11+
- Ollama installed on the Pi
- Arduino IDE for ESP32 firmware
1. Clone the repo
git clone https://github.com/DaEpickid540/openHome.git
cd openHome
2. Generate secrets
cd pi
python gen_keys.py
This creates secrets_config.py with your API key and HMAC secret. Keep this file out of version control.
3. Install Pi dependencies
pip install fastapi uvicorn chromadb sentence-transformers requests
4. Load NOVA into Ollama
# Create Modelfile
cat > Modelfile << 'EOF'
FROM /path/to/nova.gguf
PARAMETER temperature 0.1
PARAMETER stop "<|im_end|>"
SYSTEM "You are NOVA, the AI brain of openHome. Reply ONLY with valid JSON arrays of action objects. No explanation, no markdown."
EOF
ollama create openhome-nova -f Modelfile
5. Start the hub server
uvicorn server:app --host 0.0.0.0 --port 8765
6. Flash ESP32 firmware
Open each sketch in esp32/ with Arduino IDE. Update the following in each sketch before flashing:
const char* WIFI_SSID = "your_wifi";
const char* WIFI_PASS = "your_password";
const char* HUB_URL = "http://<pi_ip>:8765/sensor";
const char* API_KEY = "your_api_key_from_secrets_config";
const char* HMAC_KEY = "your_hmac_key_from_secrets_config";
7. Open the dashboard
Open dashboard/index.html in a browser pointed at your Pi's IP. Done.
Security
- All ESP32 payloads are HMAC-SHA256 signed
- API key required on every request
- NOVA runs 100% locally — no data leaves your network
- Secrets are never committed to the repo
Roadmap
- MIFARE DESFire challenge-response RFID (replacing UID-based auth)
- DPO fine-tuning pass on NOVA with Qwen-as-critic
- Voice command input
- Tailscale remote access guide
- Mobile push notifications
Author
Sarvin — @DaEpickid540
License
MIT
- Downloads last month
- 139
# !pip install llama-cpp-python from llama_cpp import Llama llm = Llama.from_pretrained( repo_id="Xx-Vexento-xX/openhome-nova", filename="nova.gguf", )