Runtime layers
Browser extension path
The extension has four major runtimes:src/injected/index.ts: injects the browser wallet provider into pages.src/content/index.ts: bridges page messages into the extension.src/background/index.ts: handles persistent background actions, internal RPC, signing, secret access, and session state.src/App.tsxplussrc/components/: renders the wallet UI and approval screens.
src/components/extension/ApprovalCenter.tsx, src/extension/messages.ts, src/extension/approvalStorage.ts, and signing helpers in src/services/frost/signTransaction.ts.
Ceremony path
Threshold ceremonies use one of two relay adapters:| Relay | Source | Use |
|---|---|---|
| BroadcastChannel | src/services/relay/channelRelay.ts | Same-origin browser tabs, local testing, and demo flows. |
| WebSocket | src/services/relay/websocketRelay.ts and relay-server/src/server.ts | Cross-device ceremonies and server cosigner sessions. |
src/services/frost/dkgOrchestrator.tssrc/services/frost/signingOrchestrator.tssrc/services/frost/frostService.tscrates/vaulkyrie-frost-wasm/src/lib.rs
Relay server path
The relay server exposes:- WebSocket session creation, join, participant assignment, and room message forwarding in
relay-server/src/server.ts. - Session auth tokens and invite validation in
src/services/relay/sessionInvite.tsand server join handling. - Server cosigner registration and signing in
relay-server/src/cosigner.ts. - Encrypted server-local state in
relay-server/src/secureStorage.ts. - PQC wallet sponsorship helpers in
relay-server/src/pqcSponsor.ts.
On-chain path
The Rust workspace defines the on-chain protocol:- Account state:
programs/vaulkyrie-core/src/state.rs - Instruction parsing:
programs/vaulkyrie-core/src/instruction.rs - Transition validation:
programs/vaulkyrie-core/src/transition.rs - Processor handlers:
programs/vaulkyrie-core/src/processor.rs - PDA derivation and verification:
programs/vaulkyrie-core/src/pda.rs - Shared constants and message builders:
crates/vaulkyrie-protocol/src/lib.rs
crates/vaulkyrie-sdk/src/instruction.rs, crates/vaulkyrie-sdk/src/accounts.rs, and crates/vaulkyrie-sdk/src/pda.rs.