Cortiq loads a .cmf model onto the device and talks to it there — no
account, no cloud round trip, no telemetry. It also converts models from
Hugging Face on the phone itself, and serves whatever is loaded to the rest
of your network.
Inference is the same Rust runtime the desktop tools use, bundled as a native library. Nothing about a conversation leaves the phone.
Search the Hub, pick a quantization, and the safetensors → CMF conversion runs multi-threaded on the handset. No laptop in the loop.
The loaded model is served over an OpenAI-compatible API, so a laptop can use the phone as its backend.
The app is not a wrapper around a hosted endpoint. Every screen below runs against a model file sitting in the device's own storage.
.cmf files from device storage.cmf are detected and simply downloadedThe converter offers the same codec ladder the desktop tools produce, so a file made on the handset is a file the rest of the ecosystem reads.
| Codec | What it is | Use it for |
|---|---|---|
Q4TP recommended | 4-bit tiles on a per-row scale ladder | The default for dense models — what the desktop tools emit |
Q2TP | 2/4 mixed MoE profile: gate and up experts at 2-bit, the rest q4tp | Mixture-of-experts checkpoints that would not otherwise fit |
Q8_2F | 8-bit two-field (𝒲 × θ) | Highest fidelity; the reference when you are checking a smaller codec |
Q8_ROW | 8-bit per row | A simpler 8-bit, smaller header, wide compatibility |
Q1T | Training-free ternary {−s, 0, +s}, ≈2.25–3 bit, with a per-row f16 outlier overlay | Below 4-bit on a model that was never trained for it |
Q1 | 1.5-bit for models trained 1-bit (Bonsai, BitNet) | A 27B checkpoint in roughly 5 GB |
F16 | No quantization | Small models, or a baseline to measure against |
Point any OpenAI-compatible client at the address in the QR code. The
/v1/cortiq/* routes are the CMF extensions.
| Endpoint | Purpose |
|---|---|
POST /v1/chat/completions | Chat — JSON and SSE streaming |
POST /v1/completions | Legacy completions |
GET /v1/models | The loaded model |
GET /v1/cortiq/status | Uptime, tokens, tok/s |
GET /v1/cortiq/masks | Task masks baked into the model |
POST /v1/cortiq/switch | Switch the active task |
GET /healthz | Health check |
Pair the handset with a desktop running cortiq worker and the desktop holds the layers, the head and the sampler while the phone keeps the tokenizer and draws. That is what puts a 34.7B MoE on a phone with 2 GB free at 16.3 tok/s. It also works the other way: the phone serves a span of its own layers so a desktop can run a model bigger than its memory.
Measured on a Xiaomi 12 Lite against a MacBook M4 over USB with the same 1.7B model: 12.5 tok/s on the phone alone, 30.9 through the desktop.
The split buys memory, not speed — a token walks the layers in order — and the app says so rather than offering to "speed up" a model that already fits. The transport is labelled too: one round trip per token is 95 ms p99 over Wi-Fi against 2.9 ms on a cable, and the app names which one you are on.
scroll
Home
Chat — with per-message tok/s
Model library
Hugging Face converter
Local server
SettingsEvery .cmf repo published at
huggingface.co/infosave
is pinned in the app as a featured model and downloads in one tap. Anything else on the
Hub goes through the on-device converter, and any .cmf
file you already have can be imported from storage.