Switch from llama.cpp

Your GGUF files work unchanged when their model family is supported (see Models and formats). Each case below is one step.

You run llama-server

Write kinetic serve where you wrote llama-server, and keep every flag:

llama-server  -m model.gguf -c 8192 -ngl 99 -fa on --jinja --port 8080
kinetic serve -m model.gguf -c 8192 -ngl 99 -fa on --jinja --port 8080

The same address answers llama-server's own API (/completion, /tokenize, /detokenize, /props, /slots, /health, /embedding), the OpenAI API under /v1 and Ollama's under /api:

$ curl -s http://127.0.0.1:8080/completion -d '{"prompt": "The capital of France is", "n_predict": 4, "temperature": 0}'
{"index":0,"content":" Paris, and the","tokens":[],"id_slot":0,"stop":true,"model":"LFM3-1.7B-Q4_K_M","tokens_predicted":4,"tokens_evaluated":5,...,"stop_type":"limit",...}

If an app starts a binary named llama-server itself, copy kinetic to that name instead; it then behaves as kinetic serve. llama-cli becomes kinetic chat, or kinetic run when given a prompt, and llama-completion becomes kinetic run:

cp kinetic llama-server            # Windows: copy kinetic.exe llama-server.exe

Flags for what Kinetic does by itself, such as -fa, --jinja or -b, are accepted and ignored. The few with no equivalent stop with a line saying what to use; -hf points at kinetic pull. The full list: llama.cpp flags. What still differs in the HTTP API is listed under llama-server API.

You use llama-cpp-python

pip install llama-cpp-kinetic

import llama_cpp then loads Kinetic's version of the Llama class, so your code runs unchanged:

$ cat app.py
from llama_cpp import Llama

llm = Llama(model_path="LFM3-1.7B-Q4_K_M.gguf", n_ctx=4096, n_gpu_layers=0, verbose=False)
out = llm("The capital of France is", max_tokens=4, temperature=0)
print(out["choices"][0]["text"])
$ python app.py
 Paris, and the

An installed llama-cpp-python is shadowed, not touched: pip uninstall llama-cpp-kinetic brings it back. The covered API is in Python, C and Rust.

You use Ollama

Stop Ollama, then serve the model on Ollama's port:

kinetic serve qwen3:4b --ollama

Open WebUI, Continue and other Ollama clients keep their settings, since the server answers at http://127.0.0.1:11434. kinetic models lists the models Ollama already downloaded, and a name like qwen3:4b runs Ollama's own file.

$ curl -s http://127.0.0.1:11434/api/version
{"version":"0.13.0"}
$ curl -s http://127.0.0.1:11434/api/chat -d '{"model": "LFM3-1.7B-Q4_K_M", "messages": [{"role": "user", "content": "Say hi in two words."}], "stream": false}'
{"model":"LFM3-1.7B-Q4_K_M","created_at":"2026-11-08T12:01:01.544798100Z","message":{"role":"assistant","content":"Hi there! ..."},"done":true,"done_reason":"stop",...}

Not yet: there is no drop-in libllama library. Kinetic has its own C API, kinetic.h, which covers loading a model, generating and embedding, but code written against llama.h needs porting to it.