latestOpen source · MIT

Any model, any engine,
one local API.

Alkahest downloads, runs and serves AI models on your own hardware. One compact binary with an Ollama-style CLI, every common API on one port, and a desktop app to see what runs where.

$ alkahest pull qwen3:8b && alkahest run qwen3:8b
Processor
GPU 100% GPU 38% · CPU 62% Loading… 64%
Formats
GGUF · Q4_K_M GGUF · PQ2_0 safetensors · BF16 ollama store · read-only
Serving ● 127.0.0.1:11435
alkahest — Library
The Alkahest library: fourteen models of every kind, with their format, engine, size, context and whether they are loaded on the GPU
01 · The universal solvent

Many sources pour in. One API comes out.

The mark is a funnel drawn as the alchemical sign for water: models arrive from anywhere through the wide lip, the core holds what is loaded, and one drop leaves through the apex.

Sources

O
Ollama registryalkahest pull qwen3:8b
HF
Hugging FaceGGUF and safetensors
git
Git catalogsalkahest/qwen/qwen2.5-0.5b
./
Files on diskalkahest import ./model.gguf
RO
Your Ollama storereused read-only, no copy

One port · 11435

O
Ollama API/api/chat · /api/generate · /api/tags
AI
OpenAI API/v1/chat/completions · /v1/responses
A
Anthropic Messages/v1/messages · count_tokens
⊢
Decision API/v1/decisions · /v1/systemone
⚙
Admin APIOpenAPI 3.1 · server-sent events
02 · What it does

Everything a local model server should do, in one binary.

No Python environment, no container required. Install a package, and the server, the CLI and the desktop app are there.

Downloads from anywhere

The Ollama registry, Hugging Face, curated git catalogs, or the GGUF file and folder you already have. Resumable, parallel, verified by digest.

pullsearchimport

Loads on demand

Models load on the first request and unload after a keep-alive, so idle models cost nothing. Several at once, on GPU, CPU or split between them.

GPU 100%Not loaded

Picks the right engine

llama.cpp for GGUF, the PrismML fork for ternary Bonsai models, vLLM for safetensors, whisper.cpp for speech, stable-diffusion.cpp for images.

CUDAVulkanROCmMetalCPU

Speaks every common API

Ollama, OpenAI, Anthropic Messages and a decision API on one port. Existing clients, SDKs and agents work by changing the base URL.

ollamaopenaianthropic

Safe to expose

Loopback needs no key; every other machine does. Scoped, expiring keys per model, TLS, usage records and an audit log.

alk_••••TLSaudit

Has a desktop app

alkahest desktop opens a native app to browse, download, tune and watch models, with a tray icon. It uses the same API as any client.

LinuxmacOSWindows
03 · Desktop app

See every model, where it runs and what it costs.

A dense, instrument-like interface built natively in Rust. Brass marks the one action that matters, verdigris means live.

Library
Library screen

Library

Every local model in one table, including the ones already in your Ollama store.

  • Kind, format, engine, size and context at a glance
  • Live state: GPU, CPU, split or loading
  • Filter by kind, source and format
  • Load, unload and tune each model
04 · Model kinds

Not just chat.

Each model is recognised by what it does, and routed to the API that fits it.

◆Chat ⋮Embeddings ⇅Rerank ◉Vision ∿Audio ▣Image ▶Video ⊢Decision
05 · Engines

The best engine for each model, built for your machine.

Engines run as supervised subprocesses. Alkahest chooses one from the model format, downloads a prebuilt release or compiles it for your CPU from a recipe, and restarts it if it crashes.

llama.cpp

◆default

Every GGUF model: chat, vision with its projector, embeddings and reranking. A CPU build ships in every package; GPU builds install with one command.

GGUF · Q4_K_MCUDA 12VulkanROCmMetalCPU native

PrismML fork

Ternary Bonsai models in the PQ2_0 and PTQ1_0 formats, picked automatically.

PQ2_0PTQ1_0

vLLM

Safetensors models on Linux with NVIDIA, and on Apple Silicon where supported.

safetensors · BF16

whisper.cpp

∿audio

Speech to text behind /v1/audio/transcriptions.

GGML · Q5_0

stable-diffusion.cpp

▣image

Image generation behind /v1/images/generations.

GGUF · Q4_K_S
$ alkahest engines install llama-cpp --native
06 · One port, every API

Your tools already speak it.

Point any Ollama, OpenAI or Anthropic client at http://127.0.0.1:11435. Port 11435 is one above Ollama's, so both can run side by side.

Ollama native

POST/api/chat · /api/generate
POST/api/embed · /api/pull
GET/api/tags · /api/ps · /api/version

OpenAI /v1

POST/chat/completions · /responses
POST/embeddings · /rerank
POST/audio · /images
GET/models

Anthropic /v1

POST/messages · /messages/count_tokens

Decisions /v1

POST/decisions · /systemone
from openai import OpenAI

client = OpenAI(base_url="http://127.0.0.1:11435/v1", api_key="unused-on-loopback")
reply = client.chat.completions.create(
    model="qwen3:8b",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
)
print(reply.choices[0].message.content)
Admin API: OpenAPI 3.1 at /alkahest/v1/openapi.jsonAPI reference →
07 · Under the hood

Small, fast, and checked on every commit.

Written in Rust. Budgets for size and start-up time are enforced by CI, and every release is built and tested on Linux, macOS and Windows.

<30MiB
headless binary, CPU engine shipped beside it
50ms
CLI start-up budget; serve healthy in 500 ms
5
release targets: Linux x64/arm64, macOS Intel/Apple Silicon, Windows
1.4k
automated tests, plus SDK conformance with the official clients

Supervised subprocesses

Engines speak HTTP in their own process. A crash never takes the server down; an orphan watchdog stops engines if the server dies.

Scheduler

Admission by memory estimate, eviction of idle models, per-model queues and parallel slots, keep-alive unload.

Content-addressed store

Blobs by SHA-256 digest, shared between models, garbage-collected. The Ollama store is read, never written.

Hardware detection

CPU features, RAM, NVIDIA through NVML loaded at run time, AMD, Vulkan and Metal: the right build and the right split.

Git catalogs

Recipes and model entries fetched over HTTPS, pinned to a commit, checked against an index of digests.

Native desktop

GPUI, GPU-accelerated, in the same binary. It talks to the server over HTTP like any other client.

08 · Serve other machines

Open it to your network without opening it to the world.

Loopback stays frictionless. Everything else needs a key.

$ alkahest serve --host 0.0.0.0:11435
  • 01
    API keys with scopesInference or admin, limited to some models, with an expiry. Stored as salted hashes.
  • 02
    TLS built inYour certificate or a generated one, reloaded on SIGHUP.
  • 03
    Browser-safe admin APIOrigin, Sec-Fetch-Site and Host checks against CSRF and DNS rebinding.
  • 04
    Usage and auditPer-key usage, request log without content, Prometheus metrics.
  • 05
    Runs as a servicesystemd, launchd or a Windows service, with a dedicated user.
09 · Download

Get Alkahest

Every package includes a CPU build of llama.cpp, so it works out of the box. Free and open source under the MIT licence.

curl -fsSL https://raw.githubusercontent.com/digiogithub/alchemai-alkahest/main/scripts/setup/install.sh | bash
# detects your OS, CPU and GPU, installs the best engine build; --service runs it at login
Already installed? alkahest update moves to the newest release.Install guide →

Your models, your hardware, your API.

Install it once and every local tool you use has a model server.

Download Alkahest