How Korsie's agents run a school's money
Eight finance agents settle tuckshop sales, restock, follow up school fees and move money in from abroad on the XRP Ledger testnet. Each one acts on its own, inside limits a person signed, and every payment points back to the decision behind it.
- Live on XRPL testnet
- 8 finance agents
- No token of our own
Agents propose. Node chooses. Code checks. The ledger enforces.
simulate before it signs. The guardian runs apart from the agents and holds no keys, and anyone's browser can check the result on the ledger.- Node, the AI, choosing
- Enforced on the XRP Ledger
- What can stop an agent
- Checks anyone can run
Where each limit is enforced
Most limits hold on the ledger itself, so a bug or a compromised agent can't get around them. Korsie's code adds the checks the ledger can't express, and the signer runs them again before every signature.
| Limit | Enforced by | How |
|---|---|---|
| An agent signs only with its own key, and its owner can take it away | XRP Ledger | A regular key on each agent account; the person who owns the account keeps the master key |
| Restocking can't spend beyond the operator's budget | XRP Ledger | A payment channel the tuckshop operator funds; claims beyond it are refused |
| Korsie's budget is released a week at a time | XRP Ledger | A time-locked escrow; an early claim gets tecNO_PERMISSION |
| The allowance agent pays from a family only while the family allows it | XRP Ledger | Permission delegation the family can revoke with one tap |
| Only verified senders pay into the learners' pool | XRP Ledger | Deposit authorization with credentials issued by Korsie |
| A conversion never goes below its floor | XRP Ledger | A partial payment through the AMM with DeliverMin |
| The school reserve moves only with the bursar and the principal | XRP Ledger | A signer list with a quorum of two; the reserve's own key is disabled |
| Settlement pays everyone or no one | XRP Ledger | One Batch per break with tfAllOrNothing; every inner result is checked |
| Who may be paid, how much per payment and per period, and when | Policy engine and signer | The mandate a person signed, read again before every signature |
| Agents pay only counterparties Korsie verified | Signer, reading the ledger | A KorsiePayee credential from Korsie must be on the ledger |
| A paused agent can't act | Signer | People or the guardian pause it; the signer refuses everything it proposes |
On the testnet ledger
A few of the agents' real transactions. Each carries its agent's SourceTag and the hash of the decision behind it.
- A break settled as one Batch to four verified payees, signed with the settlement agent's own key8ECC9D33…
- The procurement agent draws on the operator's stock budget channel with its own key876247D2…
- A family abroad's school fee, paid to the school by delegated payment4A317357…
- The treasury agent's owner revokes its key on the ledgerE68A646B…
- Korsie withdraws a supplier's verification, so no agent can pay it54E65F36…
What runs where
SiteNext.js 16 on Vercel, holding only a read-only database key
DataSupabase Postgres with row-level security; no personal data on the ledger
AgentsOne worker on Fly.io, with the guardian in a separate process
Ledgerxrpl.js on the XRP Ledger testnet, with RLUSD from Ripple's issuer