Skip to content
Talk to QCS
Home / Open frameworks / Ash Framework

Open framework · Elixir · MIT

Define resources and actions. Generate the rest from them.

Ash is a declarative, resource-oriented application framework for Elixir. You describe resources, their actions and their policies; extensions derive the data layer, GraphQL and JSON:API endpoints, admin screens, state machines and LLM tools from the same definition. It runs on the BEAM, the Erlang virtual machine built for concurrent, fault-tolerant systems.

Core concepts

How Ash Framework is put together.

01

Resources and actions

Typed, introspectable create, read, update, destroy and generic actions are the core abstraction. Everything else builds on them.

02

Policies

Declarative authorisation that forbids actions or filters reads, applied wherever the action is called.

03

Data layers

AshPostgres, AshSqlite and others, with escape hatches to Ecto or raw SQL when needed.

04

API extensions

AshGraphql, AshJsonApi and AshTypescript expose actions without hand-written controllers.

05

Business extensions

AshStateMachine, AshPaperTrail (audit), AshArchival (soft delete), AshMoney, AshDoubleEntry, AshOban (jobs) and Reactor (sagas).

06

AI

AshAi exposes actions as LLM tools and MCP servers, with structured outputs and vectorisation.

Our assessment

Strengths and trade-offs.

Our view as of November 2026, written for teams choosing a foundation for business software.

Strengths
  • One declaration drives the schema, APIs, authorisation, jobs and state, with less duplicated code.
  • Policies are enforced at the action layer, so every API and interface applies the same rules.
  • The BEAM runtime: very high concurrency, fault tolerance and real-time features.
  • Many mistakes become compile-time errors rather than production failures.
  • A built-in path to AI agents: actions as LLM tools and MCP servers.
  • Mature (3.x), MIT-licensed, with an active community and commercial support.
Trade-offs
  • A smaller talent pool: Elixir is less common than Python, and Ash's own docs call it "still niche".
  • A steep learning curve: Elixir, functional programming and Ash's declarative style at once.
  • No ready ERP or CRM application layer: business applications are built, not installed.
  • AshAdmin is basic next to Frappe's Desk; business users get less self-service configuration.
  • More than a simple CRUD application needs.
Fit

What it suits. What it doesn't.

Well suited to
  • Custom, domain-rich products and SaaS platforms
  • Real-time, high-concurrency systems: IoT, telemetry, marketplaces, collaboration
  • API-first platforms that need GraphQL or JSON:API from one model
  • Exposing a business domain to AI agents through MCP
Less suited to
  • Off-the-shelf ERP, accounting or HR needs
  • Teams without Elixir capacity or a plan to build it
  • Small internal CRUD tools
How we work with it: We assess where Ash fits, typically real-time or API-first services around an ERP, and can prototype them with ERPNext as the system of record.

Which foundation fits your project?