Skip to content
All docs

Operations

Services

ServiceStartHealthLogs
Webpnpm --filter @imprest/web build && pnpm --filter @imprest/web start/statusNext.js stdout
Relayerpnpm --filter @imprest/relayer startGET /healthJSON lines with operation_id, desk, nonce, result, code; never keys or signatures
Keeperpnpm --filter @imprest/keeper start (KEEPER_DRY_RUN=true to observe only)GET :8788/JSON lines with operation_id, desk, action, tx, gas used, gas limit, gas price
Indexercd indexer && pnpm dev (Linux/macOS/Docker)GraphQL { __typename }Envio logs

Run two keeper instances (PRD); enforcement is permissionless, so any instance or anyone else can act.

Operator controls

ActionCallEffectCannot
Pause new desksDeskFactory.setPaused(true)openDesk reverts Pausedaffect existing desks
Pause new creditImprestPool.setPaused(true)fundDesk (graduation) revertsblock trading limits, claims, closes, LP withdrawals
Lower a capsetGrossCap / setDeskNotionalCap with a lower valueimmediate; blocks new risk onlyblock reductions
Raise a capsame with a higher value, then applyGrossCap / applyDeskNotionalCap after 24 htimelockedskip the timelock
New policyDeskFactory.addCohortnew desks only; validated against hard capschange a live desk

Runbooks

  • Breach not enforced: check keeper health; call enforce() yourself (anyone can). A

stale mark makes enforce wait (MarkStale).

  • Desk stuck in Enforcing: read history for EnforceCloseFailed (venue halted, no

liquidity, bankrupt position). Call enforce() again once the venue has liquidity or has liquidated the position.

  • Settlement pending: Perpl withdrawal refused (rate limit); retry enforce().
  • Verification failures in the app: compare /status RPC head agreement; a lagging

verification RPC delays "verified", a disagreeing one fails it by design.

  • Perpl upgrade or unknown revert codes: pause new desks and new credit, re-run Gate 0

and the fork test against the new implementation.