ash-project/ash
{ "createdAt": "2019-10-03T03:07:55Z", "defaultBranch": "main", "description": "A declarative, extensible framework for building Elixir applications.", "fullName": "ash-project/ash", "homepage": "https://www.ash-hq.org", "language": "Elixir", "name": "ash", "pushedAt": "2025-11-25T19:58:27Z", "stargazersCount": 2199, "topics": [ "ash", "dsl", "elixir", "framework" ], "updatedAt": "2025-11-25T19:58:31Z", "url": "https://github.com/ash-project/ash"}

Ash Framework
Section titled “Ash Framework”Welcome! Here you will find everything you need to know to get started with and use Ash. This documentation is best viewed on hexdocs.
Dive In
Section titled “Dive In”- [What is Ash?]!(documentation/topics/about_ash/what-is-ash.md)
- [Getting Started Tutorial]!(documentation/tutorials/get-started.md)
- See the roadmap
About the Documentation
Section titled “About the Documentation”The [Get Started Livebook]!(documentation/tutorials/get-started.md) Tutorial introduces you to the core concepts of Ash like resources, actions, and relationships. It’s a great place to start if you are a beginner.
[Topics]!(#topics) provide a high level overview of a specific concept or feature of Ash. These are understanding-oriented, and are perfect for discovering design patterns, features, and tools.
[How-to]!(#how-to) guides are goal-oriented recipes for accomplishing specific popular tasks. Browse to get an idea of how Ash works and what is possible with it.
[Reference]!(#reference) documentation is information-oriented, covering every Ash module, function, expression, and DSL. It is produced automatically from our source code. Use the sidebar and the top search
bar to find relevant reference information. Place the text dsl before your search to quickly jump to a particular DSL — e.g. try comparing the results of searching for name with the results for dsl name.
Topics
Section titled “Topics”About Ash
Section titled “About Ash”- [What is Ash?]!(documentation/topics/about_ash/what-is-ash.md)
- [Our Design Principles]!(documentation/topics/about_ash/design-principles.md)
- [Contributing to Ash]!(.github/CONTRIBUTING.md)
- [Alternatives]!(documentation/topics/about_ash/alternatives.md)
Development
Section titled “Development”- [Project Structure]!(documentation/topics/development/project-structure.md)
- [Generators]!(documentation/topics/development/generators.md)
- [Testing]!(documentation/topics/development/testing.md)
- [Working with LLM Assistance]!(documentation/topics/development/working-with-llms.md)
- [Development Utilities]!(documentation/topics/development/development-utilities.md)
- [Backwards Compatibility Config]!(documentation/topics/development/backwards-compatibility-config.md)
- [Upgrading to 3.0]!(documentation/topics/development/upgrading-to-3.0.md)
- [Error Handling]!(documentation/topics/development/error-handling.md)
Resources
Section titled “Resources”- [Domains]!(documentation/topics/resources/domains.md)
- [Attributes]!(documentation/topics/resources/attributes.md)
- [Relationships]!(documentation/topics/resources/relationships.md)
- [Calculations]!(documentation/topics/resources/calculations.md)
- [Aggregates]!(documentation/topics/resources/aggregates.md)
- [Code Interfaces]!(documentation/topics/resources/code-interfaces.md)
- [Identities]!(documentation/topics/resources/identities.md)
- [Validations]!(documentation/topics/resources/validations.md)
- [Changes]!(documentation/topics/resources/changes.md)
- [Preparations]!(documentation/topics/resources/preparations.md)
- [Embedded Resources]!(documentation/topics/resources/embedded-resources.md)
- [Notifiers]!(documentation/topics/resources/notifiers.md)
Actions
Section titled “Actions”- [Actions]!(documentation/topics/actions/actions.md)
- [Read Actions]!(documentation/topics/actions/read-actions.md)
- [Create Actions]!(documentation/topics/actions/create-actions.md)
- [Update Actions]!(documentation/topics/actions/update-actions.md)
- [Destroy Actions]!(documentation/topics/actions/destroy-actions.md)
- [Generic Actions]!(documentation/topics/actions/generic-actions.md)
- [Manual Actions]!(documentation/topics/actions/manual-actions.md)
Security
Section titled “Security”- [Actors & Authorization]!(documentation/topics/security/actors-and-authorization.md)
- [Sensitive Data]!(documentation/topics/security/sensitive-data.md)
- [Policies]!(documentation/topics/security/policies.md)
Advanced
Section titled “Advanced”- [Multi-step Actions]!(documentation/topics/advanced/multi-step-actions.md)
- [Monitoring]!(documentation/topics/advanced/monitoring.md)
- [Multitenancy]!(documentation/topics/advanced/multitenancy.md)
- [Reactor]!(documentation/topics/advanced/reactor.md)
- [Combination Queries]!(documentation/topics/advanced/combination-queries.md)
- [Timeouts]!(documentation/topics/advanced/timeouts.md)
- [Writing Extensions]!(documentation/topics/advanced/writing-extensions.md)
How-to
Section titled “How-to”- [Write Queries]!(documentation/how-to/write-queries.livemd)
- [Test Resources]!(documentation/how-to/test-resources.livemd)
- [Authorize Access to Resources]!(documentation/how-to/authorize-access-to-resources.livemd)
- [Encrypt Attributes]!(documentation/how-to/encrypt-attributes.livemd)
- [Prevent Concurrent Writes]!(documentation/how-to/prevent-concurrent-writes.livemd)
- [Wrap External APIs]!(documentation/how-to/wrap-external-apis.livemd)
- [Define Polymorphic Relationships]!(documentation/how-to/polymorphic-relationships.livemd)
Reference
Section titled “Reference”- [Ash.Resource DSL]!(documentation/dsls/DSL-Ash.Resource.md)
- [Ash.Domain DSL]!(documentation/dsls/DSL-Ash.Domain.md)
- [Ash.Reactor DSL]!(documentation/dsls/DSL-Ash.Reactor.md)
- [Ash.Notifier.PubSub DSL]!(documentation/dsls/DSL-Ash.Notifier.PubSub.md)
- [Ash.Policy.Authorizer DSL]!(documentation/dsls/DSL-Ash.Policy.Authorizer.md)
- [Ash.DataLayer.Ets DSL]!(documentation/dsls/DSL-Ash.DataLayer.Ets.md)
- [Ash.DataLayer.Mnesia DSL]!(documentation/dsls/DSL-Ash.DataLayer.Mnesia.md)
- [Ash.TypedStruct DSL]!(documentation/dsls/DSL-Ash.TypedStruct.md)
- [Glossary]!(documentation/topics/reference/glossary.md)
- [Expressions]!(documentation/topics/reference/expressions.md)
- For other reference documentation, see the sidebar & search bar
Packages
Section titled “Packages”The Ash ecosystem consists of numerous packages, all of which have their own documentation. If you can’t find something in this documentation, don’t forget to search in any potentially relevant package.
Data Layers
Section titled “Data Layers”- AshPostgres | PostgreSQL data layer
- AshSqlite | SQLite data layer
- AshCsv | CSV data layer
- AshCubdb | CubDB data layer
API Extensions
Section titled “API Extensions”- AshJsonApi | JSON:API builder
- AshGraphql | GraphQL builder
- AshAI | Structured Outputs, MCP, Vectorization and more
- AshPhoenix | Phoenix integrations
- AshAuthentication | Authenticate users with password, OAuth, and more
- AshAuthenticationPhoenix | Integrations for AshAuthentication and Phoenix
Finance
Section titled “Finance”- AshMoney | A money data type for Ash
- AshDoubleEntry | A double entry system backed by Ash Resources
Resource Utilities
Section titled “Resource Utilities”- AshOban | Background jobs and scheduled jobs for Ash, backed by Oban
- AshArchival | Archive resources instead of deleting them
- AshStateMachine | Create state machines for resources
- AshPaperTrail | Keep a history of changes to resources
- AshCloak | Encrypt attributes of a resource
Admin & Monitoring
Section titled “Admin & Monitoring”- AshAdmin | A push-button admin interface
- AshAppsignal | Monitor your Ash resources with AppSignal
Testing
Section titled “Testing”- Smokestack | Declarative test factories for Ash resources
Examples & External Resources
Section titled “Examples & External Resources”- Ash Real World | Ash + Phoenix LiveView codebase containing real world examples (CRUD, auth, advanced patterns, etc)