Merge main into feat/release-preparation, resolving conflicts in: - rust/crates/openjarvis-learning: keep both optimize module and new learning modules (heuristic_reward, icl_updater, orchestrator, etc.) - rust/crates/openjarvis-python: keep both optimization PyO3 wrappers and new policy/evolver/reward wrappers - rust/crates/openjarvis-python/lib.rs: register all PyO3 classes - README.md: accept main's version Also fix pre-existing clippy issues from rust-migration-v2: - Replace deprecated std::io::Error::new(ErrorKind::Other, ...) with std::io::Error::other(...) - Move test-only imports into #[cfg(test)] modules - Remove unused imports (GpuInfo, Role, EngineError, futures::stream) - Replace Iterator::last() with next_back() on DoubleEndedIterator - Rename from_str() to parse() to avoid confusion with FromStr trait - Fix s.len() % 2 != 0 → !s.len().is_multiple_of(2) - Convert manual async fn to async fn syntax Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
OpenJarvis is a framework for building AI systems that run entirely on local hardware. Rather than treating intelligence as a cloud service, OpenJarvis provides composable abstractions for local model selection, inference, agentic reasoning, tool use, and learning — all aware of the hardware they run on.
from openjarvis import Jarvis
j = Jarvis() # auto-detect hardware + engine
response = j.ask("Explain backpropagation") # route to best local model
j.ask("Solve x^2 - 5x + 6 = 0", # multi-turn agent with tools
agent="orchestrator",
tools=["calculator", "think"])
j.memory.index("./papers/") # index documents into local storage
results = j.memory.search("attention mechanism") # semantic retrieval
j.close()
Installation
pip install openjarvis # core framework
pip install openjarvis[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
pip install openjarvis
# 2. Detect hardware and generate config
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
jarvis ask "What is the capital of France?"
# 6. Verify your setup
jarvis doctor
jarvis init auto-detects your hardware and recommends the best engine. After init, it prints engine-specific next steps. Run jarvis doctor at any time to diagnose configuration or connectivity issues.
Development
From source, you need the Rust extension for full functionality (security, tools, agents, etc.):
# 1. Clone and install Python deps
git clone https://github.com/HazyResearch/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.
The Five Pillars
| Pillar | What it does | Key abstractions |
|---|---|---|
| Intelligence | Model management and routing | RouterPolicy, QueryAnalyzer, ModelCatalog |
| Engine | Inference runtime abstraction | InferenceEngine ABC — Ollama, vLLM, SGLang, llama.cpp, MLX |
| Agents | Pluggable reasoning strategies | BaseAgent ABC — Simple, Orchestrator, ReAct, OpenHands, OpenClaw |
| Tools | Capabilities via MCP | BaseTool ABC — calculator, code interpreter, web search, memory; external MCP servers auto-discovered |
| Learning | Trace-driven adaptation | LearningPolicy ABC — SFT (model routing), AgentAdvisor (restructuring), ICL (tool usage) |
Every interaction produces a Trace — a structured record of the full reasoning chain. Learning policies consume traces to improve model selection, agent behavior, and tool usage over time.
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
