Skip to main content

Run AI locally. Beautifully. A drop-in replacement for Ollama.

Project description

Kapri

Run AI locally. Beautifully.

PyPI License Python GitHub release


Why Kapri?

Kapri is a complete drop-in replacement for Ollama. Built on llama.cpp's native router mode, it gives you full control with zero cloud dependency.

Key Features

  • Full GPU Support — Vulkan (AMD), CUDA (NVIDIA), ROCm (AMD Linux), SYCL (Intel), Metal (Apple Silicon), CPU
  • Any GGUF Model — Pull directly from HuggingFace, not limited to Ollama's registry
  • Transparent Config — Plain INI you can read and edit, no hidden internals
  • Multi-Model Router — native llama.cpp router with model auto-switching
  • Universal Installpip install kapri-ai, works everywhere Python exists

Kapri vs Ollama

Feature Kapri Ollama
Vulkan Support Native Blocked
Any HuggingFace Model Yes Registry only
Full llama-server Flags Complete Abstracted
Transparent Config INI Hidden
Multi-model Router Yes Partial
Universal Install pip Platform-specific

Quick Start

Step 1: Install

pip install kapri-ai

Step 2: Setup

kapri install

This downloads the llama-server binary (auto-detects your GPU backend).

Or specify a backend:

kapri install --backend vulkan   # AMD GPUs
kapri install --backend cuda     # NVIDIA GPUs
kapri install --backend cpu      # CPU only

Using an existing llama-server: If you have a working llama-server build (e.g., custom Vulkan build):

kapri install --llama-server /path/to/llama-server.exe

Step 3: Start Server

kapri serve

Step 4: Chat

# Opens web UI (default)
kapri run qwen3.5-0.8b

# Or terminal chat
kapri run qwen3.5-0.8b --tui

The server is also available at http://localhost:11434 for any OpenAI-compatible client.

Then use with any OpenAI-compatible client:

curl http://localhost:11434/v1/models
curl http://localhost:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "qwen2.5-coder", "messages": [{"role": "user", "content": "Hello!"}]}'

Pulling Models

Kapri supports multiple ways to pull models:

1. From Built-in Registry

# Default Q4_K_M quantization
kapri pull llama3.2-3b

# Specify quantization
kapri pull llama3.2-3b:Q5_K_M

# List available models
kapri search llama

2. Direct from HuggingFace

Pull any GGUF model directly from HuggingFace:

# Unsloth models
kapri pull unsloth/Qwen3.5-0.8B-GGUF
kapri pull unsloth/Qwen3.5-0.8B-GGUF:Q4_K_M

# Bartowski quantized models
kapri pull bartowski/Llama-3.2-3B-Instruct-GGUF
kapri pull bartowski/Qwen2.5-Coder-7B-Instruct-GGUF:Q4_K_M

# ggml-org TinyLlama
kapri pull ggml-org/TinyLlama-1.1B-Chat-v1.0-GGUF

# Any other GGUF repo
kapri pull <hf-repo>/<model-name>-GGUF
kapri pull <hf-repo>/<model-name>-GGUF:Q4_K_M

Examples of GGUF repos on HuggingFace:


Supported Backends

Backend Description GPU Brands
CUDA NVIDIA GPUs NVIDIA
Vulkan AMD GPUs (full speed) AMD
ROCm AMD GPUs (Linux) AMD
SYCL Intel GPUs Intel
Metal Apple Silicon Apple
CPU Fallback Any

Forcing a Backend

kapri install --backend cuda    # Force CUDA
kapri install --backend vulkan  # Force Vulkan
kapri install --backend cpu    # Force CPU

CLI Reference

Command Description
kapri install Install binaries (interactive wizard)
kapri install --backend vulkan Install specific backend
kapri backend vulkan Switch GPU backend
kapri update Update binaries
kapri update --all Update kapri and binaries
kapri pull <model> Download a model
kapri serve Start the server
kapri stop Stop the server
kapri status Show server status
kapri list List downloaded models
kapri search <query> Search registry
kapri remove <model> Remove a model
kapri run <model> Open web UI chat (default)
kapri run <model> --tui Open terminal chat
kapri config Show full config INI
kapri config show-all Show full config INI
kapri config show <model> Show specific model config
kapri config edit <model> Edit model config in editor
kapri config search <query> Search models in config
kapri config show --path Show config file path
kapri config show --reset Regenerate config
kapri logs View logs

Backend Options

kapri backend auto      # Auto-detect (recommended)
kapri backend vulkan   # AMD GPUs
kapri backend cuda     # NVIDIA GPUs
kapri backend rocm     # AMD Linux
kapri backend sycl     # Intel GPUs
kapri backend metal   # Apple Silicon
kapri backend cpu     # CPU only

API Endpoints

The server exposes OpenAI-compatible endpoints:

  • GET /v1/models — List models
  • POST /v1/chat/completions — Chat completions
  • POST /v1/completions — Text completions

Python Example

import httpx

client = httpx.Client(base_url="http://localhost:11434")
response = client.post("/v1/chat/completions", json={
    "model": "qwen2.5-coder",
    "messages": [{"role": "user", "content": "Write a Python hello world"}]
})
print(response.json())

OpenAI Python SDK

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="not-needed"
)

chat = client.chat.completions.create(
    model="qwen2.5-coder",
    messages=[{"role": "user", "content": "Hello!"}]
)
print(chat.choices[0].message.content)

Architecture

~/.kapri/                    # Base directory
├── bin/                    # llama-server binary
├── models/                # Downloaded GGUF files
├── models.ini             # llama.cpp router preset
├── server.pid            # Server process ID
└── server.log            # Server logs

Troubleshooting

No GPU detected

kapri install --backend cuda    # Force CUDA
kapri install --backend vulkan  # Force Vulkan (AMD)

Port in use

kapri serve --port 11435  # Different port

Model not found

Make sure the GGUF file exists on HuggingFace. Try:

# Use full repo path
kapri pull unsloth/Qwen3.5-0.8B-GGUF

Requirements

  • Python 3.10+
  • No root/sudo required
  • GPU optional (CPU fallback works)

Links


Built on llama.cpp

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kapri_ai-0.3.1.tar.gz (28.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kapri_ai-0.3.1-py3-none-any.whl (28.8 kB view details)

Uploaded Python 3

File details

Details for the file kapri_ai-0.3.1.tar.gz.

File metadata

  • Download URL: kapri_ai-0.3.1.tar.gz
  • Upload date:
  • Size: 28.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for kapri_ai-0.3.1.tar.gz
Algorithm Hash digest
SHA256 4cf64206faa9f80dfa8ead2e486d3db5971bb0700d3db4ebc9764b0e58489994
MD5 4d5d5ea8633426f84f953d82b9e80172
BLAKE2b-256 4c5dc2e5021b66528f1aa8237165b39ffc91986b6663d8f5680de8bc9136188e

See more details on using hashes here.

File details

Details for the file kapri_ai-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: kapri_ai-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 28.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for kapri_ai-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 17ea18a9475ec195df36ca703404a54018290d0e270c980b577afd9f0ae67c0e
MD5 a64e4b140e1ae428e60c2a9155ad8b90
BLAKE2b-256 f83b107b57a86529870facf201dd9731f49856269fb4e3320af09ee822a6c67e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page