Installation¶
Diapason runs entirely on your hardware. Choose the interface that fits your workflow.
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¶
The script handles everything:
- Checks for Python 3.10+ and Node.js 18+
- Installs Ollama if not present and pulls a starter model
- Installs Python and frontend dependencies
- Starts the backend API server and frontend dev server
- Opens
http://localhost:5173in your browser
Manual setup¶
If you prefer to run each step yourself:
git clone https://github.com/carlitoetienne01-spec/Diapason.git
cd Diapason
uv sync --extra desktop
uv run maturin develop -m rust/crates/diapason-python/Cargo.toml
cd frontend && npm install && cd ..
Prerequisites
Requires Rust (curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh).
On Python 3.14+, set PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 before the maturin command.
Then open http://localhost:5173.
Desktop App¶
The desktop app is a native window for the Diapason chat UI. All inference and backend processing happens on your local machine — the app connects to the backend you start locally.
Setup¶
Step 1. Start the backend (same as Browser App):
Step 2. Build and open the desktop app from the authenticated checkout.
There is currently no published installer: the GitHub Releases list is empty,
and the former desktop-v1.0.2 links did not exist. On macOS, use the validated
local installer:
On Windows, run deploy/windows/install.ps1 first. It prepares the backend at
%LOCALAPPDATA%\Diapason\src; the Tauri application now detects that exact
location. A distributable .msi will only be advertised after a build and
end-to-end run on the real Windows PC.
The app connects to an existing http://localhost:8000 server or starts the
backend from the installed project.
macOS: \"app is damaged\"
If macOS says the app is damaged, clear the Gatekeeper quarantine flag:
This is normal for open-source apps distributed outside the App Store.Build from source¶
git clone https://github.com/carlitoetienne01-spec/Diapason.git
cd Diapason/frontend
npm install
npm run tauri:build
The built installer will be in frontend/src-tauri/target/release/bundle/.
CLI¶
The command-line interface is the fastest way to interact with Diapason programmatically. Every feature is accessible from the terminal.
Install¶
git clone https://github.com/carlitoetienne01-spec/Diapason.git
cd Diapason
uv sync
uv run maturin develop -m rust/crates/diapason-python/Cargo.toml
Requires Rust. On Python 3.14+, set PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 before the maturin command.
Verify¶
First commands¶
diapason ask "What is the capital of France?"
diapason ask --agent orchestrator --tools calculator "What is 137 * 42?"
diapason serve --port 8000
diapason doctor
diapason model list
diapason chat
Inference backend required
The CLI requires a running inference backend (e.g., Ollama). See Setting up an inference backend below.
Python SDK¶
For programmatic access, the Diapason class provides a high-level sync API.
Install¶
git clone https://github.com/carlitoetienne01-spec/Diapason.git
cd Diapason
uv sync
uv run maturin develop -m rust/crates/diapason-python/Cargo.toml
Requires Rust. On Python 3.14+, set PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 before the maturin command.
Quick example¶
from diapason import Diapason
j = Diapason()
print(j.ask("Explain quicksort in two sentences."))
j.close()
With agents and tools¶
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:
from diapason 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 for the full API reference.
Requirements¶
| Requirement | Version | Install | Notes |
|---|---|---|---|
| Python | 3.10–3.13 | python.org | Required. 3.14+ not yet supported (a core dependency lacks 3.14 wheels). |
| uv | latest | curl -LsSf https://astral.sh/uv/install.sh \| sh or brew install uv (macOS) |
Python package & project manager |
| Git | any | git-scm.com or brew install git (macOS) |
Required |
| Rust | stable | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \| sh |
Required for the Rust extension |
| Inference backend | any | See below | At least one of Ollama, vLLM, llama.cpp, SGLang, or a cloud API |
| Node.js | 18+ | nodejs.org or brew install node (macOS) |
Required for the browser UI; 22+ for the WhatsApp Baileys channel bridge |
macOS users
See the macOS Installation Guide for a complete step-by-step walkthrough covering Homebrew, uv, Rust, llama.cpp, and common pitfalls.
Optional Extras¶
Diapason uses optional extras to keep the base installation lightweight.
Inference Backends¶
| Extra | Install Command | Description |
|---|---|---|
inference-cloud |
uv sync --extra inference-cloud |
OpenAI and Anthropic APIs |
inference-google |
uv sync --extra inference-google |
Google Gemini API |
Ollama, vLLM, and llama.cpp are HTTP-based
These engines have no additional Python dependencies — Diapason communicates over HTTP. You still need the engine software running on your machine.
Memory Backends¶
| Extra | Install Command | Description |
|---|---|---|
memory-faiss |
uv sync --extra memory-faiss |
FAISS vector store |
memory-colbert |
uv sync --extra memory-colbert |
ColBERTv2 late-interaction retrieval |
memory-bm25 |
uv sync --extra memory-bm25 |
BM25 sparse retrieval |
SQLite memory is always available
The default SQLite/FTS5 memory backend requires no additional dependencies.
Server & Other¶
| Extra | Install Command | Description |
|---|---|---|
desktop |
uv sync --extra desktop |
Desktop/API server plus local speech input |
server |
uv sync --extra server |
OpenAI-compatible API server (diapason serve) |
dev |
uv sync --extra dev |
Development and testing tools |
docs |
uv sync --extra docs |
Documentation build tools |
Combine extras:
Setting Up an Inference Backend¶
Diapason requires at least one inference backend. Choose the one that matches your hardware.
Ollama (Recommended)¶
The easiest way to get started. Handles model downloading and serving automatically.
- Install from ollama.com
-
Start the server and pull a model:
-
Verify:
diapason model list
Best for: Apple Silicon Macs, consumer NVIDIA GPUs, CPU-only systems
vLLM¶
High-throughput serving optimized for datacenter GPUs.
- Install following the official guide
- Start:
vllm serve Qwen/Qwen2.5-7B-Instruct - Auto-detected at
http://localhost:8000
Best for: NVIDIA datacenter GPUs (A100, H100), AMD GPUs
llama.cpp¶
Efficient CPU and GPU inference with GGUF quantized models.
- Build from github.com/ggerganov/llama.cpp
- Start:
llama-server -m /path/to/model.gguf --port 8080 - Auto-detected at
http://localhost:8080
Cloud APIs¶
uv sync --extra inference-cloud --extra inference-google
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
Next Steps¶
- Quick Start — Run your first query
- Configuration — Customize engine hosts, model routing, memory, and more