The Problem
Most "personal AI" assistants still route queries through cloud APIs, meaning user data and control depend on third-party infrastructure. Local models have become capable enough for a large share of everyday tasks, but the software stack to make local-first agents practical—memory, tool use, scheduling, evaluation—has been missing. OpenJarvis addresses that gap.
What This Does
OpenJarvis is a framework for building personal AI agents that run locally by default, calling cloud models only when necessary. The core is Python-based (examples/, docs/user-guide/), with a Rust extension for performance (frontend/src-tauri/). It provides shared primitives for on-device agents: memory, skills, channels, schedulers, and tool use, all configurable via TOML files in configs/openjarvis/.
The project also includes a substantial evaluation framework that treats energy, FLOPs, latency, and dollar cost as first-class constraints alongside accuracy. Benchmarks and leaderboards live in docs/user-guide/benchmarks.md and docs/leaderboard.md. A learning loop uses local trace data to improve models, documented in docs/architecture/learning.md and docs/user-guide/learning-distillation.md.
The frontend is a React/TypeScript desktop app built with Tauri (frontend/src/App.tsx, frontend/src-tauri/). It provides a chat interface, dashboards for cost and energy comparison, memory browser, and agent management. Docker deployment is available for server mode (deploy/docker/Dockerfile and variants for NVIDIA/ROCm GPUs).
How To Use It
Setup: The README documents installation via uv (Python package manager) and maturin for the Rust extension. You need Python 3.10+, Rust, and a local inference backend like Ollama, vLLM, or llama.cpp.
git clone https://github.com/open-jarvis/OpenJarvis.git cd OpenJarvis uv sync uv run jarvis init
Configuration: Agent behavior is defined in TOML config files under configs/openjarvis/. Examples include chat-simple.toml, code-assistant.toml, and deep-research.toml. Personas are defined in configs/openjarvis/prompts/personas/. Cloud providers require API key environment variables (OpenAI, Anthropic, etc.).
Running it: The primary entry point is the jarvis CLI. For the desktop app, run the Tauri frontend from frontend/ (npm install and dev server per frontend/package.json). Server deployment uses Docker Compose files in deploy/docker/.
Real-World Use
A practical setup: run a scheduled morning digest agent (configs/openjarvis/examples/morning-digest-linux.toml) that pulls your calendar and email via local connectors, summarizes them with a local model via Ollama, and sends the result to your messaging channel. The scheduler (docs/user-guide/scheduler.md) handles timing; the agent only calls a cloud model if the local one fails a confidence threshold.
Code Health & Issues
Med - The repo references a rust/crates/openjarvis-python/ path in the README setup instructions, but the detected structure shows only frontend/src-tauri/ for Rust. The core Rust extension may be missing or in a submodule not captured in the analysis. Low - Only 4 test files exist across 200 files. The Python framework core appears to have minimal automated test coverage, which is a risk for a project positioning itself as a production foundation. Low - The desktop/ directory contains only a single overlay.html file, suggesting that component may be incomplete or vestigial. Low - CI is configured via GitHub Actions (.github/workflows/), covering frontend, desktop, docs, and PyPI publishing. This is a positive signal for release hygiene.
The Bottom Line
OpenJarvis is a serious, well-documented attempt at making local-first personal AI practical, with strong architectural documentation and a clear research pedigree. The trade-off is complexity: it requires Rust, Python, and a local inference backend, and the core Python package needs more test coverage before I'd call it production-ready. It's best suited to developers and researchers who want a structured framework for on-device agents and are willing to invest in setup.