___ _ _ _ ___ _
|_ _|| \| | /_\ | _ \ /_\
| | | .` | / _ \ | / / _ \
|___||_|\_|/_/ \_\|_|_\/_/ \_\
-=It's Not A Random Acronym=-
Your own AI that lives on your desktop, controls your house, designs your parts, runs your browser, and prints your prototypes - all by voice.
Supported runtime:
electron/main.js -> backend/server.py. Thebackend/core/server refactor is archived reference code and is not the active app backend.
INARA is a modular AI agent platform built for real-world control. Not a chatbot. Not a wrapper around an API. A system with eyes, ears, hands, and opinions.
You can talk to it and get a response. Ask it to design a gear and it can create a 3D model, prepare it for printing, and send it to your printer. Tell it to dim the lights and it handles it. Ask it to look something up on Amazon and it opens a browser and searches for you.
| Feature | Description | Tech |
|---|---|---|
| ๐ฃ๏ธ Real-Time Voice | Low-latency conversation with interrupt handling and wake word | Gemini Native Audio |
| ๐ง Parametric CAD | Generate and iterate 3D models from natural language | build123d -> STL |
| ๐จ๏ธ 3D Print Pipeline | Auto-slice and send to printers over your network | OrcaSlicer + Moonraker/OctoPrint |
| ๐๏ธ Gesture Control | Minority Report-style window manipulation via hand tracking | MediaPipe |
| ๐ Web Agent | Autonomous browser - navigates, clicks, types, reads | Playwright + Chromium |
| ๐ Smart Home | Voice control for TP-Link Kasa + Home Assistant devices | python-kasa, HA REST API |
| ๐๏ธ Face Auth | Biometric login - local only, nothing leaves your machine | MediaPipe Face Landmarks |
| ๐ Project Memory | Persistent context across sessions and conversations | File-based storage |
| โฐ Reminders | Voice-set reminders and recurring routines that fire on cue | File-backed store |
| ๐ฅ๏ธ Desktop Control | Launch apps, take screenshots, search files, read clipboard | psutil, pyperclip |
| ๐ท Camera Vision | Describe scenes, detect presence, watch for conditions | Gemini Vision |
INARA's Minority Report interface uses your webcam for hands-free window control:
| Gesture | Action |
|---|---|
| โ Closed Fist | Grab and drag a UI window |
| ๐ค Pinch | Confirm / click |
| โ Open Palm | Release |
| Module | Description |
|---|---|
| ๐ Phone Calls | Outbound/inbound call handling through voice |
| ๐ Calendar Integration | Time-aware scheduling synced to external calendars |
| ๐ Matter / Thread | Next-gen smart home protocol support |
| ๐ค Custom Wake Word | Train a personal wake phrase instead of a button press |
| ๐ Multi-Room Audio | Route voice and playback across rooms |
Current supported runtime:
- Electron launches
backend/server.py backend/server.pyowns the active Socket.IO contract used by the React appbackend/core/is an archived experimental refactor and is not used bynpm run dev
graph TB
subgraph Frontend ["Frontend - Electron + React"]
UI[React UI]
THREE[Three.js 3D Viewer]
GESTURE[MediaPipe Gestures]
SOCKET_C[Socket.IO Client]
end
subgraph Backend ["Backend - Python + FastAPI"]
SERVER[backend/server.py<br/>Canonical Socket.IO Runtime]
LIVE[inara.py<br/>Gemini Live Voice Loop]
CAD[cad_agent.py<br/>CAD Generation]
WEB[web_agent.py<br/>Browser Automation]
PRINTER[printer_agent.py<br/>3D Printing]
KASA[kasa_agent.py<br/>Smart Home]
AUTH[authenticator.py<br/>Face Auth]
PROJECT[project_manager.py<br/>Project Context]
SCHED[scheduler_agent.py<br/>Reminders & Routines]
DESK[desktop_agent.py<br/>Desktop Control]
VIS[vision_agent.py<br/>Camera Vision]
DEV[device_agent.py<br/>Unified Devices]
end
UI --> SOCKET_C
SOCKET_C <--> SERVER
SERVER --> LIVE
SERVER --> CAD
SERVER --> WEB
SERVER --> KASA
SERVER --> PRINTER
SERVER --> AUTH
SERVER --> PROJECT
SERVER --> SCHED
SERVER --> DESK
SERVER --> VIS
SERVER --> DEV
CAD -->|STL| THREE
CAD -->|STL| PRINTER
The repository still contains an unfinished event-bus rewrite under backend/core/, but the supported runtime and active backend contract live in backend/server.py.
- Python 3.11+
- Node.js 18+
# Clone
git clone https://github.com/Herorif/inara.git && cd inara
# Python environment
python -m venv .venv
# Activate (pick your OS)
# Linux/macOS:
source .venv/bin/activate
# Windows:
.venv\Scripts\activate
# macOS only - required for PyAudio
# brew install portaudio
# Dependencies
pip install -r requirements.txt
playwright install chromium
# Frontend
npm install
# API keys
echo "GEMINI_API_KEY=your_key_here" > .envSingle command:
npm run devOr split terminals (recommended - you'll want to see the logs):
# Terminal 1 - Backend
python backend/server.py
# Terminal 2 - Frontend
npm run devManual backend shortcut:
npm run backend:devMake sure your venv is activated in any terminal that runs Python.
Once it's running, try these:
- ๐ฃ๏ธ Voice - Say "Hello INARA". She should respond.
- ๐๏ธ Face Auth - Look at the camera. If enabled, the lock screen should unlock.
- ๐ง CAD - Open the CAD window and say "Create a cube". Watch it generate.
- ๐ Web - Open the Browser window and say "Go to Google".
- ๐ Smart Home - If you have Kasa devices, say "Turn on the lights".
- ๐จ๏ธ Print - Generate a model, then say "Print it".
- โฐ Reminders - Say "Remind me to stretch in 5 minutes". It fires and announces.
- ๐ฅ๏ธ Desktop - Open the Desktop window. Click the lightning bolt to pull system stats.
- ๐ท Vision - Open the Vision window. Type "person at door" and add a watch condition.
Settings live in backend/settings.json (auto-created on first run).
| Key | Type | Description |
|---|---|---|
face_auth_enabled |
bool |
Require face recognition before interaction |
tool_permissions.generate_cad |
bool |
Require confirmation before CAD generation |
tool_permissions.run_web_agent |
bool |
Require confirmation before browser automation |
tool_permissions.write_file |
bool |
Require confirmation before writing files to disk |
tool_permissions.launch_app |
bool |
Require confirmation before launching applications |
tool_permissions.control_device |
bool |
Require confirmation before toggling smart devices |
tool_permissions.watch_for |
bool |
Require confirmation before starting camera watch |
printers |
array |
Saved printer configurations |
kasa_devices |
array |
Saved smart home devices |
Create a .env file in the project root:
GEMINI_API_KEY=your_gemini_key
ANTHROPIC_API_KEY=your_claude_key
# Optional โ only needed if using Home Assistant integration
HA_URL=http://homeassistant.local:8123
HA_TOKEN=your_long_lived_access_token- Gemini key -> Google AI Studio
- Claude key -> Anthropic Console
Supports Klipper/Moonraker, OctoPrint, and PrusaLink. Printers are auto-discovered via mDNS on your local network, or can be added manually by IP.
Requires OrcaSlicer installed for slicing. INARA auto-detects the installation path and selects the right profile based on your printer model.
TP-Link Kasa devices are discovered automatically on your network. Control lights (on/off, brightness, color), plugs, and switches - by voice or through the UI.
- Take a clear photo of your face.
- Save it as
reference.jpgin thebackend/directory. - Toggle with
face_auth_enabledin settings.
All processing is local. Nothing is uploaded. Nothing is stored externally.
inara/
โโโ backend/
โ โโโ core/ # Event bus, reminder store, config, tool registry
โ โโโ llm/ # LLM abstraction (Gemini, Claude, router)
โ โโโ agents/ # Agent modules (CAD, web, printer, kasa, scheduler, desktop, vision, device)
โ โโโ desktop/ # System monitor, app registry, screen capture
โ โโโ vision/ # Vision loop (continuous camera watch conditions)
โ โโโ devices/ # Home Assistant bridge
โ โโโ voice/ # Voice pipeline (STT, TTS, VAD, audio I/O)
โ โโโ inara.py # Voice integration (Gemini Live API)
โ โโโ server.py # Canonical Socket.IO runtime
โ โโโ printer_agent.py # Printer discovery & slicing engine
โ โโโ kasa_agent.py # Kasa device control engine
โ โโโ cad_agent.py # CAD generation engine
โ โโโ authenticator.py # Face auth engine
โ โโโ project_manager.py # Project context management
โโโ src/ # React frontend
โ โโโ App.jsx # Main application shell
โ โโโ store/ # Zustand slices (chat, cad, kasa, reminders, desktop, vision, devicesโฆ)
โ โโโ components/ # UI components (windows, visualizer, tools panelโฆ)
โโโ electron/ # Electron main process
โ โโโ main.js # Window & IPC setup
โโโ tests/ # Test suite
โโโ .env # API keys (create this)
โโโ requirements.txt # Python dependencies
โโโ package.json # Node.js dependencies
โโโ README.md
| Aspect | Implementation |
|---|---|
| API Keys | Stored in .env, excluded from version control |
| Face Data | Processed locally, never transmitted |
| Tool Confirmations | Write/CAD/Web actions can require user approval |
| Project Data | Everything stays on your machine |
Never share your
.envfile orreference.jpg. These contain credentials and biometric data.
- Fork the repo
- Create a feature branch:
git checkout -b feature/your-feature - Commit your changes
- Open a pull request with a clear description
Copyright 2026 Harif
This project is licensed under the MIT License. See LICENSE for details.
Built by Herorif
I love you 3000
