QFM090: Elixir Reading List - November 2025
Source: Photo by Luca Bravo on Unsplash
This month's Elixir Reading List focuses on AI integration and framework patterns. Building an MCP Client in Elixir demonstrates how to integrate Model Context Protocol servers with Elixir applications. Phoenix Creator Argues Elixir is AI's Best Language presents Chris McCord's case for Elixir's strengths in AI development.
The Ash Framework receives attention with Ash Framework: My Misconceptions and Ash Framework: Diving Into Validation, providing practical insights into this powerful resource framework.
As always, the Quantum Fax Machine Propellor Hat Key will guide your browsing. Enjoy!

Links
Revelry, a custom software development firm experienced with emerging technologies like React and Elixir, began exploring generative AI in Fall 2022 following GPT-3's release, recognizing it as a potential productivity multiplier rather than a replacement for engineering talent. The company plans to share learnings from their year-long journey integrating generative AI into their development processes, with subsequent posts focusing on building complex systems using Retrieval Augmented Generation (RAG) without requiring frameworks like LangChain.
Revelry built RevBot, a RAG (Retrieval Augmented Generation) prototype using LangChain that answers questions about the company by querying a vector database with semantic search and injecting relevant results into prompts sent to an LLM. The system converts user queries into vector embeddings, retrieves semantically similar documents from a vector database using cosine similarity, and passes those results to GPT-3.5-turbo to generate contextually grounded answers—advancing beyond their initial StoryBot experiment that relied solely on hard-coded prompts.
The article discusses the evolution from RAG (Retrieval-Augmented Generation) to agentic tool-calling patterns in AI systems, explaining how MCP (Model Context Protocol) standardized autonomous LLM decision-making across multiple tool calls rather than single-pass retrieval. The authors built a custom MCP client in Elixir instead of using existing libraries like Hermes MCP because their multi-tenant architecture required tight integration with existing permission systems and direct control over access management. The agentic approach enables LLMs to recursively examine results from one tool call, decide what information is still needed, and autonomously orchestrate subsequent tool calls—fundamentally more effective than manually scripted prompt chaining.
Ash Framework inverts the typical framework approach by prioritizing domain modeling over persistence concerns—rather than designing databases first and deriving business logic from them, Ash asks developers to model the domain itself and let persistence follow. The framework achieves this through extensive code generation at multiple levels: one-time scaffolds, repeatable generators that evolve with resource definitions, ongoing regeneration that tracks schema changes, and compile-time macros that inject functions declaratively, fundamentally differentiating it from Rails' runtime metaprogramming by leveraging Elixir's compile-time capabilities.
Ash Framework uses the changeset pattern for validation, where a changeset is a product type holding both valid and invalid states simultaneously, but validation is fundamentally a sum type problem requiring a value to be either valid or invalid. While changesets enable straightforward expression of state machine rules and conditional validation execution (such as skipping expensive checks when prior validations fail), the framework's inability to enforce exclusivity between the valid? flag and accumulated errors means it cannot prevent illegal states like being marked valid while containing errors. Ash validations can be defined at both the resource level (as attribute constraints) and action level (as custom validators), with results converted through changeset threading to accumulate errors, though this sequential threading prevents parallel execution of expensive validations.
I don't have sufficient substantive content to summarize from what you've provided. The text appears to be primarily a newsletter subscription form with country dropdown options, rather than the actual article content about Elixir being an AI language. To provide an accurate summary, I would need the main body text of the article itself.
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?