About the project

The automation that refuses to fail quietly.

n8n already runs workflows. The itch Forge scratches is everything around that: deciding what to build from a sentence, proving it's safe before it ships, and — the part I actually cared about — noticing when a run breaks and repairing it without me.

It's a platform for people who'd rather supervise a system than babysit a pile of cron jobs.

How it came together

A build in seven beats

01

January 2026

The 3am flameout

A scraping automation died silently for a week and I only noticed when the data went stale. The itch: what if the automation could notice — and fix itself?

02

February 2026

Scoping & the four layers

Wrote the first ADRs. Picked n8n as a swappable engine rather than building an executor from scratch. Drew the boundary: dashboard, stateless agent layer, data, engine.

03

March 2026

Foundation + the LLM gateway

Docker Compose stack, Postgres schema with Alembic, and the single gateway every model call flows through — cost logging, retries, and a hard daily budget from day one.

04

April 2026

The generator — and the week validation ate me alive

Turning English into workflow JSON was quick. Trusting that JSON was not. Half-valid graphs, phantom node types, a delete step with no approval flag. The validator became the real project.

05

May 2026

Monitor + diagnostician

Run ingestion, health computation, and the agent that reads a failure, writes a root cause, and proposes a patch — gated by a risk rubric so risky fixes wait for a human.

06

June 2026

Dashboard + hardening

The Next.js control surface, then the unglamorous parts: rate limits, backups, structured logs, and a load test to prove the stateless design actually scales.

07

July 2026

Polish & launch

Docs, a demo mode that runs with zero backend, and the site you're reading now.

Interesting decisions

The problems worth solving twice.

Never trust generated JSON

The validator statically checks node types against the engine, resolves every connection, verifies credential references, and blocks destructive actions unless an explicit approval flag is set. Generation without validation is a liability, not a feature.

Repair without recklessness

Auto-repair is gated by a risk rubric (ADR-004). Low-risk patches apply automatically; anything that touches credentials, deletes data, or rewrites logic waits for one-click human approval. Every action hits the audit trail first.

Generation can't block the API

Workflow generation is an LLM round-trip — too slow to hold a request open. It runs as a Redis-queued background job, so the API stays snappy and the work survives a restart.

Nothing is ever silently destroyed

Overwriting or deleting a workflow always writes a versioned backup and an audit entry first. Rollback to any prior version is a single API call.

The stack

Why each piece is here

n8n

Mature execution engine — kept swappable behind an adapter so the brain never depends on it.

FastAPI + Pydantic v2

Typed, async, and self-documenting; schemas double as validation.

PostgreSQL + Redis

Durable state and audit in Postgres; the job queue and cache in Redis.

Next.js 14 + Tailwind

One codebase for the marketing site and the dashboard, deployable to Vercel.

Anthropic + Ollama

A capable default with a local fallback — and one gateway costing every call.

Docker Compose

The whole platform comes up with a single command.

Want to build something — or collaborate?

The source is on GitHub. If you're working on agentic systems, workflow tooling, or just want to trade notes, I'm easy to reach.