@reinconsole/mock-rails
v0.1.1
Published
Simulated payment rails for Rein v0.1 — mock x402 facilitator, on-chain ledger, and indexer with shadow-spend detection.
Maintainers
Readme
@reinconsole/mock-rails
The simulated payment world for Rein — a fully offline twin of the real x402 rails. Try the whole guard loop — budgets, caps, kill switch, shadow-spend detection — with no accounts, no chain, no funds.
Status: v0.1 — early open-source infrastructure. APIs may change before 1.0. See it running (the live console world runs on these rails): Rein console.
Install
npm install @reinconsole/mock-railsWhat's in it
Three pieces, mirroring the production architecture (their live siblings live in @reinconsole/x402-rails):
import {
MockLedger, // the chain: append-only transfers, open to anyone
MockFacilitator, // x402 settlement (the facilitator's role); payerFor() plugs into the SDK guard
MockIndexer, // watches the ledger, reconciles spend against ALLOW decisions,
// emits payment.settled — or shadow.spend, the bypass signal
createMockVendor, // an in-process x402-paywalled vendor to complete the loop
} from '@reinconsole/mock-rails';- The ledger is honestly open — anything can append a transfer, which is exactly what makes shadow-spend detection meaningful: a payment that bypassed the guard still lands on the ledger, and the indexer flags it as unreconciled.
- The facilitator speaks real x402 shapes — payment headers encode/decode through the same wire schemas the guard parses, so tests exercise the actual parsing paths.
- The indexer closes the loop — managed-wallet spend reconciles against engine decisions; everything else becomes a
shadow.spendevent on the bus. createMockVendor()gives you a paywalled endpoint in-process — the standard test/demo counterpart for@reinconsole/sdk's guard and@reinconsole/gate's gated fetch.
The monorepo's offline demos (5 scenarios in under 500 ms) are wired entirely on this package.
MIT © Rein contributors · Repository · Issues
