* feat(ui): update design tokens — system-ui font, warmer palette, accent triad - Remove Merriweather serif font, switch to system-ui font stack - Warmer dark mode neutrals (#161618 bg instead of #09090b) - Add amber/purple accent tokens for signature color triad - Update borders to rgba for softer feel - Tighter line-height (1.5) and letter-spacing (-0.01em) - Update PWA theme_color to match new palette Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(ui): frosted glass sidebar with backdrop-blur Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(ui): initialize shadcn/ui with button, dialog, input, select, tooltip, sonner Set up shadcn/ui (v4) for Tailwind CSS v4 with CSS-first config. Added path aliases (@/) to tsconfig.json and vite.config.ts. Installed six components (button, dialog, input, select, tooltip, sonner) and wired Sonner's <Toaster> into App.tsx for toast notifications. Removed the next-themes dependency since this is a Vite/React project, not Next.js. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(ui): disable create agent when unavailable, replace errors with toasts Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(ui): add System Pulse bar and health check banner - 3px gradient bar at top reflecting system state (idle/inferencing/agent) - Health check banner when backend is unreachable - Pulse colors: blue (inference), purple (agents), dim blue (idle) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(ui): add X-Ray message footers with collapsible telemetry - MessageTelemetry type on ChatMessage (engine, model, speed, TTFT, timing) - Capture timing data during SSE streaming in InputArea - XRayFooter component: collapsed one-liner + expandable trace grid - Integrated into MessageBubble, replacing old token count display Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(ui): resolve shadcn/ui CSS token conflicts with design system - Namespace shadcn @theme inline variables (--color-cn-*) to avoid overriding project's --color-border, --color-accent, --radius-* tokens - Remove @apply border-border, bg-background, text-foreground, font-sans that conflicted with our explicit CSS custom properties - Remove dead Geist font import (we use system-ui) - Remove ---break--- comment artifacts from shadcn CLI Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Why OpenJarvis?
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. At the same time, our Intelligence Per Watt research showed that local language models already handle 88.7% of single-turn chat and reasoning queries, with intelligence efficiency improving 5.3× from 2023 to 2025. The models and hardware are increasingly ready. What has been missing is the software stack to make local-first personal AI practical.
OpenJarvis is that stack. It is an opinionated 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. OpenJarvis aims to be both a research platform and a production foundation for local AI, in the spirit of PyTorch.
Installation
git clone https://github.com/open-jarvis/OpenJarvis.git
cd OpenJarvis
uv sync # core framework
uv sync --extra server # + FastAPI server
You also need a local inference backend: Ollama, vLLM, SGLang, or llama.cpp.
Quick Start
The fastest path is Ollama on any machine with Python 3.10+:
# 1. Install OpenJarvis
git clone https://github.com/open-jarvis/OpenJarvis.git
cd OpenJarvis
uv sync
# 2. Detect hardware and generate config
uv run jarvis init
# 3. Install and start Ollama (https://ollama.com)
curl -fsSL https://ollama.com/install.sh | sh
ollama serve # start the Ollama server
# 4. Pull a model
ollama pull qwen3:8b
# 5. Ask a question
uv run jarvis ask "What is the capital of France?"
# 6. Verify your setup
uv run jarvis doctor
jarvis init auto-detects your hardware and recommends the best engine. After init, it prints engine-specific next steps. Run uv run jarvis doctor at any time to diagnose configuration or connectivity issues.
Development
From source, you need to make sure Rust is installed on System:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Then, you need the Rust extension for full functionality (security, tools, agents, etc.):
# 1. Clone and install Python deps
git clone https://github.com/open-jarvis/OpenJarvis.git
cd OpenJarvis
uv sync --extra dev
# 2. Build and install the Rust extension (requires Rust toolchain)
uv run maturin develop -m rust/crates/openjarvis-python/Cargo.toml
# 3. Run tests
uv run pytest tests/ -v
See Contributing for more.
About
OpenJarvis is part of Intelligence Per Watt, a research initiative studying the efficiency of on-device AI systems. The project is developed at Hazy Research and the Scaling Intelligence Lab at Stanford SAIL.
Sponsors
Laude Institute • Stanford Marlowe • Google Cloud Platform • Lambda Labs • Ollama • IBM Research • Stanford HAI
Citation
@misc{saadfalcon2026openjarvis,
title={OpenJarvis: Personal AI, On Personal Devices},
author={Jon Saad-Falcon and Avanika Narayan and Herumb Shandilya and Hakki Orhun Akengin and Robby Manihani and Gabriel Bo and John Hennessy and Christopher R\'{e} and Azalia Mirhoseini},
year={2026},
howpublished={\url{https://scalingintelligence.stanford.edu/blogs/openjarvis/}},
}
