diff --git a/docs/downloads.md b/docs/downloads.md new file mode 100644 index 00000000..3732392c --- /dev/null +++ b/docs/downloads.md @@ -0,0 +1,246 @@ +--- +title: Downloads +description: Download the OpenJarvis desktop app, browser app, CLI, or Python SDK +--- + +# Downloads + +OpenJarvis runs entirely on your hardware. Choose the interface that fits your workflow. + +--- + +## Desktop App + +The desktop app is a native window for the OpenJarvis chat UI. All inference and backend +processing happens on your local machine — the app connects to the backend you start locally. + +!!! info "Backend required" + Start the backend before opening the desktop app. The quickstart script handles everything: + ```bash + git clone https://github.com/HazyResearch/OpenJarvis.git && cd OpenJarvis + ./scripts/quickstart.sh + ``` + +### Download + +| Platform | Download | Notes | +|----------|----------|-------| +| macOS (Apple Silicon) | [:material-download: **OpenJarvis.dmg**](https://github.com/HazyResearch/OpenJarvis/releases/download/desktop-latest/OpenJarvis_1.0.0_aarch64.dmg) | M1/M2/M3/M4 Macs | +| Windows (64-bit) | [:material-download: **OpenJarvis-setup.exe**](https://github.com/HazyResearch/OpenJarvis/releases/download/desktop-latest/OpenJarvis_1.0.0_x64-setup.exe) | Windows 10+ | +| Linux (DEB) | [:material-download: **OpenJarvis.deb**](https://github.com/HazyResearch/OpenJarvis/releases/download/desktop-latest/OpenJarvis_1.0.0_amd64.deb) | Ubuntu, Debian | +| Linux (RPM) | [:material-download: **OpenJarvis.rpm**](https://github.com/HazyResearch/OpenJarvis/releases/download/desktop-latest/OpenJarvis-1.0.0-1.x86_64.rpm) | Fedora, RHEL | +| Linux (AppImage) | [:material-download: **OpenJarvis.AppImage**](https://github.com/HazyResearch/OpenJarvis/releases/download/desktop-latest/OpenJarvis_1.0.0_amd64.AppImage) | Any distro | + +!!! tip "All releases" + Browse all versions on the [GitHub Releases](https://github.com/HazyResearch/OpenJarvis/releases) page. + +### What's included + +The desktop app provides: + +- **Full chat UI** — same interface as the browser app, in a native window +- **Energy monitoring** — real-time power consumption tracking +- **Telemetry dashboard** — token throughput, latency, and cost comparison vs. cloud models +- **System tray** — quick access without keeping a terminal open + +The backend (Ollama, Python API server, inference) runs separately on your machine. + +### Build from source + +```bash +git clone https://github.com/HazyResearch/OpenJarvis.git +cd OpenJarvis/desktop +npm install +npm run tauri build +``` + +The built installer will be in `desktop/src-tauri/target/release/bundle/`. + +--- + +## Browser App + +Run the full chat UI in your browser. Everything stays local — the backend runs on +your machine and the frontend connects via `localhost`. + +### One-command setup + +```bash +git clone https://github.com/HazyResearch/OpenJarvis.git +cd OpenJarvis +./scripts/quickstart.sh +``` + +The script handles everything: + +1. Checks for Python 3.10+ and Node.js 22+ +2. Installs Ollama if not present and pulls a starter model +3. Installs Python and frontend dependencies +4. Starts the backend API server and frontend dev server +5. Opens `http://localhost:5173` in your browser + +### Manual setup + +If you prefer to run each step yourself: + +=== "Step 1: Clone and install" + + ```bash + git clone https://github.com/HazyResearch/OpenJarvis.git + cd OpenJarvis + uv sync --extra server + cd frontend && npm install && cd .. + ``` + +=== "Step 2: Start Ollama" + + ```bash + # Install from https://ollama.com if not already installed + ollama serve & + ollama pull qwen3:0.6b + ``` + +=== "Step 3: Start backend" + + ```bash + uv run jarvis serve --port 8000 + ``` + +=== "Step 4: Start frontend" + + ```bash + cd frontend + npm run dev + ``` + +Then open [http://localhost:5173](http://localhost:5173). + +### What you get + +- **Chat interface** — markdown rendering, streaming responses, conversation history +- **Tool use** — calculator, web search, code interpreter, file I/O +- **System panel** — live telemetry, energy monitoring, cost comparison vs. cloud models +- **Dashboard** — energy graphs, trace debugging, cost breakdown +- **Settings** — model selection, agent configuration, theme toggle + +--- + +## CLI + +The command-line interface is the fastest way to interact with OpenJarvis +programmatically. Every feature is accessible from the terminal. + +### Install + +=== "uv (recommended)" + + ```bash + uv pip install openjarvis + ``` + +=== "pip" + + ```bash + pip install openjarvis + ``` + +=== "From source" + + ```bash + git clone https://github.com/HazyResearch/OpenJarvis.git + cd OpenJarvis + uv sync + ``` + +### Verify + +```bash +jarvis --version +# jarvis, version 1.0.0 +``` + +### First commands + +```bash +# Ask a question +jarvis ask "What is the capital of France?" + +# Use an agent with tools +jarvis ask --agent orchestrator --tools calculator "What is 137 * 42?" + +# Start the API server +jarvis serve --port 8000 + +# Run diagnostics +jarvis doctor + +# List available models +jarvis model list + +# Interactive chat +jarvis chat +``` + +!!! info "Inference backend required" + The CLI requires a running inference backend (e.g., Ollama). See the + [Installation guide](getting-started/installation.md#setting-up-an-inference-backend) + for setup instructions. + +--- + +## Python SDK + +For programmatic access, the `Jarvis` class provides a high-level sync API. + +### Install + +```bash +pip install openjarvis +``` + +### Quick example + +```python +from openjarvis import Jarvis + +j = Jarvis() +print(j.ask("Explain quicksort in two sentences.")) +j.close() +``` + +### With agents and tools + +```python +result = j.ask_full( + "What is the square root of 144?", + agent="orchestrator", + tools=["calculator", "think"], +) +print(result["content"]) # "12" +print(result["tool_results"]) # tool invocations +print(result["turns"]) # number of agent turns +``` + +### Composition layer + +For full control, use the `SystemBuilder`: + +```python +from openjarvis import SystemBuilder + +system = ( + SystemBuilder() + .engine("ollama") + .model("qwen3:8b") + .agent("orchestrator") + .tools(["calculator", "web_search", "file_read"]) + .enable_telemetry() + .enable_traces() + .build() +) + +result = system.ask("Summarize the latest AI news.") +system.close() +``` + +See the [Python SDK guide](user-guide/python-sdk.md) for the full API reference. diff --git a/docs/gen_ref_pages.py b/docs/gen_ref_pages.py new file mode 100644 index 00000000..cd185750 --- /dev/null +++ b/docs/gen_ref_pages.py @@ -0,0 +1,31 @@ +"""Generate the code reference pages.""" +from pathlib import Path + +import mkdocs_gen_files + +nav = mkdocs_gen_files.Nav() +src = Path("src") + +for path in sorted(src.rglob("*.py")): + module_path = path.relative_to(src).with_suffix("") + doc_path = path.relative_to(src).with_suffix(".md") + full_doc_path = Path("api-reference", doc_path) + + parts = tuple(module_path.parts) + if parts[-1] == "__init__": + parts = parts[:-1] + doc_path = doc_path.with_name("index.md") + full_doc_path = full_doc_path.with_name("index.md") + elif parts[-1].startswith("_"): + continue + + nav[parts] = doc_path.as_posix() + + with mkdocs_gen_files.open(full_doc_path, "w") as fd: + identifier = ".".join(parts) + fd.write(f"::: {identifier}") + + mkdocs_gen_files.set_edit_path(full_doc_path, path) + +with mkdocs_gen_files.open("api-reference/SUMMARY.md", "w") as nav_file: + nav_file.writelines(nav.build_literate_nav()) diff --git a/docs/index.md b/docs/index.md index c622361d..11c62d1c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -34,16 +34,24 @@ Everything runs on your hardware. Cloud APIs are optional. === "Desktop App" - The desktop app is a native window for the chat UI. Start the backend first, - then open the app. + The desktop app is a native window for the OpenJarvis UI. + The backend (Ollama + inference) runs on your machine — start it first, then open the app. - **1.** Start backend: `git clone ... && cd OpenJarvis && ./scripts/quickstart.sh` + **Step 1.** Start the backend: - **2.** Download the app: + ```bash + git clone https://github.com/HazyResearch/OpenJarvis.git + cd OpenJarvis + ./scripts/quickstart.sh + ``` + + **Step 2.** Download and open the desktop app: [Download for macOS (Apple Silicon)](https://github.com/HazyResearch/OpenJarvis/releases/download/desktop-latest/OpenJarvis_1.0.0_aarch64.dmg){ .md-button .md-button--primary } - Also available for [Windows](https://github.com/HazyResearch/OpenJarvis/releases/download/desktop-latest/OpenJarvis_1.0.0_x64-setup.exe), [Linux (DEB)](https://github.com/HazyResearch/OpenJarvis/releases/download/desktop-latest/OpenJarvis_1.0.0_amd64.deb), and [Linux (RPM)](https://github.com/HazyResearch/OpenJarvis/releases/download/desktop-latest/OpenJarvis-1.0.0-1.x86_64.rpm). See [Installation](getting-started/installation.md#desktop-app) for details. + Also available for [Windows](https://github.com/HazyResearch/OpenJarvis/releases/download/desktop-latest/OpenJarvis_1.0.0_x64-setup.exe), [Linux (DEB)](https://github.com/HazyResearch/OpenJarvis/releases/download/desktop-latest/OpenJarvis_1.0.0_amd64.deb), and [Linux (RPM)](https://github.com/HazyResearch/OpenJarvis/releases/download/desktop-latest/OpenJarvis-1.0.0-1.x86_64.rpm). See the [Downloads](downloads.md) page for details. + + The app connects to `http://localhost:8000` automatically. === "Python SDK" diff --git a/mkdocs.yml b/mkdocs.yml index 2beb20d0..6b6d67ad 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -50,6 +50,11 @@ extra_css: plugins: - search + - gen-files: + scripts: + - docs/gen_ref_pages.py + - literate-nav: + nav_file: SUMMARY.md - mkdocstrings: default_handler: python handlers: @@ -151,23 +156,7 @@ nav: - Design Principles: architecture/design-principles.md - Security: architecture/security.md - Channels: architecture/channels.md - - API Reference: - - api/index.md - - SDK (Jarvis): api/sdk.md - - Core: api/core.md - - Engine: api/engine.md - - Agents: api/agents.md - - Memory: api/memory.md - - Tools: api/tools.md - - Intelligence: api/intelligence.md - - Learning: api/learning.md - - Traces: api/traces.md - - Telemetry: api/telemetry.md - - Benchmarks: api/bench.md - - Evals: api/evals.md - - Server: api/server.md - - Security: api/security.md - - Channels: api/channels.md + - API Reference: api-reference/ - Deployment: - Docker: deployment/docker.md - systemd (Linux): deployment/systemd.md diff --git a/pyproject.toml b/pyproject.toml index d80d07db..1bfa393d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -85,6 +85,8 @@ docs = [ "mkdocs>=1.6", "mkdocs-material>=9.5", "mkdocstrings[python]>=0.25", + "mkdocs-gen-files>=0.5", + "mkdocs-literate-nav>=0.6", ] [project.scripts]