[ local inference control plane ]
Every inference engine speaks its own dialect of flag soup. infai gives them all one predictable structure — a profile: model + engine + config. Discover or download a model, get a hardware-fit recommendation, press enter, and watch every run from a single pane of glass.
llama.cpp · vLLM · one Go binary, zero daemons
[ watch it in action ]
A quick tour of the control plane for local inference.
[ 01 / the problem ]
Every runtime reinvents its own switches. Your shell history is not a configuration system.
llama.cpp
$ llama-server -m ~/models/qwen3.5-9b-q5_k_m.gguf \
--ctx-size 65536 --n-gpu-layers 99 --flash-attn on \
--cache-type-k bf16 --cache-type-v bf16 --jinja \
--batch-size 2048 --ubatch-size 512 --temp 0.6 \
--host 0.0.0.0 --port 8000
vLLM
$ vllm serve Qwen/Qwen3.5-9B --max-model-len 65536 \
--gpu-memory-utilization 0.92 --max-num-seqs 128 \
--enable-prefix-caching --port 8000
Same model. Same machine. Two incompatible vocabularies you're expected to memorize.
infai
$ infai
▸ qwen-coder-fast Qwen3.5-9B :8000
gemma-vision gemma-4-E4B :8001
embed-server nomic-v2 :8002
enter: launch · e: edit · d: delete
One muscle memory, whatever the engine underneath. That's the whole point.
[ 02 / the structure ]
A profile is the whole idea. Define it once — infai handles everything downstream: the command line, the port, the process, the logs.
profile
qwen-coder-fast
model
Qwen3.5-9B-Q5_K_M.gguf
engine
llama.cpp
config
ctx 64K · ngl auto · fa on · temp 0.6
Profiles live in one SQLite database. No dotfiles, no YAML, no shell aliases rotting in your rc file.
The structure doesn't change when the engine does. vLLM landed — your workflow didn't.
infai knows what's already running and on which port before it starts anything. No zombie servers, no address-in-use surprises.
[ 03 / the glass ]
A coder model on :8000, a vision model on :8001, embeddings on :8002 — all launched, monitored, and stopped from one screen. These are real screenshots, not mockups.
Context size, GPU layers, KV-cache types, flash attention, sampling, extra flags — the editor exposes every knob with smart pickers, then remembers all of it. Relaunch is one keypress.
tab navigate · space toggle · ctrl+s save
Per-run status, endpoint, uptime, and tokens-per-second. System and per-model CPU, RAM, and VRAM telemetry. Scrollable server logs. No tmux splits, no second monitor.
s stop · c clear logs · esc back
Search Hugging Face, choose a quantization, or scan local GGUF and SafeTensors files. Provenance and metadata stay attached.
infai reads your hardware and estimates memory fit, context limits, and engine requirements before starting a server.
Engine-aware options keep llama.cpp and vLLM settings in the same workflow, without memorizing a new flag dialect.
[ 04 / instrumentation ]
Run several models concurrently. The Runs tab shows every process with status, profile, engine, uptime, and live TPS.
GGUF and SafeTensors files are indexed with metadata, quantization, architecture, context limits, and multimodal projector detection.
System and per-model CPU, RAM, and VRAM, sampled in real time, rendered as meters right in the terminal.
A dedicated Engines tab manages your inference-engine binaries and paths. Centralized, versioned, swappable.
Each profile exposes the right options for llama.cpp or vLLM, with hardware-fit recommendations before launch and explainable warnings.
Profiles, paths, and settings in a single local database. Back it up with cp. Nothing phones home.
Tokyonight, Everforest, Gruvbox, Rose Pine, One Dark and more — match the rest of your terminal.
No runtime, no daemon, no Docker. Install it, type infai, and you're looking at your models.
Search the Hub, choose a GGUF quantization, and download models directly into your library with resumable, atomic transfers.
Typed hardware inventory and memory estimates show whether a model fits, why, and which launch settings will work best.
[ 05 / deployment ]
Homebrew recommended
macOS & Linux · pre-compiled · zero dependencies
Linux package manager recommended
Add the infai package repository for your distribution.
Install script
Linux · installs to /usr/local/bin
[ 06 / shipped ]
From finding a model to launching a fit-checked profile, infai keeps the work in one predictable control plane.
GGUF auto-detection, launch profiles, live logs, engine & path management.
Multiple concurrent models with per-run status, uptime, and live tokens-per-second — the single pane of glass.
System and per-model CPU, RAM, and GPU/VRAM meters, live in the run screen.
Production-grade batched inference under the exact same profile structure. Your workflow didn't change; the engine did.
Search repositories, select quantizations, and download GGUF or SafeTensors models with resumable and atomic transfers.
Model metadata, provenance, architecture details, and hardware-fit estimates turn a file on disk into a launch-ready profile.
infai reads model metadata and your hardware, estimates memory fit, and proposes a launch configuration with context and engine guidance before you start.