Phantom by AshlrAI

Phantom · use cases

Unattended work, inside what you signed.

Phantom's autonomy ships dormant. It runs only under a standing grant you sign with Touch ID, on macOS, after you start the resident daemon yourself. The default grant begins in shadow, where the gates run and nothing merges. This page describes the mechanism; it does not claim any live grant state.

The grant

A scope you sign, not a toggle you trust.

You install a custody helper, create a key in the Mac's Secure Enclave and sign a standing grant: which repositories, which engines, what risk and size, what spend, for at most 30 days. Nothing else, not config, not the Leader, not an agent, can widen it.

Dormant until three separate acts

Autonomy requires the custody install, a Touch-ID-signed standing grant and the operator running ashlr authority resident start. All three are deliberate; the shipped default does none of them.

Source: docs/STANDING-AUTHORITY.md, docs/AUTHORITY.md

The grant has edges

Repositories, engines, risk and size caps, spend and a hard expiry of at most 30 days are inside the signed scope. Change-volume limits for files, lines and merges per repo per day are reviewed and signed the same way.

Source: docs/STANDING-AUTHORITY.md

A hash-chained ledger

Every grant, switch, Stop, rollout move, gate decision, merge, revert, hold and Leader event lands in one append-only ledger. A broken chain halts everything.

Source: docs/STANDING-AUTHORITY.md

Lowering never asks

The switch drops to Propose or Off at once. Stop halts running agents and armed merges. Revoke needs a new grant to resume.

Source: docs/STANDING-AUTHORITY.md

Re-approval, not restart

A release that changed authority code pauses the grant until one more Touch ID. Re-approval drafts the same scope with fresh dates and bindings, and the ladder continues from the stage you had reached.

Source: docs/STANDING-AUTHORITY.md

macOS only today

Custody is a Secure Enclave key and a Touch ID signature, so resident autonomy is macOS-only. The CLI and console run on Linux and Windows without it, and autonomy stays dormant there.

Source: docs/AUTHORITY.md, docs/QUICKSTART.md

The rollout ladder

Evidence climbs. Breaches drop.

The daemon advances one stage when every criterion of the current stage is met, drops back one on a sandbox violation, a reserve breach or a revert rate above the stage's limit, and can never pass the last signed stage.

  1. Default first stage1 · shadowGates run, would-merges recorded, nothing merges
  2. 2 · 2aFirst repos merge, low risk
  3. 3 · 2bMore repos
  4. 4 · 2cLeader class A
  5. 5 · 3aMedium caps, Leader A and B
  6. 6 · 3bMore repos
  7. 7 · 3cMore repos
  8. 8 · 3dLast signed stage

Shadow advances after 5 recorded would-merges and 12 hours. A separately signed elite-direct grant replaces the ladder with one rung whose breach restarts its evidence window.

Source: docs/STANDING-AUTHORITY.md, the rollout ladder

Merge gates

Every change through the same gates.

The gate names below are the ones Fleet shows on each shadow decision with a one-sentence reason, so you can read what the fleet would have done before it does it.

  • G0Authority
  • G1Protected paths
  • G1bTamper
  • G2Scope
  • G3Verify
  • G4Claims
  • G5Blast radius
  • G6Judge or elite-direct
  • G7GitHub checks

When a stage merges, the merge happens on GitHub pinned to the head SHA with grant, gate and ledger trailers. CI and a fresh re-run watch it for two hours; a red merge is reverted and the repository quarantined. G6 requires a judge family that is not the producer family.

Sources: src/web-ui/routes/verse/fleet/live-model.ts, docs/STANDING-AUTHORITY.md, src/core/fleet/reviewer-independence.ts

Devin work is a named lane

The fleet launches Devin only under a grant that names Devin. Cloud merges need two independent judge families, while a signed elite-direct scope can let eligible CLI work land at G6 on deterministic verification.

Source: docs/DEVIN.md, src/core/fleet/reviewer-independence.ts

Reserves protect your own use

In the default balanced mode, Claude keeps 40% of its weekly window for you and autonomy never uses it while the five-hour window is above 70%. A seat whose usage cannot be read is ineligible.

Source: docs/STANDING-AUTHORITY.md, docs/RESET-AWARE-SCHEDULING.md

Try it

Preview the setup, then decide.

ashlr authority setup --dry-run
ashlr authority setup
ashlr authority resident start

Setup steps as documented: docs/AUTHORITY.md, docs/RESIDENT-RUNTIME.md. macOS only.