Metadata-Version: 2.4
Name: OpenJarvis
Version: 1.0.3.dev732
Summary: OpenJarvis — modular AI assistant backend with composable intelligence primitives
Project-URL: Homepage, https://github.com/open-jarvis/OpenJarvis
Project-URL: Documentation, https://open-jarvis.github.io/OpenJarvis/
Project-URL: Repository, https://github.com/open-jarvis/OpenJarvis
Project-URL: Issues, https://github.com/open-jarvis/OpenJarvis/issues
Author: Open Jarvis Contributors
License: Apache-2.0
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.10
Requires-Dist: click>=8
Requires-Dist: datasets>=4.5.0
Requires-Dist: ddgs>=9.11.4
Requires-Dist: httpx>=0.27
Requires-Dist: nvidia-ml-py>=12.560.30
Requires-Dist: openai>=1.30
Requires-Dist: posthog>=3.0
Requires-Dist: python-telegram-bot>=22.6
Requires-Dist: rich>=13
Requires-Dist: tomli>=2.0; python_version < '3.11'
Requires-Dist: tomlkit>=0.12
Provides-Extra: browser
Requires-Dist: playwright>=1.40; extra == 'browser'
Provides-Extra: channel-discord
Requires-Dist: discord-py>=2.3; extra == 'channel-discord'
Provides-Extra: channel-gmail
Requires-Dist: google-api-python-client>=2.0; extra == 'channel-gmail'
Requires-Dist: google-auth-httplib2>=0.2; extra == 'channel-gmail'
Requires-Dist: google-auth-oauthlib>=1.0; extra == 'channel-gmail'
Provides-Extra: channel-line
Requires-Dist: line-bot-sdk>=3.0; extra == 'channel-line'
Provides-Extra: channel-mastodon
Requires-Dist: mastodon-py>=1.8; extra == 'channel-mastodon'
Provides-Extra: channel-messenger
Requires-Dist: pymessenger>=0.0.7; extra == 'channel-messenger'
Provides-Extra: channel-nostr
Requires-Dist: pynostr>=0.6; extra == 'channel-nostr'
Provides-Extra: channel-reddit
Requires-Dist: praw>=7.0; extra == 'channel-reddit'
Provides-Extra: channel-rocketchat
Requires-Dist: rocketchat-api>=1.30; extra == 'channel-rocketchat'
Provides-Extra: channel-slack
Requires-Dist: slack-sdk>=3.27; extra == 'channel-slack'
Provides-Extra: channel-telegram
Requires-Dist: python-telegram-bot>=21.0; extra == 'channel-telegram'
Provides-Extra: channel-twilio
Requires-Dist: twilio>=9.0; extra == 'channel-twilio'
Provides-Extra: channel-twitch
Requires-Dist: twitchio>=2.6; extra == 'channel-twitch'
Provides-Extra: channel-twitter
Requires-Dist: httpx>=0.27; extra == 'channel-twitter'
Provides-Extra: channel-viber
Requires-Dist: viberbot>=1.0; extra == 'channel-viber'
Provides-Extra: channel-xmpp
Requires-Dist: slixmpp>=1.8; extra == 'channel-xmpp'
Provides-Extra: channel-zulip
Requires-Dist: zulip>=0.9; extra == 'channel-zulip'
Provides-Extra: dashboard
Requires-Dist: textual>=0.80; extra == 'dashboard'
Provides-Extra: dev
Requires-Dist: maturin>=1.12.6; extra == 'dev'
Requires-Dist: pre-commit>=3.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest-cov>=5; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: respx>=0.22; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-gen-files>=0.5; extra == 'docs'
Requires-Dist: mkdocs-literate-nav>=0.6; extra == 'docs'
Requires-Dist: mkdocs-material>=9.5; extra == 'docs'
Requires-Dist: mkdocs>=1.6; extra == 'docs'
Requires-Dist: mkdocstrings[python]>=0.25; extra == 'docs'
Provides-Extra: energy-all
Requires-Dist: amdsmi>=6.1; extra == 'energy-all'
Requires-Dist: nvidia-ml-py>=12.560.30; extra == 'energy-all'
Requires-Dist: zeus-ml[apple]; extra == 'energy-all'
Provides-Extra: energy-amd
Requires-Dist: amdsmi>=6.1; extra == 'energy-amd'
Provides-Extra: energy-apple
Requires-Dist: zeus-ml[apple]; extra == 'energy-apple'
Provides-Extra: eval-sheets
Requires-Dist: google-auth>=2.0; extra == 'eval-sheets'
Requires-Dist: gspread>=6.0; extra == 'eval-sheets'
Provides-Extra: eval-wandb
Requires-Dist: wandb>=0.17; extra == 'eval-wandb'
Provides-Extra: framework-comparison
Requires-Dist: polars>=1.0; extra == 'framework-comparison'
Provides-Extra: gpu-metrics
Requires-Dist: nvidia-ml-py>=12.560.30; extra == 'gpu-metrics'
Provides-Extra: inference-cloud
Requires-Dist: anthropic>=0.30; extra == 'inference-cloud'
Requires-Dist: openai>=1.30; extra == 'inference-cloud'
Provides-Extra: inference-gemma
Requires-Dist: pygemma>=0.1.3; extra == 'inference-gemma'
Provides-Extra: inference-google
Requires-Dist: google-genai>=1.0; extra == 'inference-google'
Provides-Extra: inference-litellm
Requires-Dist: litellm>=1.40; extra == 'inference-litellm'
Provides-Extra: inference-mlx
Requires-Dist: mlx-lm>=0.31.1; (sys_platform == 'darwin') and extra == 'inference-mlx'
Provides-Extra: inference-vllm
Requires-Dist: vllm>=0.16.0; extra == 'inference-vllm'
Provides-Extra: learning-dspy
Requires-Dist: dspy>=2.6; extra == 'learning-dspy'
Provides-Extra: learning-gepa
Requires-Dist: gepa>=0.1; extra == 'learning-gepa'
Provides-Extra: media
Requires-Dist: openai>=1.30; extra == 'media'
Provides-Extra: memory-bm25
Requires-Dist: rank-bm25>=0.2.2; extra == 'memory-bm25'
Provides-Extra: memory-colbert
Requires-Dist: colbert-ai>=0.2; extra == 'memory-colbert'
Requires-Dist: torch>=2.0; extra == 'memory-colbert'
Provides-Extra: memory-faiss
Requires-Dist: faiss-cpu>=1.7; extra == 'memory-faiss'
Requires-Dist: numpy>=1.24; extra == 'memory-faiss'
Requires-Dist: sentence-transformers>=2.2; extra == 'memory-faiss'
Provides-Extra: memory-pdf
Requires-Dist: pdfplumber>=0.10; extra == 'memory-pdf'
Provides-Extra: mining-pearl-cpu
Provides-Extra: mining-pearl-vllm
Requires-Dist: docker>=7.0; extra == 'mining-pearl-vllm'
Requires-Dist: httpx>=0.27; extra == 'mining-pearl-vllm'
Provides-Extra: openhands
Requires-Dist: openhands-sdk>=1.0; (python_version >= '3.12') and extra == 'openhands'
Provides-Extra: orchestrator-training
Requires-Dist: torch>=2.0; extra == 'orchestrator-training'
Requires-Dist: transformers>=4.40; extra == 'orchestrator-training'
Provides-Extra: pdf
Requires-Dist: pdfplumber>=0.10; extra == 'pdf'
Provides-Extra: sandbox-docker
Requires-Dist: docker>=7.0; extra == 'sandbox-docker'
Provides-Extra: sandbox-wasm
Requires-Dist: wasmtime>=25; extra == 'sandbox-wasm'
Provides-Extra: scheduler
Requires-Dist: croniter>=2.0; extra == 'scheduler'
Provides-Extra: security-signing
Requires-Dist: cryptography>=43; extra == 'security-signing'
Provides-Extra: server
Requires-Dist: fastapi>=0.110; extra == 'server'
Requires-Dist: pydantic>=2.0; extra == 'server'
Requires-Dist: python-multipart>=0.0.9; extra == 'server'
Requires-Dist: uvicorn>=0.30; extra == 'server'
Provides-Extra: speech
Requires-Dist: faster-whisper>=1.0; extra == 'speech'
Provides-Extra: speech-deepgram
Requires-Dist: deepgram-sdk>=3.0; extra == 'speech-deepgram'
Provides-Extra: tools-search
Requires-Dist: ddgs>=9.11.4; extra == 'tools-search'
Requires-Dist: tavily-python>=0.3; extra == 'tools-search'
Description-Content-Type: text/markdown

