production
The Unnamed Roads — agents in production, with guardrails
In one line: The Unnamed Roads runs 10+ live projects on a self-hosted multi-agent platform — role-scoped agents, human approval before anything ships or spends, tracing and evals, and model routing priced on failure rather than tokens.
Context
I needed a production lab that could run real workloads — hockey analytics, content operations, portfolio sites — without enterprise SaaS bills or opaque tooling. The hard problem is not autonomy; it is access, cost, evals, and approvals.
Why it was worth building
Demos do not survive overnight runs. Without scoped tools, spend policies, and explicit human gates, agent stacks become expensive and risky. Building the platform myself kept infrastructure near ~€35/month (LLM API spend separate) while learning what actually transfers to other systems.
What I built
- LangGraph orchestration — continuous worker routing tasks to role-scoped agents (developer, data, QA, copy, distribution) with heartbeat accountability.
- LiteLLM routing — eight models with fallback, caching, and budget alerts; task-type and latency-aware selection.
- MCPJungle gateway — 12+ integrations (GitHub, n8n, Postgres, Cloudflare, Hetzner, and others) with auth and audit logging.
- Memory and observability — pgvector recall; Langfuse traces for cost, latency, tools, and replay.
- Data plane — Crawlab scraper fleet (SHL, NHL, Liiga, and other league sources), object storage, DuckDB/MotherDuck query layer.
- 33 n8n workflows — SEO pipelines, analytics digests, newsletter hooks, contact routing.
Guardrails in practice
- Approval gates — production-impacting actions (merge, publish, infra change) require explicit human approval (Telegram webhook today; same pattern as operating notes on spend and evals).
- Scoped tools — each agent role sees only the MCP tools it needs.
- Spend and quality policies — model routing and eval fixtures documented in the agent cost series and Operating Note 002.
Architecture note: An earlier loop used Paperclip kanban polling; that control plane is retired for portfolio shipping — see Company OS learnings. Day-to-day delivery now follows GitHub-as-source-of-truth and Cursor Cloud Automations (Toolstack); orchestration, MCP, and guardrail ideas remain.
How it was adopted
I operate the platform end to end: architecture, integrations, monitoring, approvals, and the live projects that depend on it — including The Hockey Analytics and this site.
Effect
- 10+ live projects on 30+ containers.
- 8+ scrapers with daily league updates.
- Dozens of agent-drafted posts shipped only after human sign-off.
Where AI fits now
This case is the agents step of the journey: not chat windows, but workers with roles, memory, and gates. The same approval and routing patterns apply whether the runtime is self-hosted LangGraph or issue-driven cloud agents — swap the orchestrator, keep the boundaries.
See the live stack on Toolstack.
Want to compare notes?
I am always interested in thoughtful conversations about the decisions, trade-offs, and systems behind this work.
Get in touch