Skip to main content
The pult command comes with the pult package. Run it with bunx pult, npx pult or from a script.
--cwd points it at another project folder.

pult build

Finds every file include matches in pult.config.ts, loads your definitions and writes:
  • .pult/manifest.json: everything Pult needs to know, with where each definition lives in your code.
  • .pult/index.ts: what createPult imports.
Commit both. The manifest’s version is a hash of its contents, so it only changes when something changes, and manifest changes show up in code review. If your definitions have any of the problems pult check looks for, build lists them and writes nothing. Definition files must not do anything when imported: no database calls, no network, no timers at the top level. Work belongs inside functions like get and run, which Pult calls later.

pult check

Builds without writing, then fails if anything’s wrong:
  • A role grants an action that doesn’t exist.
  • A page uses an action, inbox or flag that doesn’t exist.
  • A scheduled action has an invalid cron expression, needs input without a default, or needs an approval.
  • A flag’s default doesn’t fit its value, or a guard has a limit below one an hour.
  • A view or triage rule uses a state the inbox doesn’t have.
  • Triage runs an action that needs a human or an approval.
  • An action picks from a resource that doesn’t exist or can’t be searched, or names an input field it doesn’t have.
  • A relation points at a resource that doesn’t exist.
  • A column isn’t part of the inbox’s data.
  • A definition file does something when imported.
  • The committed .pult/ is older than your code.
Run it in CI.

pult diff

Shows what deploying would change in the environment behind PULT_KEY: inboxes, resources, actions and views added, removed or changed, danger levels and approvals that changed, and who gains or loses which permission.

pult deploy

Builds, prints the diff and deploys to the environment behind PULT_KEY.
Your sync environment receives your definitions automatically, so deploy is for the others. Bun loads .env on its own; with Node, set PULT_KEY in your shell or CI.

pult dev

Rebuilds .pult/ on every change to your code while it runs. Your app picks up the new definitions and syncs them to the sync environment the next time it connects or sends.