Private rails for onchain assets.
Bermuda is a drop-in privacy and compliance layer for wallets, institutions and any EVM app, with every transfer screened against issuer policy. No contract changes, no new chain.
- AML
- Sanctions
- Eligibility
- Geography

Problem
How it works
Private for the market. In control for the issuer.
Public tokens in
Shield
Enforce
Control
Use it privately

Native tokens in
USDC, EURC, tokenized funds. No wrapping, no new chain.
Policy on every transfer
Sanctions, limits and allow lists run inside the private transfer.
Issuer powers, per user
Freeze, clawback and a viewing key. Private to everyone else.
Compliance by construction
Screened at entry. Checked at every step.
Screened
At the door
Funds are checked against issuer policy before they enter.
Enforced
On every transfer
The issuer's rules run inside each private transfer.
Provenance
With the asset
History travels with the asset. No central database.
Disclosed
To whom it's owed
Auditors see what they are entitled to, nothing more.
Platform
Built into the stacks that hold the money.
Wallets
A private account inside the wallet
Custodians
Confidential custody and settlement
Banks
On-prem, in the bank's own stack
For institutions
Institutional rails, private by default.
Settlement
Atomic DvP, PvP, DvD
Both legs settle together or both refund. No custodian holds a leg.
Trading
Repo and OTC
Settled atomically. Size and counterparty stay confidential.
Custody
Account recovery
Recover access through policy, without exposing balances.
Execution
Confidential DeFi
Lend, swap and earn onchain, within issuer policy.
For builders
One SDK. Ship privacy in days.
Wallets and neobanks
Every issuer's assets, one integration
Issuers
Rules set once, enforced everywhere
Any EVM chain
Ethereum, Base, Arbitrum
Smart accounts
Safe, passkeys, EOAs. Gasless.
import { init } from '@bermuda/sdk'
const sdk = init('base')
// bermuda account
const account = await sdk.account({ signer })
// private, gasless transfer
const tx = await sdk.transfer({
spender: account,
token: sdk.config.USDC,
amount: 1_000_000_000n,
to: recipient,
})
await sdk.relay(tx)
Contact
Bring compliant privacy to your stack.
We are integrating with wallets, custodians, banks and issuers now.



