The Ash Template monorepo: a public website with sign-in and a small account area, a public HTTP API, a command-line tool, and room for contracts and runtime plugins.
This is a product template, cut from the Regents product and stripped back to the parts every product starts with. The placeholder product is called Ash Template; run the rename script before building anything on it:
scripts/init.sh night_owl NightOwl "Night Owl"scripts/init.sh <snake_name> <ModuleName> ["Display Name"] replaces the
OTP application ash_template, the Elixir modules AshTemplate, the
camel-case name ashTemplate, the kebab-case name ash-template, the
environment prefix ASH_TEMPLATE_, the display name "Ash Template" and its
capitalised form "ASH TEMPLATE" everywhere they appear, including the CLI
package and command names. It drops the passages that describe the template
itself, records the rename in the changelog and removes itself, then prints
the follow-up commands: format the renamed code, regenerate the route catalog
digest, run the gate.
| Component | What it holds | Check |
|---|---|---|
| platform/ | The Phoenix/Ash web application: home page, Privy sign-in, the signed-in Overview and Account pages, public pages, health and metrics, and the served API. | make check-platform |
| cli/ | commands.json, the description of every regents ash-template command: the pattern each site copies for its own commands, run by regents-cli, which carries a pinned copy. |
make check-cli, make check-siwa-latest |
| contracts/ | An optional Foundry workspace. Empty until the product needs contracts. | make check-contracts |
| plugins/ | Standalone runtime plugin packages. None yet. | None |
| skills/ | Every agent skill Regent writes. regent-workflow is the entry point for Regent work; ash-stack is the entry point for code and routes to the backend, frontend, data, security, testing, WebMCP and signals skills; animejs covers Anime.js animation inside LiveView hooks, onchain-buttons wallet and on-chain buttons, chain-events watching a chain and saving its events, and payments taking USDC payments through the shared Regents library. The web app serves all of them except regent-workflow, regent-notion and checkpoint as its build skills. |
None |
make check runs every component's check in turn; the
platform README explains the platform's.
make release runs them on the committed tree, then builds and starts the release
image; see Release.
-
Follow the platform quickstart to create the local database, load Privy credentials and start the server.
-
Run
gh auth loginonce and installuv:make checkfetches the required-fixes list from GitHub, runs regents-cli's command description checker withuv, and reads the newest regents-cli release from PyPI and the newest SIWA library change from elixir-utils.
The platform takes its shared libraries from three Regent repositories, each
pinned to one commit in platform/mix.exs: design-system (the shared UI),
elixir-utils (Privy verification, agent access, formatting and lint checks)
and regents/identity (the shared profile domain served at /api/v1/profile).
security/required-fixes.json lists the shared libraries, where each must come
from, and the security fixes every Regent site must carry. make check fails when
a library is not pinned to an inspectable commit of its repository or lacks a fix. The
platform README explains both.
Agent pairing also uses the shared SIWA client.
Its local Touch ID page belongs to siwa-server, with the branded visual shell in
design-system/standalone/agent-key.html; the Regents CLI embeds the same page.
Do not copy it into a site's Phoenix app or elixir-utils. Keep the pairing guide in
platform/priv/public/llms.md pointed at SIWA. On macOS, explain the local Touch ID
step before opening it: the page confirms the passkey step, and the agent checks
pairing separately with me. Updating SIWA's clients needs no site dependency pin.
MIT, see LICENSE. Vendored dependencies retain their own licenses.