# cenwadike/open-beanie architecture

> Architecture diagram of the GitHub repository cenwadike/open-beanie, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/cenwadike/open-beanie
- Repository: https://github.com/cenwadike/open-beanie

## Overview

Beanie combines merchant receiver provisioning, multichain stablecoin settlement, deposit sweeping and signed webhook delivery, plus Starknet stealth payments. The README establishes the EVM, Starknet and Solana receiver/factory capabilities; the tree contains the Solana program and browser scripts, but their runtime wiring and several contract implementations are not sampled, so uncertain connections are omitted.

Main entry points: [`beanie_api/src/main.rs`](https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/main.rs) (Beanie API), [`beanie_api/src/stealth_workers.rs`](https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/stealth_workers.rs) (Stealth workers), [`beanie_api/src/create_workers.rs`](https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/create_workers.rs) (Announce worker), [`beanie_api/public/scripts/stealth.js`](https://github.com/cenwadike/open-beanie/blob/main/beanie_api/public/scripts/stealth.js) (Browser client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_provision["Receiver provisioning"]
  node_create_route["Announce route<br/>[create_routes.rs]"]
  node_create_worker["Announce worker<br/>[create_workers.rs]"]
  node_evm_receiver["EVM receiver factory"]
  node_starknet_receiver["Starknet receiver factory"]
  node_solana_program["Solana receiver program<br/>[lib.rs]"]
end

subgraph group_settlement["Payment settlement"]
  node_payment_route["Payment route<br/>[payment_routes.rs]"]
  node_payment_worker["Payment worker<br/>[payment_workers.rs]"]
end

subgraph group_keeper["Deposit operations"]
  node_transfer_orchestrator["Transfer poller<br/>[mod.rs]"]
  node_evm_transfer["EVM transfer worker<br/>[evm.rs]"]
  node_keeper_webhook["Webhook delivery<br/>[webhook.rs]"]
end

subgraph group_privacy["Stealth payments"]
  node_stealth_route["Stealth claim route<br/>[stealth_routes.rs]"]
  node_stealth_worker["Stealth workers<br/>[stealth_workers.rs]"]
  node_stealth_account["Stealth account"]
end

subgraph group_api["API and client"]
  node_api["Beanie API<br/>[main.rs]"]
  node_web_client["Browser client<br/>[stealth.js]"]
end

node_merchant(("Merchant"))
node_customer(("Customer"))
node_webhook_service(("Merchant webhook"))
node_starknet_rpc["Starknet RPC"]
node_lit["Lit TEE"]
node_paymaster["Gas paymaster"]

node_merchant -->|"requests lane"| node_api
node_api -->|"routes request"| node_create_route
node_create_route -->|"queues announce"| node_create_worker
node_create_worker -->|"announces receiver"| node_evm_receiver
node_create_worker -->|"announces receiver"| node_starknet_receiver
node_customer -->|"deposits funds"| node_evm_receiver
node_customer -->|"deposits funds"| node_starknet_receiver
node_customer -->|"deposits funds"| node_solana_program
node_customer -->|"submits payment"| node_api
node_api -->|"routes request"| node_payment_route
node_payment_route -->|"queues payment"| node_payment_worker
node_merchant -->|"configures chains"| node_transfer_orchestrator
node_transfer_orchestrator -->|"starts worker"| node_evm_transfer
node_evm_transfer -->|"queues delivery"| node_keeper_webhook
node_keeper_webhook -->|"posts signed deposit"| node_webhook_service
node_customer -->|"uses stealth flow"| node_web_client
node_web_client -->|"scans events"| node_starknet_rpc
node_web_client -->|"submits claim"| node_api
node_api -->|"routes claim"| node_stealth_route
node_stealth_route -->|"queues execution"| node_stealth_worker
node_stealth_worker -->|"requests cosignature"| node_lit
node_stealth_worker -->|"sponsors execution"| node_paymaster
node_stealth_worker -->|"broadcasts transaction"| node_starknet_rpc
node_stealth_worker -->|"executes sweep"| node_stealth_account

click node_api "https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/main.rs"
click node_create_route "https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/create_routes.rs"
click node_create_worker "https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/create_workers.rs"
click node_solana_program "https://github.com/cenwadike/open-beanie/blob/main/solana_beanie/programs/solana_beanie/src/lib.rs"
click node_payment_route "https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/payment_routes.rs"
click node_payment_worker "https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/payment_workers.rs"
click node_transfer_orchestrator "https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/transfer_workers/mod.rs"
click node_evm_transfer "https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/transfer_workers/evm.rs"
click node_keeper_webhook "https://github.com/cenwadike/open-beanie/blob/main/beanie_keeper/src/webhook.rs"
click node_stealth_route "https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/stealth_routes.rs"
click node_stealth_worker "https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/stealth_workers.rs"
click node_web_client "https://github.com/cenwadike/open-beanie/blob/main/beanie_api/public/scripts/stealth.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_create_route,node_create_worker,node_evm_receiver,node_starknet_receiver,node_solana_program toneBlue
class node_payment_route,node_payment_worker toneAmber
class node_transfer_orchestrator,node_evm_transfer,node_keeper_webhook,node_webhook_service toneMint
class node_stealth_route,node_stealth_worker,node_stealth_account toneRose
class node_api,node_web_client,node_merchant,node_customer,node_starknet_rpc,node_lit,node_paymaster toneIndigo
```

## Components

### Receiver provisioning

- [Announce route](https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/create_routes.rs): `beanie_api/src/create_routes.rs`
- [Announce worker](https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/create_workers.rs): `beanie_api/src/create_workers.rs`
- **EVM receiver factory**
- **Starknet receiver factory**
- [Solana receiver program](https://github.com/cenwadike/open-beanie/blob/main/solana_beanie/programs/solana_beanie/src/lib.rs): `solana_beanie/programs/solana_beanie/src/lib.rs`

### Payment settlement

- [Payment route](https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/payment_routes.rs): `beanie_api/src/payment_routes.rs`
- [Payment worker](https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/payment_workers.rs): `beanie_api/src/payment_workers.rs`

### Deposit operations

- [Transfer poller](https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/transfer_workers/mod.rs): `beanie_api/src/transfer_workers/mod.rs`
- [EVM transfer worker](https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/transfer_workers/evm.rs): `beanie_api/src/transfer_workers/evm.rs`
- [Webhook delivery](https://github.com/cenwadike/open-beanie/blob/main/beanie_keeper/src/webhook.rs): `beanie_keeper/src/webhook.rs`

### Stealth payments

- [Stealth claim route](https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/stealth_routes.rs): `beanie_api/src/stealth_routes.rs`
- [Stealth workers](https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/stealth_workers.rs): `beanie_api/src/stealth_workers.rs`
- **Stealth account**

### API and client

- [Beanie API](https://github.com/cenwadike/open-beanie/blob/main/beanie_api/src/main.rs): `beanie_api/src/main.rs`
- [Browser client](https://github.com/cenwadike/open-beanie/blob/main/beanie_api/public/scripts/stealth.js): `beanie_api/public/scripts/stealth.js`

### Other components

- **Merchant**
- **Customer**
- **Merchant webhook**
- **Starknet RPC**
- **Lit TEE**
- **Gas paymaster**

## Connections

- Merchant → Beanie API: requests lane
- Beanie API → Announce route: routes request
- Announce route → Announce worker: queues announce
- Announce worker → EVM receiver factory: announces receiver
- Announce worker → Starknet receiver factory: announces receiver
- Customer → EVM receiver factory: deposits funds
- Customer → Starknet receiver factory: deposits funds
- Customer → Solana receiver program: deposits funds
- Customer → Beanie API: submits payment
- Beanie API → Payment route: routes request
- Payment route → Payment worker: queues payment
- Merchant → Transfer poller: configures chains
- Transfer poller → EVM transfer worker: starts worker
- EVM transfer worker → Webhook delivery: queues delivery
- Webhook delivery → Merchant webhook: posts signed deposit
- Customer → Browser client: uses stealth flow
- Browser client → Starknet RPC: scans events
- Browser client → Beanie API: submits claim
- Beanie API → Stealth claim route: routes claim
- Stealth claim route → Stealth workers: queues execution
- Stealth workers → Lit TEE: requests cosignature
- Stealth workers → Gas paymaster: sponsors execution
- Stealth workers → Starknet RPC: broadcasts transaction
- Stealth workers → Stealth account: executes sweep
