{"id":47851727,"url":"https://open-jarvis.github.io/OpenJarvis/","last_synced_at":"2026-05-05T08:00:49.740Z","repository":{"id":344043544,"uuid":"1158198234","full_name":"open-jarvis/OpenJarvis","owner":"open-jarvis","description":"Personal AI, On Personal Devices","archived":false,"fork":false,"pushed_at":"2026-05-03T16:55:25.000Z","size":39544,"stargazers_count":3488,"open_issues_count":45,"forks_count":770,"subscribers_count":63,"default_branch":"main","last_synced_at":"2026-05-03T18:40:48.830Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/open-jarvis.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-15T00:24:16.000Z","updated_at":"2026-05-03T18:08:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/open-jarvis/OpenJarvis","commit_stats":null,"previous_names":["open-jarvis/openjarvis"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/open-jarvis/OpenJarvis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-jarvis%2FOpenJarvis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-jarvis%2FOpenJarvis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-jarvis%2FOpenJarvis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-jarvis%2FOpenJarvis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/open-jarvis","download_url":"https://codeload.github.com/open-jarvis/OpenJarvis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-jarvis%2FOpenJarvis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32640538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"online","status_checked_at":"2026-05-05T02:00:06.033Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-03T22:00:28.539Z","updated_at":"2026-05-05T08:00:49.733Z","avatar_url":"https://github.com/open-jarvis.png","language":"Python","funding_links":[],"categories":["LLM Frameworks"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"OpenJarvis\" src=\"assets/OpenJarvis_Horizontal_Logo.png\" width=\"400\"\u003e\n\n  \u003cp\u003e\u003ci\u003ePersonal AI, On Personal Devices.\u003c/i\u003e\u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://scalingintelligence.stanford.edu/blogs/openjarvis/\"\u003e\u003cimg src=\"https://img.shields.io/badge/project-OpenJarvis-blue\" alt=\"Project\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://open-jarvis.github.io/OpenJarvis/\"\u003e\u003cimg src=\"https://img.shields.io/badge/docs-mkdocs-blue\" alt=\"Docs\"\u003e\u003c/a\u003e\n    \u003cimg src=\"https://img.shields.io/badge/python-%3E%3D3.10-blue\" alt=\"Python\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/license-Apache%202.0-green\" alt=\"License\"\u003e\n    \u003ca href=\"https://discord.gg/YZZRxCAhmm\"\u003e\u003cimg src=\"https://img.shields.io/badge/discord-join-7289da?logo=discord\u0026logoColor=white\" alt=\"Discord\"\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n\u003e **[Documentation](https://open-jarvis.github.io/OpenJarvis/)**\n\u003e\n\u003e **[Project Site](https://scalingintelligence.stanford.edu/blogs/openjarvis/)**\n\u003e\n\u003e **[Leaderboard](https://open-jarvis.github.io/OpenJarvis/leaderboard/)**\n\u003e\n\u003e **[Roadmap](https://open-jarvis.github.io/OpenJarvis/development/roadmap/)**\n\n## Why OpenJarvis?\n\nPersonal 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.\n\nOpenJarvis 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.\n\n## Installation\n\n### Prerequisites\n\n| Tool | Install |\n|------|---------|\n| **Python 3.10+** | [python.org](https://www.python.org/downloads/) |\n| **uv** (Python package manager) | `curl -LsSf https://astral.sh/uv/install.sh \\| sh` — or `brew install uv` on macOS |\n| **Rust** | `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \\| sh` |\n| **Git** | [git-scm.com](https://git-scm.com/) — or `brew install git` on macOS |\n\n\u003e **macOS users:** see the full [macOS Installation Guide](https://open-jarvis.github.io/OpenJarvis/getting-started/macos/) for a step-by-step walkthrough including Homebrew setup.\n\n### Setup\n\n```bash\ngit clone https://github.com/open-jarvis/OpenJarvis.git\ncd OpenJarvis\nuv sync                           # core framework\nuv sync --extra server             # + FastAPI server\n\n# Build the Rust extension\nuv run maturin develop -m rust/crates/openjarvis-python/Cargo.toml\n```\n\n\u003e **Python 3.14+:** set `PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1` before the `maturin` command.\n\nYou also need a local inference backend: [Ollama](https://ollama.com), [vLLM](https://github.com/vllm-project/vllm), [SGLang](https://github.com/sgl-project/sglang), or [llama.cpp](https://github.com/ggerganov/llama.cpp). Alternatively, use the `cloud` engine with [OpenAI](https://openai.com), [Anthropic](https://anthropic.com), [Google Gemini](https://ai.google.dev), [OpenRouter](https://openrouter.ai), or [MiniMax](https://www.minimax.io) by setting the corresponding API key environment variable.\n\n## Quick Start\n\n```bash\n# 1. Install and detect hardware\ngit clone https://github.com/open-jarvis/OpenJarvis.git\ncd OpenJarvis\nuv sync\nuv run maturin develop -m rust/crates/openjarvis-python/Cargo.toml   # required for memory + security features\nuv run jarvis init\n\n# 2. Start Ollama and pull a model\ncurl -fsSL https://ollama.com/install.sh | sh\nollama serve \u0026\nollama pull qwen3.5:4b   # CPU-friendly default; use qwen3.5:9b or larger if you have a GPU\n\n# 3. Ask a question\nuv run jarvis ask \"What is the capital of France?\"\n```\n\n`jarvis init` auto-detects your hardware and recommends the best engine and model size. Run `uv run jarvis doctor` at any time to diagnose issues.\n\n## Starter Configs\n\nInstall any preset with one command:\n\n```bash\nuv run jarvis init --preset morning-digest-mac   # or any preset below\n```\n\n\u003e 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.\n\n| Preset | Use Case | What it does |\n|--------|----------|-------------|\n| `morning-digest-mac` | Daily Briefing (Mac) | Spoken briefing from email, calendar, health, news with Jarvis voice |\n| `morning-digest-linux` | Daily Briefing (Linux) | Same, with vLLM support for GPU servers |\n| `morning-digest-minimal` | Daily Briefing (minimal) | Just Gmail + Calendar, runs on any machine |\n| `deep-research` | Research Assistant | Multi-hop research across indexed docs with citations |\n| `code-assistant` | Code Companion | Agent with code execution, file I/O, and shell access |\n| `scheduled-monitor` | Persistent Monitor | Stateful agent that runs on a schedule with memory |\n| `chat-simple` | Simple Chat | Lightweight conversation, no tools needed |\n\n```bash\n# Example: Morning Digest on Mac\nuv run jarvis init --preset morning-digest-mac\nuv run jarvis connect gdrive          # one OAuth flow covers Gmail, Calendar, Tasks\nuv run jarvis digest --fresh          # generate and play your first briefing\n\n# Example: Deep Research\nuv run jarvis init --preset deep-research\nuv run jarvis memory index ./docs/    # requires the Rust extension — see Setup above\nuv run jarvis ask \"Summarize all emails about Project X\"\n```\n\n### Skills\n\nSkills 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.\n\n```bash\n# Install skills from public sources\njarvis skill install hermes:arxiv\njarvis skill sync hermes --category research\n\n# Use skills with any agent\njarvis ask \"Use the code-explainer skill to explain this Python code: for i in range(5): print(i*2)\"\n\n# Optimize skills from your trace history\njarvis optimize skills --policy dspy\n\n# Benchmark the impact\njarvis bench skills --max-samples 5 --seeds 42\n```\n\nImport 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.\n\nSee 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.\n\n### Built-in Agents\n\n| Agent | Type | What it does |\n|-------|------|-------------|\n| `morning_digest` | Scheduled | Daily briefing from email, calendar, health, news — with TTS audio |\n| `deep_research` | On-demand | Multi-hop research with citations across web and local docs |\n| `monitor_operative` | Continuous | Long-horizon monitoring with memory, compression, and retrieval |\n| `orchestrator` | On-demand | Multi-turn reasoning with automatic tool selection |\n| `native_react` | On-demand | ReAct (Thought-Action-Observation) loop agent |\n| `operative` | Continuous | Persistent autonomous agent with state management |\n| `native_openhands` | On-demand | CodeAct — generates and executes Python code |\n| `simple` | On-demand | Single-turn chat, no tools |\n\nSee 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.\n\nFull documentation — including Docker deployment, cloud engines, development setup, and tutorials — at **[open-jarvis.github.io/OpenJarvis](https://open-jarvis.github.io/OpenJarvis/)**.\n\n## Contributing\n\nWe welcome contributions! See the [Contributing Guide](CONTRIBUTING.md) for incentives, contribution types, and the PR process.\n\nQuick start for contributors:\n\n```bash\ngit clone https://github.com/open-jarvis/OpenJarvis.git\ncd OpenJarvis\nuv sync --extra dev\nuv run pre-commit install\nuv run pytest tests/ -v\n```\n\nBrowse 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.\n\n## About\n\nOpenJarvis is part of [Intelligence Per Watt](https://www.intelligence-per-watt.ai/), a research initiative studying the efficiency of on-device 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/).\n\n## Sponsors\n\n\u003cp\u003e\n  \u003ca href=\"https://www.laude.org/\"\u003eLaude Institute\u003c/a\u003e \u0026bull;\n  \u003ca href=\"https://datascience.stanford.edu/marlowe\"\u003eStanford Marlowe\u003c/a\u003e \u0026bull;\n  \u003ca href=\"https://cloud.google.com/\"\u003eGoogle Cloud Platform\u003c/a\u003e \u0026bull;\n  \u003ca href=\"https://lambda.ai/\"\u003eLambda Labs\u003c/a\u003e \u0026bull;\n  \u003ca href=\"https://ollama.com/\"\u003eOllama\u003c/a\u003e \u0026bull;\n  \u003ca href=\"https://research.ibm.com/\"\u003eIBM Research\u003c/a\u003e \u0026bull;\n  \u003ca href=\"https://hai.stanford.edu/\"\u003eStanford HAI\u003c/a\u003e\n\u003c/p\u003e\n\n## Citation\n```bibtex\n@misc{saadfalcon2026openjarvis,\n  title={OpenJarvis: Personal AI, On Personal Devices},\n  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},\n  year={2026},\n  howpublished={\\url{https://scalingintelligence.stanford.edu/blogs/openjarvis/}},\n}\n```\n\n## License\n\n[Apache 2.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/open-jarvis.github.io%2FOpenJarvis%2F","html_url":"https://awesome.ecosyste.ms/projects/open-jarvis.github.io%2FOpenJarvis%2F","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/open-jarvis.github.io%2FOpenJarvis%2F/lists"}