Documentation Index
Fetch the complete documentation index at: https://v2.spacedrive.com/llms.txt
Use this file to discover all available pages before exploring further.
CLI: Library Sync Setup Commands
Overview
After pairing two devices, use these commands to set up library synchronization between them.
Prerequisites
- Devices must be paired - Use
sd network pair generate and sd network pair join first
- At least one library exists - Use
sd library list to see available libraries
- Networking must be running - Check with
sd network status
- Know the device IDs - Use
sd network devices to list paired devices
Commands
0. List Paired Devices (Get Device IDs)
First, you need to know the device ID of the paired device.
Options:
--connected - Show only currently connected devices
Example:
$ sd network devices
Paired Devices (2 total, 1 connected):
─────────────────────────────────────────────────────
Name: Bob's MacBook
ID: 550e8400-e29b-41d4-a716-446655440000
Type: Desktop
OS Version: 1.0
App Version: 2.0.0
Status: Connected
Last Seen: 2025-10-05 03:30:00
Name: Alice's iPhone
ID: e1054ba9-2e8b-4847-9644-a7fb764d4221
Type: Mobile
OS Version: 1.0
App Version: 2.0.0
Status: Paired
Last Seen: 2025-10-04 18:45:00
JSON Output:
$ sd network devices --output json
{
"devices": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Bob's MacBook",
"device_type": "Desktop",
"os_version": "1.0",
"app_version": "2.0.0",
"is_connected": true,
"last_seen": "2025-10-05T03:30:00Z"
}
],
"total": 2,
"connected": 1
}
Filter Connected Only:
$ sd network devices --connected
Paired Devices (1 total, 1 connected):
─────────────────────────────────────────────────────
Name: Bob's MacBook
ID: 550e8400-e29b-41d4-a716-446655440000
Status: Connected
1. Discover Remote Libraries
Discover what libraries are available on a paired device.
sd library sync-setup discover <DEVICE_ID>
Arguments:
<DEVICE_ID> - UUID of the paired device
Example:
$ sd library sync-setup discover 550e8400-e29b-41d4-a716-446655440000
Device: Bob's MacBook (550e8400-e29b-41d4-a716-446655440000)
Online: true
Remote Libraries (2):
─────────────────────────────────────────
Name: My Library
ID: 3f8cb26f-de79-4d87-88dd-01be5f024041
Created: 2025-01-01 10:30:00
Entries: 5000
Locations: 3
Devices: 1
Size: 10737418240 bytes
Name: Work Documents
ID: 7a9c2d1e-5f84-4b23-a567-1234567890ab
Description: Work files and projects
Created: 2025-01-15 14:20:00
Entries: 1200
Locations: 2
Devices: 1
Size: 2147483648 bytes
JSON Output:
$ sd library sync-setup discover <DEVICE_ID> --output json
{
"device_id": "550e8400-e29b-41d4-a716-446655440000",
"device_name": "Bob's MacBook",
"is_online": true,
"libraries": [
{
"id": "3f8cb26f-de79-4d87-88dd-01be5f024041",
"name": "My Library",
"description": null,
"created_at": "2025-01-01T10:30:00Z",
"statistics": {
"total_entries": 5000,
"total_locations": 3,
"total_size_bytes": 10737418240,
"device_count": 1
}
}
]
}
2. Setup Library Sync
Configure library sync between local and remote devices.
sd library sync-setup setup \
--local-library <LOCAL_LIBRARY_ID> \
--remote-device <REMOTE_DEVICE_ID> \
[--remote-library <REMOTE_LIBRARY_ID>] \
[--action <ACTION>] \
[--leader <LEADER>] \
[--local-device <LOCAL_DEVICE_ID>]
Required Arguments:
--local-library - UUID of your local library
--remote-device - UUID of the paired device
Optional Arguments:
--remote-library - UUID of the remote library to sync with (optional for register-only)
--action - Sync action type (default: register-only)
register-only - Just register devices (Phase 1)
merge-into-local - Future (Phase 3)
merge-into-remote - Future (Phase 3)
create-shared - Future (Phase 3)
--leader - Which device is the sync leader (default: local)
local - This device is the leader
remote - Remote device is the leader
--local-device - Override auto-detected local device ID
Example:
$ sd library sync-setup setup \
--local-library 3f8cb26f-de79-4d87-88dd-01be5f024041 \
--remote-device 550e8400-e29b-41d4-a716-446655440000 \
--remote-library 7a9c2d1e-5f84-4b23-a567-1234567890ab \
--action register-only \
--leader local
✓ Library sync setup successful
Local library: 3f8cb26f-de79-4d87-88dd-01be5f024041
Remote library: 7a9c2d1e-5f84-4b23-a567-1234567890ab
Devices successfully registered for library access
Complete Workflow Example
Here’s a complete workflow for pairing devices and setting up library sync:
Device A (CLI Daemon)
# 1. Start the daemon
$ sd start --foreground
# 2. Generate a pairing code
$ sd network pair generate
Pairing code: word1 word2 word3 word4 word5 word6 word7 word8 word9 word10 word11 word12
Session: 2369763d-e205-a344-6341-dbfa2ec8a709
Expires at: 2025-10-05 03:28:44
# 3. Wait for Device B to join...
# (Pairing completes)
# 4. List paired devices (get device IDs)
$ sd network devices
Paired Devices (1 total, 1 connected):
─────────────────────────────────────────────────────
Name: iOS Device
ID: e1054ba9-2e8b-4847-9644-a7fb764d4221
Type: Mobile
Status: Connected
# 5. List local libraries
$ sd library list
- 3f8cb26f-de79-4d87-88dd-01be5f024041 /Users/alice/Library/Application Support/spacedrive/libraries/My Library.sdlibrary
# 6. Discover libraries on Device B (iOS)
$ sd library sync-setup discover e1054ba9-2e8b-4847-9644-a7fb764d4221
Device: iOS Device (e1054ba9-2e8b-4847-9644-a7fb764d4221)
Online: true
Remote Libraries (1):
─────────────────────────────────────────
Name: My Library
ID: d9828b35-6618-4d56-a37a-84ef03617d1e
Entries: 0
Locations: 0
Devices: 1
# 7. Set up library sync
$ sd library sync-setup setup \
--local-library 3f8cb26f-de79-4d87-88dd-01be5f024041 \
--remote-device e1054ba9-2e8b-4847-9644-a7fb764d4221 \
--remote-library d9828b35-6618-4d56-a37a-84ef03617d1e \
--leader local
✓ Library sync setup successful
Local library: 3f8cb26f-de79-4d87-88dd-01be5f024041
Remote library: d9828b35-6618-4d56-a37a-84ef03617d1e
Devices successfully registered for library access
# 8. Verify devices are registered
$ sd library info
# You should see the remote device in the devices list
Device B (iOS)
# 1. Enter pairing code from Device A in the app
# 2. After pairing completes, discover Device A's libraries
# (Use iOS UI or similar CLI commands when running on device)
# 3. Select libraries and set up sync
# (Use iOS UI for library selection)
All commands support --output flag:
# Human-readable (default)
$ sd library sync-setup discover <DEVICE_ID>
# JSON output
$ sd library sync-setup discover <DEVICE_ID> --output json
# YAML output
$ sd library sync-setup discover <DEVICE_ID> --output yaml
Common Use Cases
Scenario 1: Simple Two-Device Setup
You have a desktop and a phone, both with “My Library” auto-created.
# On Desktop
sd pair generate
# Share code with phone
# After phone joins:
sd library sync-setup discover <PHONE_DEVICE_ID>
sd library sync-setup setup \
--local-library <DESKTOP_LIBRARY_ID> \
--remote-device <PHONE_DEVICE_ID> \
--remote-library <PHONE_LIBRARY_ID>
Scenario 2: Multiple Libraries
You want to choose which libraries to sync.
# Discover what libraries the remote device has
sd library sync-setup discover <REMOTE_DEVICE_ID>
# Set up sync for specific library pair
sd library sync-setup setup \
--local-library <PHOTOS_LIBRARY_ID> \
--remote-device <REMOTE_DEVICE_ID> \
--remote-library <THEIR_PHOTOS_LIBRARY_ID>
# Optionally set up another pair
sd library sync-setup setup \
--local-library <WORK_LIBRARY_ID> \
--remote-device <REMOTE_DEVICE_ID> \
--remote-library <THEIR_WORK_LIBRARY_ID>
Scenario 3: One-Way Registration
Register your device in their library without syncing data.
sd library sync-setup setup \
--local-library <MY_LIBRARY_ID> \
--remote-device <THEIR_DEVICE_ID> \
--action register-only
# No --remote-library specified
Troubleshooting
”Device not paired"
Error: Device must be paired before setting up library sync
Solution:
1. Check pairing status: sd pair status
2. Pair devices if needed: sd pair generate / sd pair join
3. Retry sync setup after pairing completes
"Device offline"
Device: Bob's MacBook (550e8400-e29b-41d4-a716-446655440000)
Online: false
No libraries found on remote device
Solution:
1. Ensure remote device daemon is running
2. Check network connectivity
3. Verify devices can discover each other (mDNS)
4. Retry when device comes online
"Library not found"
Error: Library not found: <UUID>
Solution:
1. List local libraries: sd library list
2. Verify library ID is correct
3. Create library if needed: sd library create <NAME>
"Context not available”
Error: Context not available for library operations
Solution:
1. Restart the daemon: sd restart
2. Wait for initialization to complete
3. Check logs for networking initialization errors
Integration with Other Commands
List Paired Devices
# See all paired devices with details
$ sd network devices
Paired Devices (2 total, 1 connected):
Name: Bob's MacBook
ID: 550e8400-e29b-41d4-a716-446655440000
Status: Connected
# See only connected devices
$ sd network devices --connected
# Check network status summary
$ sd network status
Networking: running
Paired: 2 | Connected: 1
Verify Registration
After setup, the remote device should appear in your library’s device list:
# Get library info (when UI supports it)
$ sd library info
# Device list will include the remote device
Advanced Usage
Custom Device ID
If you need to override the auto-detected local device ID:
sd library sync-setup setup \
--local-library <LIBRARY_ID> \
--remote-device <REMOTE_DEVICE_ID> \
--local-device <CUSTOM_LOCAL_DEVICE_ID> \
--leader local
Specify Remote as Leader
If the remote device should be the sync leader:
sd library sync-setup setup \
--local-library <LIBRARY_ID> \
--remote-device <REMOTE_DEVICE_ID> \
--remote-library <REMOTE_LIBRARY_ID> \
--leader remote
Future Commands (Phase 3)
When full sync is implemented, additional actions will be available:
# Merge remote library into local
sd library sync-setup setup \
--local-library <LOCAL_ID> \
--remote-device <DEVICE_ID> \
--remote-library <REMOTE_ID> \
--action merge-into-local \
--leader local
# Merge local library into remote
sd library sync-setup setup \
--local-library <LOCAL_ID> \
--remote-device <DEVICE_ID> \
--remote-library <REMOTE_ID> \
--action merge-into-remote \
--leader remote
# Create new shared library
sd library sync-setup setup \
--remote-device <DEVICE_ID> \
--action create-shared \
--leader local
See Also
- Pairing:
sd network pair --help
- Devices:
sd network devices --help
- Libraries:
sd library --help
- Networking:
sd network --help
- Design:
docs/core/LIBRARY_SYNC_SETUP.md
Quick Command Reference
# Pairing
sd network pair generate # Generate pairing code
sd network pair join <CODE> # Join with code
sd network pair status # Show pairing sessions
# Devices
sd network devices # List all paired devices
sd network devices --connected # List connected devices only
# Library Sync Setup
sd library sync-setup discover <DEVICE_ID>
sd library sync-setup setup --local-library <ID> --remote-device <ID> [OPTIONS]
# Libraries
sd library list # List local libraries
sd library info # Show library details