Skip to main content

The Unnamed Roads: Production-Grade Agentic Platform on ~€35/month

Overview

Project: The Unnamed Roads
Type: Self-funded, solo-built agentic platform
Running since: 2023
Infrastructure cost: ~€35/month
Scope: 9 live products, 30+ containers, end-to-end from infrastructure to AI orchestration

The Unnamed Roads is my production lab — not a side project. It runs continuously, handles real workloads, and has delivered 9 live products across hockey analytics, content operations, and automation tooling. Built and operated solo, evenings and weekends, while working full-time.


Architecture

The platform is built in three layers: orchestration, tooling, and data. Everything is self-hosted on a Hetzner VPS managed through Coolify, with Cloudflare in front.

Orchestration — LangGraph 24/7

A LangGraph worker runs continuously, polling a Paperclip kanban board for tasks and routing them to five specialized agents:

AgentResponsibility
DeveloperCode generation, PRs, GitHub operations
Data EngineerPipeline logic, scraper config, DuckDB queries
QATest coverage, review, validation
CopyBlog posts, page content, SEO copy
CMODistribution strategy, IndexNow submission, newsletter

Each agent has scoped tools — only what the role needs. Heartbeat schedules keep agents accountable; missed heartbeats surface in the monitoring layer.

Model Routing — LiteLLM

A LiteLLM router sits in front of eight models with auto-fallback, Redis caching, and per-model budget alerts:

  • Claude Sonnet 4.6 / Haiku 4.5 (primary reasoning and copy)
  • Gemini 2.5 Pro / Flash (embeddings and long-context tasks)
  • Cerebras Qwen3 235B (fast batch inference)
  • Groq Llama 3.3 (low-latency tool-calling)
  • DeepSeek V3 (code-heavy tasks)
  • Mistral (European compliance fallback)

The router selects models based on task type, latency budget, and cost. No single model handles everything.

Tool Access — MCPJungle

MCPJungle is a self-hosted MCP gateway exposing 12+ integrations to agents at runtime:

GitHub · Paperclip · Cloudflare · Hetzner · n8n · PostgreSQL · Resend · Bitwarden · Netlify · Microsoft Clarity · Crawlab · custom internal tools

Agents call tools through MCP primitives. The gateway handles auth, rate limiting, and audit logging.

Memory & Execution

  • pgvector: 768-dimension HNSW index with Gemini embeddings. Agents write observations; future runs recall relevant context.
  • Sandboxed execution: Python, Node, and Bash with rlimits and cap-drop. Agents can run code without filesystem or network access to production systems.

Observability — Langfuse v3

Every LLM call is traced: cost, latency, plan steps, tool calls, agent heartbeats. Cost alerts fire when a run exceeds budget. I can replay any agent session from trace ID.


Governance

Nothing merges or publishes without a human decision.

A Telegram approval-webhook intercepts every agent action that touches production — code merge, blog post publish, infrastructure change. I approve or reject from my phone. The agent either proceeds or halts and logs the rejection.

This makes the system safe to leave running overnight, and keeps me accountable for what goes live.


Data Engineering

Scraper Fleet — Crawlab

Eight production scrapers run on schedule in Crawlab, targeting hockey data sources across multiple leagues:

EP Hockey · IIHF · MoneyPuck · NHL play-by-play · Liiga · SHL · Metal Ligaen · Puckpedia · MediaMonitor

Raw data lands in Hetzner Object Storage. DuckDB and MotherDuck provide the query layer — fast, cheap, no warehouse needed.

Automation — n8n

33 n8n workflows handle the repetitive work:

  • SEO pipelines: keyword research → content generation → publish → IndexNow submission
  • Analytics reporting: weekly digest from Umami, Clarity, and Search Console
  • Newsletter dispatch: subscriber management via Listmonk, triggered on publish
  • Contact handling: form routing, CRM update, Slack notification

What It Has Produced

  • 9 live products including The Hockey Analytics, this site, and MCPJungle
  • 33 n8n workflows in active production
  • 8+ scrapers with multi-league hockey data updated daily
  • Dozens of blog posts written, reviewed, and published by agents with human sign-off
  • Full agentic stack documentation at emilingemarkarlsson.com/stack

Stack

Python · TypeScript · LangGraph · LiteLLM · MCP · Langfuse · pgvector · Docker · Coolify · Hetzner · Cloudflare · PostgreSQL · DuckDB · MotherDuck · Crawlab · n8n · Redis · Paperclip · Astro · GitHub Actions


Want to understand how this works in detail? See the full architecture diagram or get in touch.

Interested in similar projects?

I help companies build modern data solutions and web applications. Let's discuss your next project!

Contact Me