The base is a machine of my own dedicated to compute, which spends the day with whole models mapped into memory. I chose the hardware for the memory available and not for the speed, and that conditions everything that comes after in this page.
That is the reason this project exists: a model with 125 billion parameters, even quantised to three bits, does not fit on a single consumer card. With a single one you would have to serve a model four times smaller, and a model four times smaller is another product. The GGUF format also allows the surplus to be offloaded to main memory, so there is room to raise the amount of context without touching the model.
On top of that run several services in containers, each with its own independent data volume. The main one is the GPU inference server with an OpenAI-compatible API: a single endpoint that can be called with any client that already exists. The rest are development and automation services that consume that same endpoint. They live here and they are not published.
The second machine solves a different problem. A service on 192.168.x.x:8000 is not something you can explain to anyone, and as soon as you move a container to another port everything that depends on it breaks. With a reverse proxy that gives a domain to each service, the projects point at a stable name and the internal mapping changes without anyone noticing. The separation between the two machines is deliberate: restarting the compute server to try something should not bring down the front door, or the other way round.
project environment variable route
Java CRM MRM_OLLAMA_BASE_URL → /v1 (switched off with a flag)
client scrapers LOCAL_LLM_BASE_URL → /v1/chat/completions
RAG demo OLLAMA_URL
game with AI mode local provider host
↓ one single way to call, local or commercial
GPU inference server · OpenAI-compatible API
125 B GGUF model · quantised