Repolode
ash-project

ash-project/ash

A declarative, extensible Elixir framework for building applications around resources, actions, and policies.

Stars
2,540
Forks
463
Open issues
104
Last commit
14 hours ago

What is it?

Ash is a framework for building Elixir applications in which you describe your domain as resources: their attributes, relationships, actions, validations, and authorization rules. From that declaration, Ash handles much of the surrounding plumbing, so developers spend less time writing repetitive data access and business logic code.

Resources are defined with a Spark-based DSL and grouped into domains. Ash supports multiple data layers, including PostgreSQL through AshPostgres, SQLite through AshSqlite, and ETS and Mnesia built in. Companion packages add JSON:API, GraphQL, authentication, background jobs with Oban, state machines, archival, and an AshAI package for structured outputs, MCP, and vectorization.

The framework is organized around explicit concepts such as actions, policies for authorization, and actors, which keeps behavior visible in one place. Ash is documented with a getting-started tutorial, topic guides, how-to recipes, and generated reference for its DSLs.

Key features

  • 01Declare resources with attributes, relationships, actions, and validations in a DSL.
  • 02Organize resources into domains and use multiple data layers such as PostgreSQL and SQLite.
  • 03Define authorization with policies and actors.
  • 04Expose APIs through companion packages for JSON:API and GraphQL.
  • 05Add authentication, background jobs, state machines, and archival via ecosystem packages.

Use cases

  • Building a Phoenix web application with a rich domain model and consistent authorization rules.
  • Exposing a resource-based backend as a JSON:API or GraphQL service.
  • Adding background jobs or state machines to existing business entities.
  • Creating AI-enabled features that use structured outputs or MCP within an Elixir codebase.

In collections

Topics

FAQ

What is ash?
A declarative, extensible Elixir framework for building applications around resources, actions, and policies. Ash is a framework for building Elixir applications in which you describe your domain as resources: their attributes, relationships, actions, validations, and authorization rules. From that declaration, Ash handles much of the surrounding plumbing, so developers spend less time writing repetitive data access and business logic code.
Is ash free to use? What license does it have?
ash has no declared license. Its code is public, but without a license you have no explicit permission to reuse it; ask the author before relying on it.
Is ash still maintained?
Actively maintained. The last commit to ash was on Oct 22, 2026.
What can I use ash for?
Building a Phoenix web application with a rich domain model and consistent authorization rules. Exposing a resource-based backend as a JSON:API or GraphQL service. Adding background jobs or state machines to existing business entities. Creating AI-enabled features that use structured outputs or MCP within an Elixir codebase.
Where can I get ash?
The source code and installation instructions are on GitHub: https://github.com/ash-project/ash

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects