View Source Using Hexdocs

Ash is split across various packages. Each package has its own documentation. However, there is a global documentation search available at Do use it, use Ctrl-K or Cmd-K on that site.


  • Ash: The core framework, providing all the features and goodies that power and enable the rest of the ecosystem.
  • AshPostgres: A PostgreSQL data layer for Ash resources, allowing for rich query capabilities and seamless persistence.
  • AshPhoenix: Utilities for using Ash resources with Phoenix Framework, from building forms to running queries in sockets & LiveViews.
  • AshGraphql: A GraphQL extension that allows you to build a rich and customizable GraphQL API with minimal configuration required.
  • AshJsonApi: A JSON:API extension that allows you to effortlessly create a JSON:API spec compliant API.
  • AshAuthentication: Provides drop-in support for user authentication with various strategies and tons of customizability.
  • AshAuthenticationPhoenix: Phoenix helpers and UI components in support of AshAuthentication.
  • AshStateMachine: An Ash.Resource extension for building finite state machines.
  • AshCsv: A CSV data layer allowing resources to be queried from and persisted in a CSV file.
  • AshDoubleEntry: A customizable double entry bookkeeping system backed by Ash resources.
  • AshArchival: A light-weight resource extension that modifies resources to simulate deletion by setting an archived_at attribute.
  • Reactor: Reactor is a dynamic, concurrent, dependency resolving saga orchestrator.
  • Spark: The core DSL and extension tooling, allowing for powerful, extensible DSLs with minimal effort.

DSL documentations

Some helpful tips on using Hex Docs. DSLs are each documented in their own area. Find them in the bottom of the sidebar on the left.


In the sidebar

When searching for a dsl, prefix your search with DSL:. If you know the path to the DSL you are looking for, use it separated by dots. For example, DSL: attributes.attribute. Only five results will show up in the sidebar, so be as specific as possible. If you don't find it, press enter and you will be taken to the search page. An important limitation is that the sidebar only shows "entities" not "options". We are looking into adding something to ex_doc to improve this, but until we do, you will need to use the search page to find options. For example, you can find attributes.attribute but not attributes.attribute.primary_key? in the sidebar search.

In the search page

The fastest way to get to the search page is to click on the sidebar search and press enter without selecting anything. Use type:dsl to filter for DSLs on the search page. By default, search terms are considered optional. You can prefix them with + to make them required. Something you would do to find a specific DSL option is to search for +type:dsl +attributes.attribute.primary_key?.