Packages
Every TypeScript package, its purpose, and its entry points.
Dependency graph: sdk → {core, protocol, relay-client, transfer-manager, webrtc-transport}; transfer-manager → {core, protocol, relay-client, webrtc-transport}; webrtc-transport → {protocol, relay-client};
relay-client → {core, protocol}. Each builds to dist/ via tsc.
@repo/core
Pure, platform-agnostic domain and crypto logic. No React/Next/Expo/RN
dependencies; Uint8Array only.
- Domain types:
EncryptedShard,FileId,KeyEnvelope,Shard, etc. - Sharding:
SHARD_SIZE_BYTES,splitIntoShards,reconstructFromShards. - Crypto:
encryptShard,decryptShard,hashShard,generateFileEncryptionKey,sealFekForRecipient,openFekEnvelope, Ed25519↔X25519 helpers.
See Data formats.
@repo/protocol
Canonical wire protocol: zod schemas plus generated JSON Schema read by Go and Rust. See Protocol overview.
@repo/sdk
The single client implementation shared by web and native, with platform differences injected through adapter interfaces. See SDK.
@repo/relay-client
A thin client for a Storage Node's local HTTP listener and the Relay WebSocket:
NodeClient, fetchAdvertisement, parsePairingUrl, RelayWsClient, device
identity helpers.
@repo/webrtc-transport
A WebRTC abstraction: peer connection, data channels, shard transfer, and both local (Path A) and Relay (Path B) signaling.
@repo/transfer-manager
Cross-path transfer orchestration: path selection, fallback chain, path caching, local queue, concurrency pool, and repair. See the Transfer Manager spec.
@repo/ui
Shared design system (Tailwind v4, CSS-first) ported from the Figma prototype.
Web-only; tokens.css is the single source of theme tokens.
Tooling packages
@repo/eslint-config and @repo/typescript-config hold shared lint and
TypeScript configuration.