DEREK COLEMAN

Distinguished Architect. CEO.
Securing Local Generative AI for Production.

Developing private, secure language models and high-performance multi-cloud architectures for enterprise environments.

100+live marketplace offers
4 cloudsAzure · AWS · OCI · GCP
Local-firstLLMs inside the boundary
Derek Coleman
Expertise

Three disciplines, one operator

Toggle between the core areas of my work.

Private, production-grade language models

Open-source models — OLMo, Llama-3 — deployed as local production systems inside the security boundary, for environments where prompts and weights can never leave the building. Custom fine-tuning pipelines built on Axolotl with LoRA/QLoRA adapters, served at high throughput with vLLM continuous batching.

OLMoLlama-3AxolotlLoRA / QLoRAvLLMPrivate inference
Fine-tuning pipelinesReproducible Axolotl configs from raw transcripts to evaluated adapters.
Inference servingvLLM with tensor parallelism, token budgets, and per-app API keys.
Security postureAir-gap-friendly: offline HuggingFace hub, no telemetry, audited egress.

Zero-trust multi-cloud, control/data plane split

Architectures spanning AWS, Azure, GCP, and Oracle Cloud Infrastructure (OCI) built on a strict control plane / data plane separation: the vendor's control plane orchestrates, while customer databases stay inside the customer's own private VPC boundary — reached only via private endpoints, never the public internet.

AWSAzureGCPOCIZero trustPrivateLinkIaC
Data sovereigntyCustomer data planes with no public ingress and no route out.
Marketplace scale100+ certified offers with CI-gated compliance pipelines.
Image factoriesPacker + CIS-hardened builds, CVE freshening on a treadmill.

CEO & business owner

Founder and CEO of Derek Coleman & Associates Group, managing family-business operations end to end — strategy, finance, and delivery — while driving multi-cloud go-to-market co-selling partnerships across the Microsoft, AWS, Oracle, and Google partner ecosystems.

P&L ownershipGTM strategyCo-sell programsPartner ecosystems
Co-sell coverage40+ solutions co-sell ready across partner programs.
Operating cadenceOwner-operator discipline: strategy through execution.
2027 targetsA programmatic path to hundreds of monetized offers.
Code Vault

Copy-paste playground

Working patterns from real deployments — routing gateways, fine-tuning templates, zero-trust infrastructure. Copy freely.

model_router.py Python
# model_router.py — FastAPI gateway routing chat completions across
# private inference pools. Nothing leaves the boundary: every upstream is
# an internal vLLM endpoint or a private-link cloud pool.
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import httpx

UPSTREAMS = {
    "fast":  "http://vllm-l40s.internal:8000/v1",   # Llama-3-8B, low latency
    "smart": "http://vllm-h100.internal:8000/v1",   # Llama-3-70B, hard questions
    "batch": "https://gpu-pool.oci.internal/v1",    # OCI pool via private link
}
ROUTE_BY_BUDGET_MS = [(350, "fast"), (2500, "smart")]

app = FastAPI(title="model-router")

class ChatReq(BaseModel):
    messages: list[dict]
    model: str = "auto"
    latency_budget_ms: int = 2500
    max_tokens: int = 512

def pick(req: ChatReq) -> str:
    if req.model != "auto":
        if req.model not in UPSTREAMS:
            raise HTTPException(400, f"unknown model tier {req.model!r}")
        return UPSTREAMS[req.model]
    for budget, tier in ROUTE_BY_BUDGET_MS:
        if req.latency_budget_ms <= budget:
            return UPSTREAMS[tier]
    return UPSTREAMS["batch"]

@app.post("/v1/chat/completions")
async def route(req: ChatReq):
    upstream = pick(req)
    async with httpx.AsyncClient(timeout=30.0) as client:
        r = await client.post(f"{upstream}/chat/completions",
                              json=req.model_dump(exclude={"latency_budget_ms"}))
        r.raise_for_status()
        return r.json()
