# Architecture

> Spout has three layers: your wallet, programs on Solana that hold the rules and the money, and Spout's operational services that run routine work within limits…

Canonical: https://spout.finance/docs/architecture/

---

Spout has three layers: your wallet, programs on Solana that hold the rules and the money, and Spout's operational services that run routine work within limits the programs enforce. You sign your own actions. The keeper can only call specific program instructions, each checked by the program.

## On Solana

| Part | What it does |
| --- | --- |
| Spout vault program | Holds the collateral pools and their receipt tokens, loans, lending tranches, settlement logic and the Insurance Fund. Enforces every limit in these docs: LTV, thresholds, the utilization cap, the Junior minimum, fee rules and the loss order. |
| Identity registry | Records a verified flag for wallets that complete identity verification, and links extra wallets to the same identity. Holds no personal data. |
| Stork price feeds | Signed prices for each supported asset, verified by Stork's own program before Spout reads them. |
| USDC | The stablecoin for every loan, deposit and payout. |

## Spout operations

| Part | What it does |
| --- | --- |
| Keeper | Runs each options cycle: locks and unlocks pools, records premium, delivers settlement cash, settles assignments, and runs liquidations. |
| Brokerage account | Holds the real shares behind collateral that has joined a pool. Calls on those shares are sold here as listed options on US exchanges, liquidation sales are executed here, and assigned stock is bought back here. |
| Issuer | Redeems collateral tokens for the underlying shares, delivered to the brokerage account, and reissues the tokens when the shares are returned. Spout mints or burns a matching receipt token at each step. |
| Price relay | Carries Stork's signed prices onchain. It cannot change a price, because Stork's program checks the signature. |
| App and API | The app you use. It reads the chain and builds transactions for you to sign. |

## How a typical action flows

- You choose an action in the app, such as borrowing $1,000.
- The app builds the transaction and your wallet asks you to sign it.

- The vault program checks it: is the price fresh, is your LTV within 50%, does the pool have the USDC, is borrowing paused?
- If every check passes, the USDC moves to your wallet. If any fails, nothing happens.
