Architecture
Understand how clients, BeamCore, orchestrators, workers, and validators connect, and where your data travels.
Beam separates coordination from delivery. It has the five roles described in What is Beam?: clients describe transfers, BeamCore coordinates them, orchestrators and their workers move the bytes, and validators reward delivery. This page describes how they connect.
Network Topology
Coordination and data are separate. BeamCore assigns work but never carries
payload: bytes move directly between the workers and your storage. Orchestrators
and workers are paid in $TAO through metagraph weights set by validators,
which is what keeps them competing for your transfers.
Roles
| Role | Run by | Responsibility |
|---|---|---|
| Client | You | Describes transfers and signs access to its own storage |
| BeamCore | Beam | Accepts transfers, assigns chunks, tracks progress, and records delivery |
| Orchestrator | Independent operator | Runs a pool of workers and competes for work |
| Worker | Independent operator | Moves chunks between your source and destination |
| Validator | Bittensor validator | Verifies delivery and sets the weights that share out rewards |
How a client reaches Beam
Clients create transfers with an SDK or from a Beam Studio workflow. The SDK prepares the transfer, signs chunk-scoped access to your storage in your own process, and hands the transfer to BeamCore. Your storage credentials never leave that process. Every client authenticates with an API key from the Console.
To read the status of your transfers from any language, call the BeamCore HTTP
API at https://beamcore.b1m.ai; see API Reference. It
reads transfers; it does not create them.
How work is delivered
Beam assigns chunks to orchestrators that compete on measured delivery performance, and each orchestrator hands its chunks to workers in its pool. If a participant stalls or fails, Beam reassigns its chunks automatically; your transfer continues without action from you.
Data Plane
Data never passes through BeamCore. Each worker reads its chunk from the source and writes it to the destination, using only the short-lived, chunk-scoped access the SDK signed. This keeps BeamCore lightweight and prevents it from becoming a bandwidth bottleneck.