Local AI tooling
2026
In developmentLLM Factory
Bake open-weight models into portable, OpenAI-compatible containers.
Overview
A local web app that downloads open-weight models and bakes each one into a self-contained llama.cpp server image for Docker or Podman, on CPU, CUDA, or Vulkan and Metal. Every image saves as a single .tar that serves an OpenAI-compatible API: private, offline AI you can ship as one file.
My role
Creator. Go backend, Svelte UI, runtimes and container builds.
Built with
- Go
- Svelte 5
- TypeScript
- Vite
- llama.cpp
- whisper.cpp
- stable-diffusion.cpp
- Docker
- Podman
- CUDA
- Vulkan
In numbers
- per model, OpenAI-compatible
- 1 .tar
- third-party Go dependencies
- 0
- kinds of model, chat to speech
- 6
How it's built.
Download, build, ship
Builds run on the server and survive a page refresh. Multi-gigabyte models are hardlinked into a minimal build context instead of copied, and llama.cpp is statically linked.
A GPU inside containers on a Mac
Podman with libkrun passes the Apple GPU through (Vulkan to Metal) at roughly 70 to 80% of native speed, something Docker Desktop cannot do.
The system prompt llama.cpp lacks
llmgate, a static Go shim that runs as PID 1 in every image, injects a baked-in initialization prompt into chat completions, as a default or always enforced.
Beyond chat
Images for vision, embeddings, image generation, speech-to-text and text-to-speech, with video and multi-model ensembles routed within a VRAM budget in testing.
No dependencies
The backend is standard-library Go only, and the Svelte 5 UI is embedded in the binary.