尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Payout-operations software for agencies that pay many people — freelancers, creators, vendors — on Tempo
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Slow, or exposed — agencies have lived with those two. FlowRail, on Tempo, is the third.
Payout-operations software for agencies that pay many people — freelancers,
creators, vendors — on Tempo.
The customer approves a payout run once. FlowRail turns that single approval into
a set of per-recipient access keys, each limited to one payee, one capped amount,
and a short expiry. An inbound client payment is reconciled to payees via memos.
Payouts leave as a batch, and every payout links back to on-chain proof.檢視完整 README ↗Slow, or exposed — agencies have lived with those two. FlowRail, on Tempo, is the third.
Payout-operations software for agencies that pay many people — freelancers, creators, vendors — on Tempo.
The customer approves a payout run once. FlowRail turns that single approval into a set of per-recipient access keys, each limited to one payee, one capped amount, and a short expiry. An inbound client payment is reconciled to payees via memos. Payouts leave as a batch, and every payout links back to on-chain proof.
| Live site | flowrail.vercel.app |
| Product demo | flowrail.vercel.app/app — the desk |
| Chain | Tempo Moderato testnet, chain id 42431 |
| Token | pathUSD |
Two surfaces, deliberately separate:
/ is the marketing site. Every figure it shows is generated by the real
policy engine, not typed in./app is the product UI: the run, the split between what released itself and
what is waiting, the held line, and the ledger underneath it.Nine probes were executed against Moderato. Five of them are rejections, which are the point — they show the constraints are enforced by a contract rather than by FlowRail's own bookkeeping.
| Claim | Outcome |
|---|---|
| A fresh key is unrestricted until scoped | accepted — and that is the problem |
| A recipient lock is accepted on-chain | accepted |
| A locked key still pays its one recipient | accepted |
| A locked key pays nobody else | reverted |
| The authorised amount is a hard ceiling | reverted |
| Expiry is enforced by the chain | reverted |
| Moderato exposes no atomic batch call | reverted |
pathUSD gates recipients it has not seen | reverted |
Transaction hashes for every row are in
web/src/lib/evidence.ts and rendered on the landing
page. Nothing there is a hash the chain did not return.
address tenure < 7 days -> dual (irreversible: unvouched destination)
amount > $500 -> finance (a size problem, not a trust problem)
otherwise -> auto (releases on its own key)
The dualCap of $2,000 is deliberately not a tier. A large payment to a
long-known address is a size question a human should answer, not a trust question.
Merging the two would tell a reviewer that a standing payee is unvouched for.
Auto keys live 7 days. Escalated keys live 12 hours.
Requires Node 22+.
# 1. Install both packages (the root package.json is scripts-only)
npm --prefix spike install
npm --prefix web install
# 2. Create a throwaway testnet root key and fund it
npm --prefix spike run agent:new
npm --prefix spike run faucet
# 3. Prove the chain is doing what we claim
npm --prefix spike run probe:chain
# 4. Regenerate the artefact the web app renders
npm --prefix spike run demo:export
# 5. Run the product
npm --prefix web run dev
spike/.data/ is gitignored and holds key material. Never commit it.
npm run check
check is the pre-push guard. Vercel auto-deploys every push to main, so this is the
only thing standing between a broken commit and a broken live site. It fails fast and
runs the full green suite:
npm --prefix spike test # 32 tests, no RPC required
npm --prefix spike run typecheck
npm --prefix web run typecheck
npm --prefix web run lint
npm --prefix web run build
The test suite is deliberately network-free: the whole policy engine — tier decision, escalation, reconciliation, per-leg approval — runs against in-memory fakes. Only the chain adapters touch an RPC, and no test does.
flowrail/
├── README.md This file.
├── SPEC.md Original build spec. Superseded in part - see its banners.
├── docs/ Protocol facts, architecture, decisions, and status.
├── spike/ Protocol spike: a real CLI that talks to Moderato.
│ ├── src/domain/ Pure policy and types. No chain imports. Unit-testable.
│ ├── src/ports/ Interfaces the domain and app may depend on.
│ ├── src/adapters/ The only code allowed to know Tempo or the filesystem exist.
│ ├── src/app/ Use cases: classify, approve, authorize, settle.
│ ├── src/cli/ Argument parsing and printing, nothing else.
│ └── test/ 32 tests. No network.
└── web/ Next.js: marketing site and product UI.
The dependency rule is one direction only: domain imports nothing from the
project, app depends on ports, and only adapters know that Tempo exists.
The web app never imports the spike — it reads a generated artefact, so it
deploys to Vercel where a sibling checkout and a child process do not exist.
The Status section above is the current state of the project. Every other document is dated where it matters.
| Document | Read it when you need to |
|---|---|
docs/HANDOFF.md | You want the 2026-10-01 snapshot of how work progressed. Superseded — see its banner. |
docs/KNOWLEDGE.md | You are new to this codebase. The reasoning, the traps, and what is still open. |
docs/PROTOCOL.md | You are touching Tempo selectors, limits, scopes, or witnesses. |
docs/SECURITY.md | You are signing anything, or changing what FlowRail may do. |
spike/THREAT-MODEL.md | You want the threats enumerated, and which ones are actually fixed. |
docs/DECISIONS.md | You want to know why it is built this way, or want to change it. |
docs/ARCHITECTURE.md | You are adding a file under spike/src/. |
docs/UI.md | You are building a screen. |
docs/PRODUCT.md | You need to know what FlowRail is and who it serves. |
Tempo's canonical TIP documents and the Moderato deployment disagree. Spend periods, richer read functions, and per-token limit updates are specified upstream but not deployed. Building against the TIP will produce code that reverts.
Every protocol claim in this repo is labelled VERIFIED, FROM-TIP, or OPEN.
Do not let an unlabelled assumption through. We verify against the deployment,
not the specification — see D6 in docs/DECISIONS.md.
Honest, as of 2026-10-05.
| Area | State |
|---|---|
| Protocol investigation | Substantially done. Moderato surface mapped, 9 probes executed. |
| Spike code | Working. 11 files, ~2,000 lines, 32 passing tests, no known compile errors. |
| Testnet account | Exists and funded. Keys authorize, lock, and expire as designed. |
| Landing site | Deployed, 7 pages, builds and lints clean. |
| Product UI | Built. Wallet connect works. |
| Atomic batch | Unavailable on Moderato. Not yet re-probed on Tempo mainnet. |
| New-recipient payouts | Blocked by PolicyForbids. Not worked around. |
| Auth | Not implemented. No session, no database. |
Not production-ready, and it would be dishonest to imply otherwise:
PolicyForbids. Every successful probe used
a recipient who had already opted in.demo-run.json can change what the UI claims to have decided.PolicyForbids. No onboarding path, no product.executeBatch on Tempo mainnet before relying on it or deleting it.The full list, with the reasoning, is in
spike/THREAT-MODEL.md.
MIT © 2026 Mofe-Bankole.
Note that MIT carries no explicit patent grant, and this project sits on top of Tempo — a chain whose own patent terms are Tempo's, not ours.
docs/PLAN.md| You need the schedule, scope cuts, or submission checklist. |
spike/SPIKE.md | You are running probes or picking up the protocol investigation. |