# ollaya-dev/ollaya architecture

> Architecture diagram of the GitHub repository ollaya-dev/ollaya, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ollaya-dev/ollaya
- Repository: https://github.com/ollaya-dev/ollaya

## Overview

Ollaya runs local decision models: a client submits state and typed questions, the daemon resolves or routes a model, schedules its runner, and returns calibrated answers. Model download and management form a separate lifecycle; inference supports ONNX and GGUF/llama.cpp, with vision and language routing also documented. The graph follows the README and sampled sources; unsampled module wiring is included only where the README or source excerpt supports it.

Main entry points: [`crates/ollaya-server/src/service.rs`](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-server/src/service.rs) (Decision service), [`crates/ollaya-runner/src/server.rs`](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-runner/src/server.rs) (Runner endpoint), [`crates/ollaya-api/src/client.rs`](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-api/src/client.rs) (Daemon client), [`crates/ollaya-server/src/http.rs`](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-server/src/http.rs) (HTTP API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User interfaces"]
  node_cli["CLI commands<br/>[main.rs]"]
  node_mcp["MCP service<br/>[mcp.rs]"]
  node_desktop["Desktop app<br/>[main.ts]"]
  node_site["Model catalog<br/>[search.tsx]"]
  node_api_client["Daemon client<br/>[client.rs]"]
end

subgraph group_daemon["Daemon orchestration"]
  node_http["HTTP API<br/>[http.rs]"]
  node_service["Decision service<br/>[service.rs]"]
  node_scheduler["Runner scheduler<br/>[scheduler.rs]"]
end

subgraph group_models["Model lifecycle"]
  node_registry["Model registry<br/>[lib.rs]"]
  node_store[("Local model store<br/>[store.rs]")]
  node_puller["Model puller<br/>[pull.rs]"]
end

subgraph group_inference["Inference runtime"]
  node_runner_server["Runner endpoint<br/>[server.rs]"]
  node_engine["Engine dispatch<br/>[engine.rs]"]
  node_llama["GGUF runner<br/>[mod.rs]"]
  node_onnx["ONNX runtime<br/>[onnx.rs]"]
  node_vision["Vision inputs<br/>[vision.rs]"]
end

subgraph group_decisions["Decision semantics"]
  node_decision["Question parsing<br/>[lib.rs]"]
  node_calibration["Answer calibration<br/>[calibration.rs]"]
  node_language["Language routing<br/>[route.rs]"]
end

node_operator(("CLI user"))
node_sdk(("API client"))
node_agent(("MCP agent"))
node_desktop_user(("Desktop user"))
node_author_hub(("Hugging Face"))

node_operator -->|"issues commands"| node_cli
node_cli -->|"calls daemon"| node_api_client
node_api_client -->|"sends HTTP"| node_http
node_sdk -->|"calls API"| node_http
node_agent -->|"sends MCP requests"| node_mcp
node_mcp -->|"uses client"| node_api_client
node_desktop_user -->|"runs models"| node_desktop
node_desktop -->|"uses backend"| node_api_client
node_site -.->|"links model files"| node_author_hub
node_http -->|"dispatches requests"| node_service
node_service -->|"routes state"| node_language
node_service -->|"parses questions"| node_decision
node_service -->|"acquires runner"| node_scheduler
node_scheduler -->|"spawns runner"| node_runner_server
node_runner_server -->|"serves inference"| node_engine
node_engine -->|"loads ONNX"| node_onnx
node_engine -->|"loads GGUF"| node_llama
node_runner_server -->|"decodes images"| node_vision
node_runner_server -->|"returns logits"| node_service
node_service -->|"calibrates logits"| node_calibration
node_service -->|"returns answers"| node_http
node_service -->|"resolves models"| node_store
node_service -->|"starts pulls"| node_puller
node_puller -->|"writes model files"| node_store
node_puller -.->|"downloads weights"| node_author_hub
node_registry -->|"manages manifests"| node_store
node_cli -->|"creates model specs"| node_service

click node_cli "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya/src/main.rs"
click node_mcp "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya/src/mcp.rs"
click node_desktop "https://github.com/ollaya-dev/ollaya/blob/main/desktop/ui/src/main.ts"
click node_site "https://github.com/ollaya-dev/ollaya/blob/main/site/src/pages/search.tsx"
click node_api_client "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-api/src/client.rs"
click node_http "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-server/src/http.rs"
click node_service "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-server/src/service.rs"
click node_scheduler "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-server/src/scheduler.rs"
click node_registry "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-registry/src/lib.rs"
click node_store "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-registry/src/store.rs"
click node_puller "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-registry/src/pull.rs"
click node_runner_server "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-runner/src/server.rs"
click node_engine "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-runner/src/engine.rs"
click node_llama "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-runner/src/llama/mod.rs"
click node_onnx "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-runner/src/onnx.rs"
click node_vision "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-runner/src/vision.rs"
click node_decision "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-decision/src/lib.rs"
click node_calibration "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-decision/src/calibration.rs"
click node_language "https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-lang/src/route.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_mcp,node_desktop,node_site,node_api_client,node_operator,node_sdk,node_desktop_user toneBlue
class node_http,node_service,node_scheduler toneAmber
class node_registry,node_store,node_puller toneMint
class node_runner_server,node_engine,node_llama,node_onnx,node_vision toneRose
class node_decision,node_calibration,node_language,node_agent,node_author_hub toneIndigo
```

## Components

### User interfaces

- [CLI commands](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya/src/main.rs): `crates/ollaya/src/main.rs`
- [MCP service](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya/src/mcp.rs): `crates/ollaya/src/mcp.rs`
- [Desktop app](https://github.com/ollaya-dev/ollaya/blob/main/desktop/ui/src/main.ts): `desktop/ui/src/main.ts`
- [Model catalog](https://github.com/ollaya-dev/ollaya/blob/main/site/src/pages/search.tsx): `site/src/pages/search.tsx`
- [Daemon client](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-api/src/client.rs): `crates/ollaya-api/src/client.rs`

### Daemon orchestration

- [HTTP API](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-server/src/http.rs): `crates/ollaya-server/src/http.rs`
- [Decision service](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-server/src/service.rs): `crates/ollaya-server/src/service.rs`
- [Runner scheduler](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-server/src/scheduler.rs): `crates/ollaya-server/src/scheduler.rs`

### Model lifecycle

- [Model registry](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-registry/src/lib.rs): `crates/ollaya-registry/src/lib.rs`
- [Local model store](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-registry/src/store.rs): `crates/ollaya-registry/src/store.rs`
- [Model puller](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-registry/src/pull.rs): `crates/ollaya-registry/src/pull.rs`

### Inference runtime

- [Runner endpoint](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-runner/src/server.rs): `crates/ollaya-runner/src/server.rs`
- [Engine dispatch](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-runner/src/engine.rs): `crates/ollaya-runner/src/engine.rs`
- [GGUF runner](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-runner/src/llama/mod.rs): `crates/ollaya-runner/src/llama/mod.rs`
- [ONNX runtime](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-runner/src/onnx.rs): `crates/ollaya-runner/src/onnx.rs`
- [Vision inputs](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-runner/src/vision.rs): `crates/ollaya-runner/src/vision.rs`

### Decision semantics

- [Question parsing](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-decision/src/lib.rs): `crates/ollaya-decision/src/lib.rs`
- [Answer calibration](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-decision/src/calibration.rs): `crates/ollaya-decision/src/calibration.rs`
- [Language routing](https://github.com/ollaya-dev/ollaya/blob/main/crates/ollaya-lang/src/route.rs): `crates/ollaya-lang/src/route.rs`

### Other components

- **CLI user**
- **API client**
- **MCP agent**
- **Desktop user**
- **Hugging Face**

## Connections

- CLI user → CLI commands: issues commands
- CLI commands → Daemon client: calls daemon
- Daemon client → HTTP API: sends HTTP
- API client → HTTP API: calls API
- MCP agent → MCP service: sends MCP requests
- MCP service → Daemon client: uses client
- Desktop user → Desktop app: runs models
- Desktop app → Daemon client: uses backend
- Model catalog → Hugging Face: links model files
- HTTP API → Decision service: dispatches requests
- Decision service → Language routing: routes state
- Decision service → Question parsing: parses questions
- Decision service → Runner scheduler: acquires runner
- Runner scheduler → Runner endpoint: spawns runner
- Runner endpoint → Engine dispatch: serves inference
- Engine dispatch → ONNX runtime: loads ONNX
- Engine dispatch → GGUF runner: loads GGUF
- Runner endpoint → Vision inputs: decodes images
- Runner endpoint → Decision service: returns logits
- Decision service → Answer calibration: calibrates logits
- Decision service → HTTP API: returns answers
- Decision service → Local model store: resolves models
- Decision service → Model puller: starts pulls
- Model puller → Local model store: writes model files
- Model puller → Hugging Face: downloads weights
- Model registry → Local model store: manages manifests
- CLI commands → Decision service: creates model specs