llama3-qlora.yaml Axolotl
# llama3-qlora.yaml — Axolotl QLoRA fine-tune that fits one 24 GB GPU.
# Train on your own transcripts; weights never leave the building.
base_model: meta-llama/Meta-Llama-3-8B-Instruct
load_in_4bit: true
adapter: qlora

lora_r: 32
lora_alpha: 16
lora_dropout: 0.05
lora_target_modules: [q_proj, k_proj, v_proj, o_proj]

datasets:
  - path: data/support-transcripts.jsonl
    type: chat_template

sequence_len: 4096
sample_packing: true
micro_batch_size: 2
gradient_accumulation_steps: 8
num_epochs: 3
learning_rate: 2e-4
lr_scheduler: cosine
warmup_ratio: 0.05
bf16: auto
gradient_checkpointing: true

output_dir: ./outputs/llama3-support-lora
data_plane.tf Terraform
# data_plane.tf — zero-trust split: the control plane orchestrates,
# but customer data never leaves the customer\'s private VPC boundary.
module "customer_data_plane" {
  source   = "./modules/data-plane"
  for_each = var.customers

  vpc_cidr             = each.value.cidr
  allow_public_ingress = false            # no exceptions
  db_subnet_tier       = "isolated"       # no route to an IGW/NAT

  # Control plane reaches in via PrivateLink only — never the reverse.
  control_plane_endpoint_service = aws_vpc_endpoint_service.control.id
}

resource "aws_security_group_rule" "db_ingress" {
  for_each          = var.customers
  type              = "ingress"
  from_port         = 5432
  to_port           = 5432
  protocol          = "tcp"
  security_group_id = module.customer_data_plane[each.key].db_sg_id
  # Only the customer\'s own app tier — no 0.0.0.0/0, ever.
  source_security_group_id = module.customer_data_plane[each.key].app_sg_id
}
vllm.service systemd
# vllm.service — production inference serving, OpenAI-compatible API.
# High throughput via continuous batching + tensor parallelism.
[Unit]
Description=vLLM inference server (Llama-3-70B-Instruct)
After=network-online.target

[Service]
User=vllm
Restart=always
RestartSec=5
Environment=HF_HUB_OFFLINE=1
ExecStart=/opt/vllm/bin/vllm serve meta-llama/Meta-Llama-3-70B-Instruct \
  --host 127.0.0.1 --port 8000 \
  --tensor-parallel-size 4 \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.92 \
  --api-key-file /etc/vllm/api-keys

[Install]
WantedBy=multi-user.target
Discussions

Notes from the field

Technology, finance, and fitness — the three feeds I actually write. View all posts →

Tech

Zero-Downtime DNS Migration: Moving a Live Domain from M365 DNS to Azure DNS

The parallel-zone method — recreate every record TTL-exact, prove parity with dig diffs, then make the nameserver flip the only moving part. Mail keeps flowing the whole time.

July 10, 20262 min read
Tech

Running Llama-3 Behind Your Own Firewall: a vLLM Production Checklist

GPU memory headroom, continuous batching, API-key rotation, and the monitoring you need before an internal LLM endpoint counts as production.

July 20269 min read Draft — full post coming soon
Tech

The API Proxy Gateway Pattern for LLM Traffic

Put one gateway between every app and every model — routing, budget caps, PII scrubbing, and audit logs in a single choke point.

July 20267 min read Draft — full post coming soon
Tech

Avoiding the Vulnerability De-listing Trap in Cloud Marketplaces

Why a marketplace image that passed certification last month can be de-listed today, and the CVE-freshening pipeline that prevents it.

June 20268 min read Draft — full post coming soon
Finance

SaaS Pricing Models for Infrastructure Software

Per-vCPU, per-node, flat-tier: what actually clears procurement in enterprise accounts, with real marketplace data.

July 20266 min read Draft — full post coming soon
Finance

Burning Down Committed Cloud Spend Without Wasting It

Committed-spend agreements expire whether you use them or not. A framework for routing real workloads at the burn-down.

June 20267 min read Draft — full post coming soon
Contact

Let's talk

Consulting, partnerships, speaking — or just compare notes on running language models where the data already lives. Email derek@derekcoleman.com or use the form.