Sector examplesFinance and banking
Demo Bank
A banking assistant that answers from the customer's real accounts and moves money only with their approval.

The problem it solves
Banks want an assistant that can act, not just chat, without giving up control: it must only touch the signed-in customer's accounts, respect limits, never move money twice, ask before anything irreversible, and leave an audit trail that shows if anyone edited it.
- Transfers and card freezes pause until the customer approves them in the conversation
- Guardrails refuse over-limit transfers and other customers' accounts before anyone is asked
- Every action lands in a hash-chained audit log that detects tampering
Run it on your computer
git clone https://github.com/karawash-projects/amoxi.gitcd amoxinpm installnpm run buildnpm run dev -w banking-assistantThen open http://localhost:8081. The tests run with npm test -w banking-assistant.
Amoxi features in this example
| Feature | Why it matters here |
|---|---|
| Tools with approval | Money-moving tools need the customer's confirmation; nothing runs before it, and a declined action is reported back to the agent. |
| Guardrails and principals | The agent acts as the signed-in customer only; beforeToolCall refuses limits and foreign accounts as a second line of defence. |
| Idempotent steps (ctx.step) | A transfer interrupted by a restart is never posted twice. |
| Generative UI | Balances, transactions, a spending chart and transfer receipts appear as components, not walls of text. |
| Knowledge base (RAG) | Fee and policy questions are answered from the bank's own documents. |
| Interceptors and audit hooks | Every call to the transfer service and every run is recorded in a tamper-evident log. |
| MCP, read-only | Only the public exchange-rate quote is offered to outside AI agents; customer tools stay private. |