Quote: Erlang Supervisors

Fault-tolerant design philosophy for orchestrating coding agents.

behnamoh on 2025-09-01:

How is this fundamentally any different than Erlang/Elixir concepts of supervisors controlling their child processes? It seems like the AI industry keeps re-discovering several basic techniques that have been around since the 80s.

I think there's something to this comparison. Erlang has years of design and thinking behind error handling (both the "let it crash" philosophy, and supervisor trees), with a reputation for fault tolerant, self-healing programs. Erlang's embracing of the actor model also seems relevant to the comparison.

From everything I've seen, we're not yet in a situation where it's either practical or economical to execute multiple coding agents in parallel or orchestrated. However I think in a couple years the technology will be cheap enough that we'll start needing to think about how to orchestrate groups of agents, and the idea of leaning on Erlang's learnings intrigues me. Constructing the agents and their execution frameworks as individual actors for concurrent execution, while arraying some as supervisors and others as workers, seems rich for investigation.

Expecting and planning for coding agents to broadly fail is prudent — while singular response "hallucinations"[1] are pretty effectively corrected by agent's looped execution, overall goal alignment for agents is still pretty bad. The specification-document-as-alignment-tool[2] is effective, but I still find lots of implementation details elided or ignored — agents simply not git-committing the generated code despite it being called out on every implementation step, agents getting sidetracked with failing unit tests and commenting them out in order to make forward progress, or specific semantics simply ignored because they are only one out of seven other facets of the feature's semantics. There may be a lot of valuable ideas in Erlang to be copied around setting up supervisor agents tasked with detecting if a worker agent has gone off the rails.

  1. I don't think this term accurately describes what's happening, especially since it implicitly pretends that useful responses are somehow distinct, but it's the terminology I have until a better one comes along.

    ↩︎︎
  2. The technique where you write a design/specification document, which the coding agent refers to for guidance. This is a context management approach useful for seeding the agent's context with enough implementation information to produce good, organized outcomes.

    ↩︎︎