QFM106: Elixir Reading List - March 2026
Source: Photo by Logan Voss on Unsplash
AI agents keep landing on the BEAM. This month's Elixir Reading List has five of them: sagents wires OTP supervision into interactive AI agents with LiveView, AlexClaw and Giulia go local-first, and opal proves you can build a coding agent in pure Elixir. The MicroGPTEx four-part series goes deeper, building a GPT from scratch using pure functional Elixir with no external dependencies.
Hologram v0.8.0 ships JavaScript interop for Elixir web apps, and quickbeam goes further with a full JavaScript runtime on the BEAM -- Web APIs backed by OTP, native DOM, built-in TypeScript toolchain. A solid post on why everyone keeps reinventing BEAM OTP explains the gravitational pull of the actor model. Jake Lazaroff's interactive intro to CRDTs is broadly useful, and Curiosum walks through Phoenix app monitoring with Grafana and PromEx.
As always, the Quantum Fax Machine Propellor Hat Key will guide your browsing. Enjoy!

Links
A Claude Code plugin for Elixir/Phoenix development. Ships 19 skill modules (OTP patterns, Ecto, auth, real-time, security, deployment) and 27 enforcement hooks in settings.json that actively validate your code as you write it. Covers pattern matching, LiveView lifecycle, testing, Oban jobs, and JSON APIs. Think of it as an opinionated Elixir style guide with teeth.
A declarative TUI framework for Elixir, built on OTP. If you know LiveView's component model (mount/render/handle_event), you'll feel at home. Rendering uses double-buffered diffing at ~60 FPS. Includes a CSS Flexbox layout engine, keyboard/mouse/paste input, built-in components (TextInput, ProgressBar), and no external dependencies.
A small coding agent in Elixir, usable as a CLI tool or embedded library. The BEAM gives it cheap concurrent sub-agents, live introspection, and task redirection through message passing -- no callbacks, no thread pools. Currently backed by GitHub Copilot. Can edit files, run shell commands, debug, and spread work across multiple agents without bogging down the system.
Hologram v0.8.0 lets you call JavaScript functions, use npm packages, hit Web APIs, and work with Web Components directly from Elixir -- no client-side latency. The Hologram.JS module handles method calls, property access, class instantiation, and event dispatching, with automatic type conversion across the boundary. JS Promises become Elixir Tasks. The longer play: porting Elixir's process model to the browser.
Elixir library for text-to-image and image-to-image generation using FLUX and Stable Diffusion XL. Works on Apple Silicon (EMLX) and NVIDIA GPUs (EXLA/XLA) with zero-config setup -- Python dependencies install automatically via UV. Type-safe API, memory safety checks, 148+ tests, telemetry. Ready for production use.
OpenAI's multi-agent orchestration framework. Each agent spawns in isolation, watches a work queue (Linear boards, etc.), picks up tasks, and lands changes through CI, PR reviews, and documentation. The idea is managing agents at a strategic level rather than babysitting individual coding sessions. Ships as a spec plus an experimental Elixir reference implementation.
The BEAM solved process-based concurrency in 1986 with isolated state and message passing. Now every AI agent framework and distributed systems library is reinventing the same pattern, because the problem demands it. BEAM processes weigh ~2KB, get their own garbage collection, and are preemptively scheduled -- millions of them, no locks, no shared memory. The post traces why Python, Go, and other ecosystems keep converging on OTP's supervision trees and fault recovery, and why bolting those patterns onto a runtime that wasn't built for them never quite works.
First of a 4-part series building a GPT from scratch in Elixir -- pure functional, no external dependencies. Part 1 tackles automatic differentiation: numbers track their own computational history in a graph, so gradients come from backpropagation rather than hand-derived formulas. Nine modules, organized by dependency, with side effects confined to the top-level module. It's Karpathy's 200-line Python MicroGPT translated into idiomatic Elixir, optimized for teaching rather than brevity. See also: Part 2 - From Letters to Logits (https://matthewsinclair.com/blog/0191-from-letters-to-logits), Part 3 - How Tokens Talk to Each Other (https://matthewsinclair.com/blog/0192-how-tokens-talk-to-each-other), Part 4 - Learning and Dreaming (https://matthewsinclair.com/blog/0193-learning-and-dreaming).
CRDTs let every peer update its local state immediately with no network coordination, then guarantee all peers eventually converge. This article walks through state-based CRDTs interactively: each one has a value (your data), state (sync metadata), and a merge function that's commutative, idempotent, and associative. You can build collaborative apps like pixel editors without a central server. The trade-off: you're transmitting full state, not just operations.
A JavaScript runtime that runs as a GenServer on the BEAM. JS code can call Elixir functions, access OTP libraries, and exchange messages with other BEAM processes directly. Comes with native DOM support, a built-in TypeScript toolchain, and a bridge API for Erlang/OTP. You can write async JavaScript that plugs into supervision trees and distributed BEAM clusters.
An Elixir framework for supervised AI agents, built on LangChain. Agents run as OTP processes with human-in-the-loop approvals, sub-agent delegation, and real-time Phoenix LiveView UI. Execution pipelines are composable via middleware, and Horde gives you optional cluster distribution. The pitch: AI agents that are genuinely supervised, not just running loose.
Elixir/OTP SDK for routing queries across five AI backends (Claude, Codex, Gemini, OpenCode, Copilot). Native-first routing with universal fallbacks, so switching providers doesn't change behavior. Sessions run as supervised gen_statem processes. Supports real-time streaming, multi-threaded conversations, MCP tool integration, and policy-driven routing. Also has durable runs, long-term memory, journal-backed events, and in-process lifecycle hooks.
A personal AI agent on Elixir/OTP that runs on your own hardware. Routes across multiple LLMs (cloud and local) with tier-based cost optimization. Has a deterministic workflow engine with conditional branching, per-step resilience, and hooks into RSS feeds, APIs, and Telegram. Not a platform -- it's a single-user auditable codebase. Config and metrics in PostgreSQL, data stays local.
Secure-by-default personal AI assistant on the BEAM. Default-deny policies, process isolation, and fault recovery via OTP supervision -- security through architecture, not patches. Talks to Claude, Codex, Gemini, and others through BeamAgent. Distributes across BEAM nodes with encrypted connections. Phoenix LiveView for the UI. Clean layered architecture separating workflows, product features, extensions, and agent runtime.
ElixirForum announcement for Giulia, a local-first AI dev agent on Elixir/OTP. Keeps AST indexes, knowledge graphs, and embeddings warm in ETS between sessions -- no cold starts, no re-indexing. Runs a two-node BEAM cluster with three-tier storage (ETS → CubDB → ArcadeDB). Sourceror handles static AST analysis, runtime introspection covers live distributed nodes. 78 REST endpoints. Recent additions: dependency visualization, heat maps, blast radius, and hub mapping.
GitHub repo for Giulia. Persistent state via ETS + CubDB means no cold starts between sessions. Handles multi-project awareness, AST-level code intelligence, BEAM runtime introspection, and semantic search through a REST API and MCP integration. Dependency graphs, coupling metrics, and dead code detection stay computed across daemon restarts. Sourceror for AST parsing, libgraph for sub-millisecond graph queries, ArcadeDB for long-term trend analysis.
Regards,
M@
[ED: If you'd like to sign up for this content as an email, click here to join the mailing list.]
Originally published on quantumfaxmachine.com and cross-posted on Medium.
hello@matthewsinclair.com | matthewsinclair.com | bsky.app/@matthewsinclair.com | masto.ai/@matthewsinclair | medium.com/@matthewsinclair | xitter/@matthewsinclair
Was this useful?