Skip to content
← All work

PROJECT 16 / VENTURES & INDEPENDENT WORK

I run the stack I design for

A self-hosted, Dockerised AI production server running local models and an original n8n pipeline that assembles and publishes video end to end with no manual editing.

Role
Designer, builder and operator
Where
Self-directed
When
Ongoing
Output from the pipeline's image stage

CONTEXT

Why a designer builds servers

Most AI product design happens at one remove: you use a hosted model through an interface someone else built, and you inherit their assumptions about latency, failure, cost and control. I wanted the assumptions to be mine, so I built the thing.

olajidai is a Linux host running Ubuntu Server on consumer hardware, provisioned from bare metal, OS and drivers, key-based SSH hardened onto a non-default port, static networking through nmcli and Netplan, and remote access over Tailscale and SSH tunnelling rather than anything exposed to the public internet.

On top of it runs a multi-service Docker Compose stack I assembled and maintain: n8n for orchestration, Ollama serving local quantized models, Open WebUI, Whisper for speech-to-text, Kokoro for text-to-speech, MinIO for object storage, Caddy as reverse proxy and Portainer for management, with a second GPU node running ComfyUI and Flux Schnell for image generation. The n8n image is a custom multi-stage build of my own, because I needed a full FFmpeg inside a hardened container and no published image had one.

THE PIPELINE

A schedule-triggered workflow that produces finished video with no human in the loop.

  • Pull the queue from Google Sheets
  • Generate the script with a locally served LLM
  • Synthesize the voiceover with Kokoro
  • Generate imagery through the ComfyUI HTTP API
  • Transcribe the voiceover with Whisper for caption timing
  • Assemble the MP4 with FFmpeg, Ken Burns motion, burned-in captions, rotating music beds
  • Upload through the YouTube Data API over OAuth2

WHAT IT TAUGHT ME

Running the stack changes what you believe about designing on top of it. Latency stops being a spinner and becomes a budget you spend somewhere. Model failure stops being an error state you mock and becomes a thing you have watched happen at three in the morning to a queue that had to be full by breakfast. Cost stops being a pricing page and becomes a GPU that is either busy or idle.

The pipeline runs multiple channels in production and replaced an earlier setup scattered across a desktop machine. The point was never the videos.

GALLERY

Pipeline output
Pipeline output
Pipeline output

Let's build something new.

Open to chat about potential opportunities.

Let's Connect