flowlayer
// The Story

FlowLayer started
as a developer ache.

Not a startup pitch, not a market study — a personal frustration that wouldn't go away. This is the story of why FlowLayer exists, told by the engineer who built it.

Working on a distributed system locally is supposed to be a superpower. It usually feels like punishment.

You spin up k3s, write deployment manifests, push images, wait for pods, restart, repeat. Your iteration loop has just collapsed from seconds to minutes.

You give up on Kubernetes for local dev. You open seven terminals — one per service. You tail -f logs scattered across windows. There is no live watch, no unified view, no story.

The moment you start testing observability across services — tracing a request through three hops, watching a worker pick up a queued event — the whole thing turns into a tab-and-terminal dance.

And every time you switch from one project's stack to another's, it starts again from zero.

What I actually wanted was a vertical view of the entire stack.

One pane of glass. One canonical source of truth for what is running, what is ready, what just logged. One config file per stack — and the freedom to run several stacks at once when I want to.

Not a Kubernetes replacement. Not a production supervisor. A cockpit for local development, designed for the moment I'm wearing the developer hat — debugging dependencies, trying readiness probes, wiring up an event-driven flow between three processes.

Operating that runtime — restarting one service, watching its logs, peeking at another — should feel like flying a plane, not like grepping through chaos.

One JSONC. One DAG. One WebSocket. One terminal cockpit.

FlowLayer turns a flowlayer.jsonc file into a deterministic runtime: dependencies become a DAG, the DAG becomes startup waves, each wave is gated by real readiness checks (TCP, HTTP, or none). The server publishes everything over a single authenticated WebSocket — snapshot baseline, then live events.

Any client can plug in. The official one is a terminal UI written in Go, keyboard-driven, sub-100ms. Want to build a web dashboard, an IDE plugin, a CI runner? The protocol is documented and stable. A working client fits in an afternoon.

Multiple configs? Multiple stacks? Run them side by side. Switch sessions. Stop one, restart another. The runtime stays calm, deterministic, observable.

Determinism

Same config → same DAG → same startup. No more "works on my machine".

Verticality

One cockpit for the whole stack. Logs, status, control — same surface.

Open protocol

WebSocket V1. Documented, versioned, alternate clients welcome.

About me

I'm a software engineer working on distributed systems and developer experience. FlowLayer is my personal project — designed, coded, documented, packaged, and shipped end-to-end. The server engine, the official TUI, the protocol spec, the multi-OS distribution chain (Homebrew, Scoop, Chocolatey, Winget, install.sh), and this site you're reading.

I built it because I wanted it to exist. I keep building it because operating a runtime should feel calm, legible, and a little bit fun.

Try the cockpit.

One config in. One vertical view of your stack out. Five minutes from zero to a running session.