Isn't this just Bubble / no-code?
They aim at opposite outcomes. No-code platforms like Bubble abstract code away so non-engineers can ship, and the result only runs inside the vendor's closed runtime. bloccs is built for engineers: the diagram is a typed spec that compiles to plain Elixir you own, review in a normal PR, and run anywhere. Its job is to make AI-written code reviewable at the speed AI produces it, not to hide the code from you.
Why not just let Claude write the code directly?
Claude writes bloccs — it isn't the alternative to it. Freeform generation means reviewing thousands of lines and trusting the model. A manifest means reviewing a small graph and trusting a compiler that catches mis-wired stages and undeclared effects before anything runs.
What stops an agent from touching things it shouldn't?
Effects are declared capabilities, not loose function calls. A block that doesn't declare HTTP or database access can't reach for it: the compiler rejects any node whose code touches the world outside its declared effects. That shrinks an AI-written change to a graph and a handful of small functions you can read, instead of thousands of lines of generated glue.
What does it compile to?
A Broadway supervision tree on the BEAM. Generated source lands in _build/ so you can read, review, and debug it like any other Elixir — no hidden runtime.
Do I need to know Elixir?
Yes. bloccs is Elixir/OTP and runs on the BEAM — blocks are real Elixir functions and it compiles to a Broadway supervision tree. If your backend already lives on Erlang/Elixir it drops in; if it doesn't, this isn't a way to skip learning the platform.
How is this different from n8n, LangGraph, or Temporal?
n8n and Zapier are closed SaaS automation — your flow runs on their runtime, untyped. LangGraph orchestrates agents in freeform Python. Temporal gives durable execution but you still hand-write every line. bloccs is the one where a typed graph compiles to plain code you own, with the compiler checking wiring and declared effects before it runs.
Is it production-ready?
Within its lane, yes. The runtime is supervised, back-pressured, and capability-checked, with retry, timeout, idempotency, and telemetry wired into every node, on the same BEAM substrate (Broadway/OTP) hardened behind Discord and WhatsApp. What's pre-1.0 is the surface: the public API and manifest format can shift between minor releases, so pin a version. The one thing bloccs leaves out by design is durability — in-flight messages live in memory, so put Oban or a broker at the edges for work that must survive a restart.
When should I not use bloccs?
When the work isn't a graph of typed stages. A single ingest → process → batch pipeline is Broadway's job, and bloccs would only add a layer. Work that must survive restarts, run exactly-once, or be scheduled is a durable job — that belongs in Oban, at the edges of a network. "Component A must be incapable of calling component B" is a module-dependency rule that boundary enforces at compile time, which bloccs doesn't replace. Ad-hoc state or one-off concurrency is a plain GenServer or Task. And it isn't a web page or content-block builder. bloccs earns its keep once you have a graph of effectful stages you want declared, checked, and reviewable.
What's free and what costs money?
The core is open source and free under Apache-2.0: the library plus a dashboard to watch systems run. A commercial Pro tier (bloccs.pro) is for teams in production — governance and audit, guarantees, support, and a hosted option. Free earns adoption; Pro is what a company needs once this is load-bearing.