Local & Private AI — Running a Full AI Operation on Private Infrastructure
BSKLab runs nine AI agents, its content pipeline and email triage on a privately networked DGX Spark with a local 27B model — the same public/private architecture we recommend to industrial customers.
Research question
Can a small company run its entire AI operation — agents, content, automation — on private local infrastructure without giving up capability?
01 / 04
Architecture overview
The system separates three zones with explicit boundaries:
1. **Public zone** — Cloudflare (DNS/edge/security) → bsklab.ai web stack. Internet-facing, nothing else. 2. **Automation zone** — Hostinger VPS running the OpenClaw orchestrator, cron jobs, GitHub integration, n8n, and email workflows. 3. **Private AI zone** — DGX Spark (128GB unified memory, GB10 Grace Blackwell) running vLLM + local models, reachable only over Tailscale. **The public internet is never directly connected to the private AI infrastructure.**
Internet → Cloudflare → bsklab.ai (public web) ↕ GitHub (source of truth: code + Markdown content) ↑ OpenClaw orchestrator (VPS, automation zone) ↕ Tailscale (encrypted overlay) DGX Spark → vLLM → Qwen3.8-27B-FP8 (private inference)
The local inference stack
**MTP speculative decoding (the interesting part).** Qwen3.8 ships a native Multi-Token Prediction head, so vLLM runs self-speculative decoding without a second draft model. With 3 speculative tokens, decode throughput improved by roughly **1.6×** on real agent chat workloads. `num_speculative_tokens=3` is the sweet spot — beyond that, acceptance rates fall and net throughput drops. We deliberately did **not** set `enforce_eager` (CUDA graphs stay on); the combination has been stable since 2026-08-29.
- **vLLM** (nightly) serving `Qwen/Qwen3.8-27B-FP8` over an OpenAI-compatible API, reachable only over the private overlay
- FP8 weights + FP8 KV cache, 262K context window, chunked prefill + prefix caching
- Auto tool choice with `qwen3_coder` tool-call parser and `qwen3` reasoning parser
What "private" buys us in practice
- **Full agent runtime on local compute.** All 9 agents (research, content, review, email triage) run their inference on the DGX over the private overlay — no prompt leaves the network.
- **Customer-shaped architecture.** The same zone separation (public / automation / private AI / future industrial edge) is what we recommend to manufacturing customers; BSKLab's own operation is the reference deployment.
- **Cost + latency profile.** 27B-class reasoning on 128GB unified memory, at electricity cost, with 262K context.
Diagrams
- **Complete Hybrid AI Architecture** — public cloud, orchestration, and private AI lab in one view
- **Public Cloud to Private AI** — the four security zones and how traffic crosses them
- **AI Workforce & Orchestration** — how the 9 agents route through the orchestrator with the human publication gate
Limitations
- Single-container local model: no hot local fallback if vLLM crashes
- MTP acceptance rate not yet continuously monitored (measured once, pre/post)
- ComfyUI and vLLM cannot comfortably coexist at full memory utilization on 128GB unified memory
Next steps
- Continuous MTP acceptance-rate + tok/s monitoring with alerting
- A second local inference endpoint as a crash fallback
- RAG stack (embeddings + reranker) on the DGX for the Industrial Knowledge Engine lab
- Mini PC / edge node as the first industrial-edge deployment behind Tailscale
Related labs
Appeared in