<div align="center">
  <img alt="OpenJarvis" src="assets/OpenJarvis_Horizontal_Logo.png" width="400">

  <p><i>Personal AI, On Personal Devices.</i></p>

  <p>
    <a href="https://scalingintelligence.stanford.edu/blogs/openjarvis/"><img src="https://img.shields.io/badge/project-OpenJarvis-blue" alt="Project"></a>
    <a href="https://open-jarvis.github.io/OpenJarvis/"><img src="https://img.shields.io/badge/docs-mkdocs-blue" alt="Docs"></a>
    <img src="https://img.shields.io/badge/python-%3E%3D3.10-blue" alt="Python">
    <img src="https://img.shields.io/badge/license-Apache%202.0-green" alt="License">
    <a href="https://discord.gg/YZZRxCAhmm"><img src="https://img.shields.io/badge/discord-join-7289da?logo=discord&logoColor=white" alt="Discord"></a>
    <a href="https://x.com/OpenJarvisAI"><img src="https://img.shields.io/badge/X-@OpenJarvisAI-black?logo=x&logoColor=white" alt="X / Twitter"></a>
  </p>
</div>

---

> **[Documentation](https://open-jarvis.github.io/OpenJarvis/)**
>
> **[Project Site](https://scalingintelligence.stanford.edu/blogs/openjarvis/)**
>
> **[Leaderboard](https://open-jarvis.github.io/OpenJarvis/leaderboard/)**
>
> **[Roadmap](https://open-jarvis.github.io/OpenJarvis/development/roadmap/)**

## 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](https://www.intelligence-per-watt.ai/) 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 a 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

**macOS / Linux:**

```bash
curl -fsSL https://open-jarvis.github.io/OpenJarvis/install.sh | bash
```

The installer handles everything for you — including [uv](https://docs.astral.sh/uv/), the Python venv, Ollama, and a small starter model. You don't need to install anything first.

**Windows:** the installer is a `bash` script and won't run in PowerShell or `cmd`. Pick one of:

- **WSL2 (recommended for the CLI / Python SDK)** — one-time setup in an admin PowerShell, then run the same `curl … | bash` inside Ubuntu:
  ```powershell
  wsl --install -d Ubuntu-24.04
  ```
  Open the Ubuntu shell that gets installed, then follow [WSL2 install instructions](https://open-jarvis.github.io/OpenJarvis/getting-started/wsl2/).
- **Desktop app** — download the [Windows installer (`.exe`)](https://github.com/open-jarvis/OpenJarvis/releases/download/desktop-v1.0.2/OpenJarvis_1.0.1_x64-setup.exe) from the latest [desktop release](https://github.com/open-jarvis/OpenJarvis/releases/tag/desktop-v1.0.2) (macOS `.dmg` and Linux `.deb`/`.rpm`/`.AppImage` are there too) for the GUI experience, no terminal required. **Prerequisite:** the desktop app expects [uv](https://docs.astral.sh/uv/) to be installed already — if it isn't, install it first in PowerShell, then launch the app:
  ```powershell
  powershell -ExecutionPolicy Bypass -c "irm https://astral.sh/uv/install.ps1 | iex"
  ```

About 3 minutes on a typical broadband connection. Then:

```bash
jarvis
```

The Rust extension and bigger models continue downloading in the background while you chat. Run `jarvis doctor` to see status.

**Platforms:** macOS (Intel + Apple Silicon), Linux, WSL2 on Windows. Native Windows is not supported — use WSL2 or the desktop binary.

**Manual install / contributors:** see [docs/getting-started/install.md](docs/getting-started/install.md).

## Quick Start

```bash
curl -fsSL https://open-jarvis.github.io/OpenJarvis/install.sh | bash
jarvis
```

`jarvis init --preset <name>` switches to a starter config. Available presets: `morning-digest-mac`, `morning-digest-linux`, `morning-digest-minimal`, `deep-research`, `code-assistant`, `scheduled-monitor`, `chat-simple`.

## Starter Configs

Install any preset with one command:

```bash
uv run jarvis init --preset morning-digest-mac   # or any preset below
```

> Prefix every `jarvis ...` invocation with `uv run`, or activate the venv first (`source .venv/bin/activate`) so plain `jarvis ...` works for the rest of your shell session.

| Preset | Use Case | What it does |
|--------|----------|-------------|
| `morning-digest-mac` | Daily Briefing (Mac) | Spoken briefing from email, calendar, health, news with Jarvis voice |
| `morning-digest-linux` | Daily Briefing (Linux) | Same, with vLLM support for GPU servers |
| `morning-digest-minimal` | Daily Briefing (minimal) | Just Gmail + Calendar, runs on any machine |
| `deep-research` | Research Assistant | Multi-hop research across indexed docs with citations |
| `code-assistant` | Code Companion | Agent with code execution, file I/O, and shell access |
| `scheduled-monitor` | Persistent Monitor | Stateful agent that runs on a schedule with memory |
| `chat-simple` | Simple Chat | Lightweight conversation, no tools needed |

```bash
# Example: Morning Digest on Mac
uv run jarvis init --preset morning-digest-mac
uv run jarvis connect gdrive          # one OAuth flow covers Gmail, Calendar, Tasks
uv run jarvis digest --fresh          # generate and play your first briefing

# Example: Deep Research
uv run jarvis init --preset deep-research
uv run jarvis memory index ./docs/    # requires the Rust extension — see Setup above
uv run jarvis ask "Summarize all emails about Project X"
```

### Skills

Skills teach agents how to better use tools and improve their reasoning. Every skill is a tool — agents discover them from a catalog and invoke them on demand.

```bash
# Install skills from public sources
jarvis skill install hermes:arxiv
jarvis skill sync hermes --category research

# Use skills with any agent
jarvis ask "Use the code-explainer skill to explain this Python code: for i in range(5): print(i*2)"

# Optimize skills from your trace history
jarvis optimize skills --policy dspy

# Benchmark the impact
jarvis bench skills --max-samples 5 --seeds 42
```

Import from [Hermes Agent](https://github.com/NousResearch/hermes-agent) (~150 skills), [OpenClaw](https://github.com/openclaw/skills) (~13,700 community skills), or any GitHub repo. Skills follow the [agentskills.io](https://agentskills.io/specification) open standard.

See the [Skills User Guide](https://open-jarvis.github.io/OpenJarvis/user-guide/skills/) and [Skills Tutorial](https://open-jarvis.github.io/OpenJarvis/tutorials/skills-workflow/) for details.

### Built-in Agents

OpenJarvis ships with eight built-in agents across three execution modes (on-demand, scheduled, continuous):

| Agent | Type | What it does |
|-------|------|-------------|
| `morning_digest` | Scheduled | Daily briefing from email, calendar, health, news — with TTS audio |
| `deep_research` | On-demand | Multi-hop research with citations across web and local docs |
| `monitor_operative` | Continuous | Long-horizon monitoring with memory, compression, and retrieval |
| `orchestrator` | On-demand | Multi-turn reasoning with automatic tool selection |
| `native_react` | On-demand | ReAct (Thought-Action-Observation) loop agent |
| `operative` | Continuous | Persistent autonomous agent with state management |
| `native_openhands` | On-demand | CodeAct — generates and executes Python code |
| `simple` | On-demand | Single-turn chat, no tools |

See the [User Guide](https://open-jarvis.github.io/OpenJarvis/user-guide/morning-digest/) and [Tutorials](https://open-jarvis.github.io/OpenJarvis/tutorials/) for detailed setup instructions.

Full documentation — including Docker deployment, cloud engines, development setup, and tutorials — at **[open-jarvis.github.io/OpenJarvis](https://open-jarvis.github.io/OpenJarvis/)**.

## Community

- **GitHub:** [github.com/open-jarvis/OpenJarvis](https://github.com/open-jarvis/OpenJarvis)
- **Discord:** [discord.gg/YZZRxCAhmm](https://discord.gg/YZZRxCAhmm)
- **X / Twitter:** [@OpenJarvisAI](https://x.com/OpenJarvisAI)
- **Docs:** [open-jarvis.github.io/OpenJarvis](https://open-jarvis.github.io/OpenJarvis/)

## Contributing

We welcome contributions! See the [Contributing Guide](CONTRIBUTING.md) for incentives, contribution types, and the PR process.

Quick start for contributors:

```bash
git clone https://github.com/open-jarvis/OpenJarvis.git
cd OpenJarvis
uv sync --extra dev
uv run pre-commit install
uv run pytest tests/ -v
```

Browse the [Roadmap](https://open-jarvis.github.io/OpenJarvis/development/roadmap/) for areas where help is needed. Comment **"take"** on any issue to get auto-assigned.

## About

OpenJarvis is part of [Intelligence Per Watt](https://www.intelligence-per-watt.ai/), a research initiative studying the intelligence efficiency of AI systems. The project is developed at [Hazy Research](https://hazyresearch.stanford.edu/) and the [Scaling Intelligence Lab](https://scalingintelligence.stanford.edu/) at [Stanford SAIL](https://ai.stanford.edu/).

## Sponsors

<p>
  <a href="https://www.laude.org/">Laude Institute</a> &bull;
  <a href="https://datascience.stanford.edu/marlowe">Stanford Marlowe</a> &bull;
  <a href="https://cloud.google.com/">Google Cloud Platform</a> &bull;
  <a href="https://lambda.ai/">Lambda Labs</a> &bull;
  <a href="https://ollama.com/">Ollama</a> &bull;
  <a href="https://research.ibm.com/">IBM Research</a> &bull;
  <a href="https://hai.stanford.edu/">Stanford HAI</a>
</p>

## Citation
```bibtex
@misc{saadfalcon2026openjarvispersonalaipersonal,
      title={OpenJarvis: Personal AI, On Personal Devices}, 
      author={Jon Saad-Falcon and Avanika Narayan and Robby Manihani and Tanvir Bhathal and Herumb Shandilya and Hakki Orhun Akengin and Gabriel Bo and Andrew Park and Matthew Hart and Caia Costello and Chuan Li and Christopher Ré and Azalia Mirhoseini},
      year={2026},
      eprint={2605.17172},
      archivePrefix={arXiv},
      primaryClass={cs.LG},
      url={https://arxiv.org/abs/2605.17172}, 
}
```

## License

[Apache 2.0](LICENSE)
