Skip to main content

Configuration Sync

Synchronize your LLM Client configuration across multiple machines using cloud storage with optional encryption.

Overview

The sync feature allows you to:

  • Back up configuration to cloud storage
  • Share settings across machines
  • Encrypt sensitive data with AES256-GCM
  • Support multiple cloud providers

Quick Start

# 1. Configure cloud provider
lc sync configure s3 setup

# 2. Sync to cloud (with encryption)
lc sync to s3 --encrypted

# 3. Sync from cloud (on another machine)
lc sync from s3 --encrypted

Command: lc sync (alias: lc sy)

Subcommands

List Providers

lc sync providers
lc sy p

Shows supported cloud storage providers.

Configure Provider

# Interactive setup
lc sync configure <provider> setup
lc sy c <provider> s

# Show configuration
lc sync configure <provider> show
lc sy c <provider> sh

# Remove configuration
lc sync configure <provider> remove
lc sy c <provider> r

Sync Operations

# Sync to cloud
lc sync to <provider>
lc sy to <provider>

# Sync to cloud with encryption
lc sync to <provider> --encrypted
lc sy to <provider> -e

# Sync from cloud
lc sync from <provider>
lc sy from <provider>

# Sync from cloud with decryption
lc sync from <provider> --encrypted
lc sy from <provider> -e

Supported Providers

Amazon S3

Full S3 support with multiple configuration methods:

lc sync configure s3 setup

You'll be prompted for:

  • Bucket name
  • AWS region
  • Access key ID
  • Secret access key
  • Custom endpoint (optional)

2. Environment Variables

export LC_S3_BUCKET=your-bucket-name
export LC_S3_REGION=us-east-1
export AWS_ACCESS_KEY_ID=your-access-key
export AWS_SECRET_ACCESS_KEY=your-secret-key
export LC_S3_ENDPOINT=https://s3.amazonaws.com # Optional

3. Configuration File

Stored automatically after setup in sync.toml.

S3-Compatible Services

Configure custom endpoints for S3-compatible services:

Backblaze B2

lc sync configure s3 setup
# Endpoint: https://s3.us-west-004.backblazeb2.com

Cloudflare R2

lc sync configure s3 setup
# Endpoint: https://your-account-id.r2.cloudflarestorage.com

MinIO

lc sync configure s3 setup
# Endpoint: https://your-minio-server.com:9000

DigitalOcean Spaces

lc sync configure s3 setup
# Endpoint: https://your-region.digitaloceanspaces.com

What Gets Synced

All .toml configuration files in your config directory:

  • config.toml - Providers, API keys, defaults
  • mcp.toml - MCP server configurations
  • sync.toml - Sync provider settings
  • Any other .toml files

Note: Vector databases and logs are NOT synced.

Encryption

How It Works

When using --encrypted:

  1. You're prompted for a password
  2. Files are encrypted with AES256-GCM
  3. Each file gets unique salt and nonce
  4. Encrypted files get .enc extension
  5. Original structure is preserved

Encryption Details

  • Algorithm: AES256-GCM (authenticated encryption)
  • Key Derivation: PBKDF2-SHA256 with random salt
  • Security: Military-grade encryption
  • Password: Never stored, must remember

Example Workflow

# First machine - backup with encryption
lc sync to s3 --encrypted
Enter encryption password: ********
Confirm password: ********
✓ Encrypted config.toml
✓ Encrypted mcp.toml
✓ Uploaded 2 files to s3://your-bucket/lc-config/

# Second machine - restore with decryption
lc sync from s3 --encrypted
Enter decryption password: ********
✓ Downloaded 2 files from s3://your-bucket/lc-config/
✓ Decrypted config.toml
✓ Decrypted mcp.toml

Best Practices

1. Regular Backups

Set up a routine:

# Weekly backup
lc sync to s3 --encrypted

2. Password Management

  • Use a strong, memorable password
  • Store password in password manager
  • Same password needed for decryption

3. Version Control

Consider versioning in S3:

  • Enable bucket versioning
  • Allows rollback if needed
  • Track configuration history

4. Security

  • Always use --encrypted for sensitive data
  • Use IAM policies to restrict bucket access
  • Enable MFA for AWS account
  • Use dedicated sync credentials

Complete Setup Example

1. Create S3 Bucket

# Using AWS CLI
aws s3 mb s3://my-lc-config-backup
aws s3api put-bucket-versioning \
--bucket my-lc-config-backup \
--versioning-configuration Status=Enabled

2. Create IAM User

Create user with minimal permissions:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::my-lc-config-backup",
"arn:aws:s3:::my-lc-config-backup/*"
]
}
]
}

3. Configure LLM Client

lc sync configure s3 setup
# Enter bucket: my-lc-config-backup
# Enter region: us-east-1
# Enter access key: AKIA...
# Enter secret key: ********

4. Test Sync

# Backup
lc sync to s3 --encrypted

# Verify
aws s3 ls s3://my-lc-config-backup/lc-config/

# Restore (on another machine)
lc sync from s3 --encrypted

Troubleshooting

"Access Denied"

  1. Check AWS credentials:

    lc sync configure s3 show
  2. Verify bucket permissions

  3. Check bucket region matches configuration

"Bucket not found"

  1. Verify bucket name spelling
  2. Ensure bucket exists in specified region
  3. Check endpoint URL for S3-compatible services

"Decryption failed"

  1. Ensure using same password as encryption
  2. Check if files were encrypted
  3. Verify files weren't corrupted

"Network error"

  1. Check internet connection
  2. Verify firewall allows S3 access
  3. Try different region/endpoint

Advanced Usage

Selective Sync

Currently syncs all .toml files. For selective sync:

  1. Move files to temporary location
  2. Sync desired files
  3. Restore other files

Multiple Profiles

Use different buckets for different setups:

# Personal config
LC_S3_BUCKET=personal-lc lc sync to s3 -e

# Work config
LC_S3_BUCKET=work-lc lc sync to s3 -e

Automation

Create backup script:

#!/bin/bash
# backup-lc.sh
echo "Backing up LLM Client config..."
lc sync to s3 --encrypted
echo "Backup complete!"

Add to crontab for automatic backups:

# Daily at 2 AM
0 2 * * * /path/to/backup-lc.sh

Security Considerations

  1. API Keys: Stored in config files - always use encryption
  2. Passwords: Never stored - must remember or save securely
  3. Network: Uses HTTPS for all transfers
  4. Storage: Encrypted at rest if using --encrypted
  5. Access: Use principle of least privilege for cloud credentials

Next Steps

  • Set up your first sync provider
  • Enable encryption for sensitive data
  • Create a backup routine
  • Test restore process