ubunatic.com

Local model hosting · vision sidecar · sandboxed agents

lmcoder Debloated model serving & hardened coding sandboxes.

The primary control hub for local LLMs and multimodal vision sidecars, debloating complex runtimes and routing seamlessly between laptops and dedicated RTX inference servers.

go install ubunatic.com/lmcoder/cmd/lmcoder@latest

Key facts

12-week commit activity

2026-10-26
View 12-week data table
Week startingCommits
2026-08-030
2026-08-100
2026-08-172
2026-08-24156
2026-08-3123
2026-09-071
2026-09-1469
2026-09-21140
2026-09-2886
2026-10-0596
2026-10-1277
2026-10-1963

Key Features

  • Transparent proxy routing between local laptop endpoints and upstream dedicated RTX inference servers.
  • Self-deploying and cross-compiling binary installation powered by goself.
  • Runs coding assistants in rootless Podman containers with single-writable-mount workspaces.
  • Multimodal Florence-2 vision sidecars with idle timeouts, candidate streaming, and box filtering.
  • Memory budget validation and automated Multi-Token Prediction (MTP) draft acceleration.

Verified Engineering Milestones

  • Isolated coding checks and stack install (#047, #156, e96a0a0)
  • Managed proxy lifecycle and sampling profile injection (#164, 8037408, d5571f3)
  • Florence-2 vision sidecar, box filtering and streaming preview (#223, #224, ad8d8b7)

Stack

Go 1.25.0, Cobra, YAML specs, llama.cpp, OpenAI-compatible HTTP/SSE, rootless Podman, systemd, Vulkan/ROCm, Florence-2

Model hosting tuned to developer hardware

Running coding agents against a local LLM sounds simple until the agent needs shell access, the model blows past GPU memory budgets on shared hardware, or a dependency bump silently breaks streaming. Most setups settle for pointing an agent at an unmonitored endpoint with zero sandboxing.

lmcoder turns personal setup customizations into robust software features: debloating the runtime stack, managing memory limits, accelerating inference with MTP draft heads, and isolating agent execution in rootless sandboxes.

Built for dedicated GPUs, laptops & remote servers

Seamless Proxy Routing

Routes agent requests transparently between local laptop inference and an upstream RTX server (such as x600), injecting sampling profiles (fast, default, deep) dynamically.

Self-Installing via goself

Deploys, cross-compiles, and updates itself seamlessly across machines using goself, eliminating remote toolchain dependencies.

Multimodal & Vision Sidecar

Runs Florence-2 and vision embedding sidecars with idle timeouts, candidate preview streaming, and degenerate bounding-box filtering.

Hardened Podman Sandboxes

Executes coding agents inside rootless Podman containers with single-writable workspace mounts and automated zombie reaping.

MTP & Memory Budgets

Manages llama-server instances with automated Multi-Token Prediction draft acceleration and strict VRAM/RAM threshold guards.

Unified model management

# Serve a model with memory overload guards and MTP acceleration
$ lmcoder serve Qwen3.8-27B-UD-Q4_K_M.gguf

# Route client traffic upstream to an RTX host with dynamic profile injection
$ lmcoder proxy --backend-host 192.168.1.100 --profile fast

# Run sandboxed agent canary against an isolated workspace
$ go run ./scripts/agent-canaries --agent pi --task coding-hello

Project details

Stack
Go 1.25.0, Cobra, YAML specs, llama.cpp, OpenAI-compatible HTTP/SSE, rootless Podman, systemd, Vulkan/ROCm, Florence-2
Milestones
Isolated coding checks and stack install (#047, #156, e96a0a0) · Managed proxy lifecycle and sampling profile injection (#164, 8037408, d5571f3) · Florence-2 vision sidecar, box filtering and streaming preview (#223, #224, ad8d8b7)

Layer composition

Terminal
CLI, proxy controls, service manager
Desktop
Linux, systemd
Inference / AI
llama.cpp, OpenAI-compatible API, Florence-2, MTP, Vulkan/ROCm
Containers / VM
rootless Podman
Web
—

lmcoder: the story behind the project

Second-Vendor Reviews : > - Audited by claude:sonnet:med (session story-reviewer-sonnet ): Approved with corrections . Clarified test counts (19 tests across test_lifecycle.py and test_scan.py ; 14 tests in test_scan.py ), replaced mixed me…

Read the engineering story