Overview
Federation uses Dolt’s distributed version control capabilities to sync issue data between independent teams or locations. Key benefits:- Peer-to-peer: No central server required; each town is autonomous
- Database-native versioning: Built on Dolt’s version control, not file exports
- Flexible infrastructure: Works with DoltHub, S3, GCS, local paths, or SSH
- Data sovereignty: Configurable tiers for compliance (GDPR, regional laws)
Prerequisites
- Dolt backend: Federation requires the Dolt storage backend (the only supported backend)
Configuration
Enable Federation-Compatible Sync
Edit.beads/config.yaml or ~/.config/bd/config.yaml:
Data Sovereignty Tiers
| Tier | Description | Use Case |
|---|---|---|
| T1 | No restrictions | Public data |
| T2 | Organization-level | Regional/company compliance |
| T3 | Pseudonymous | Identifiers removed |
| T4 | Anonymous | Maximum privacy |
Adding Federation Peers
Usebd federation add-peer to register remote peers:
Peer Name Rules
- Must start with a letter
- Alphanumeric, dash, and underscore only
- Maximum 64 characters
Supported Endpoint Formats
| Format | Example | Description |
|---|---|---|
| DoltHub | dolthub://org/repo | DoltHub hosted repository |
| Google Cloud | gs://bucket/path | Google Cloud Storage |
| Amazon S3 | s3://bucket/path | Amazon S3 |
| Local | file:///path/to/backup | Local filesystem |
| HTTPS | https://host/path | HTTPS remote |
| SSH | ssh://host/path | SSH remote |
| Git SSH | git@host:path | Git SSH shorthand |
Examples
Credentials
Peers configured with--user (and optionally --password, otherwise
prompted interactively) store SQL credentials AES-256 encrypted, locally.
Stored credentials are used automatically during sync:
JSON Output
For scripting, use the--json flag:
Verify Configuration
List configured peers:Syncing with Peers
Usebd federation sync to pull from and push to peer towns, and
bd federation status to check sync state without transferring data.
--strategy, a sync that hits merge conflicts pauses and reports the
conflicting tables for manual resolution instead of auto-resolving.
Topologies
| Pattern | Description | Use Case |
|---|---|---|
| Hub-spoke | Central hub, satellites sync to hub | Team with central coordination |
| Mesh | All peers sync with each other | Decentralized collaboration |
| Hierarchical | Tree of hubs | Multi-team organizations |
Architecture Notes
How It Works
- Each workspace has its own Dolt database
add-peerregisters a Dolt remote (similar togit remote add)bd federation syncpushes and pulls commits between peers- Conflict resolution follows the configured strategy
Multi-Repo Support
Issues track theirSourceSystem to identify which federated system created
them. This enables proper attribution and trust chains across organizations.
Connectivity
Remote connectivity is validated on first push/pull operation, not when adding the peer. This allows configuring remotes before infrastructure is ready.Planned Features
The following operation has infrastructure support but is not yet exposed as a command:bd federation push <peer>/bd federation pull <peer>- single-direction sync with one peer.bd federation syncalready covers the bidirectional case.
Troubleshooting
”requires direct database access”
Federation commands require the Dolt backend with direct database access. Ensure you have the Dolt backend configured for federation operations.”peer already exists”
A peer with that name is already configured. Use a different name or check existing peers withbd federation list-peers.
Invalid endpoint format
Ensure your endpoint matches one of the supported formats above. The scheme must be one of:dolthub://, gs://, s3://, file://, https://, ssh://,
or git SSH format (git@host:path).
General health check
Reference
- Configuration: See Configuration for all federation settings
- Source:
cmd/bd/federation.go - Storage interfaces:
internal/storage/versioned.go - Dolt implementation:
internal/storage/dolt/store.go