Why Company Wallets
- Keys never leave the enclave. Signing happens inside AWS Nitro TEEs; only signatures are returned.
- Deny-by-default policies. CEL rules evaluated in-enclave control recipients, contracts, selectors, chains, and values.
- Multi-party approval. Require N-of-M consensus (or root quorum) before sensitive activities complete.
- Server-first integration. API keys +
@0xkey-io/sdk-server/ Go SDK — no end-user Auth Proxy dependency. - Custodial send. Build, policy-check, sign, and broadcast on EVM, Solana, and Tron in one activity.
- Enterprise gas sponsorship. Platform paymaster / fee-payer on supported chains (Enterprise plan).
- Import / export. HPKE-protected wallet and key migration without plaintext key exposure.
- Verifiable TEE. Remote attestation and boot/app proofs for independent verification.
How it works
Your backend authenticates with an API key. Inside the enclave, the policy engine evaluates the request. If allowed (and any required approvers have voted), the signer produces a signature or the coordinator completes a custodial send. Private keys never leave the TEE.Access control model
Company Wallets use a parent organization (sub-organizations for tenant isolation). Within that org you define:- Users — human operators and API-only service accounts
- Tags — role groups (e.g.
deployer,treasury-ops,sweeper) - Policies — CEL
effect+condition+ optionalconsensus - Root quorum — threshold for org-level sensitive changes
Company Wallets vs Embedded Wallets
Building with 0xkey
- Company Wallets quickstart — API key → wallet → sign / send
- Integration guide — policies, consensus, webhooks
- Policy templates — treasury 2-of-N, allowlists, agent deny
- Remote attestation — production verification checklist
Use cases
- Payment orchestration — sweeps, payouts, sponsored sends
- Treasury operations — multi-party approvals for high-value moves
- Agent-restricted signing — narrow automation with deny-by-default
SDKs
- TypeScript:
@0xkey-io/sdk-server - Go: sdk-go examples (
wallets,signing,transaction_management,delegated_access)