A high-level Python web framework that encourages rapid development and clean, pragmatic design.
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
A PHP web application framework with expressive syntax, covering routing, ORM, migrations, queues, and real-time broadcasting.
Ruby on Rails is a full-stack MVC web framework for building database-backed web applications in Ruby.
An opinionated Java framework for building production-grade, Spring-powered applications and services with minimal setup.
A progressive Node.js framework for building efficient, scalable server-side applications in TypeScript or JavaScript.
A modular Java application framework offering dependency injection, auto-configuration, Web MVC, Netty-based HTTP serving and data access, inspired by Spring.