Setup
/remote-sync setup in the interactive shell. On chat gateways, pass flags (no interactive prompts) — or use the CLI.
Or set env vars yourself:
OPENSRE_REMOTE_SYNC=1 (or enable it via opensre remote-sync setup).
Env vars override
~/.opensre/config.yml for that run. --region / --profile only work with AWS and Azure (profile = storage account); setup rejects them for other providers.
Every machine that should share history needs the same provider, store, and prefix (and for Vercel, a token for that store).
Sync
/remote-sync status and /remote-sync sync.
To run one full sync automatically after an interactive shell session exits:
opensre
session remains manual-only. If the automatic sync fails, OpenSRE prints a
warning without changing the shell’s exit status.
Providers
AWS / S3 — private bucket. Uses your normal AWS credentials (AWS_*, profile, or SSO). Uploads use server-side encryption (AES256). Needs s3:ListBucket, s3:GetObject, and s3:PutObject on your prefix. Sync never deletes objects, so s3:DeleteObject is not required.
Google Cloud Storage — private bucket. Set OPENSRE_REMOTE_SYNC_PROVIDER=gcs. Credentials come from Application Default Credentials (gcloud auth application-default login). Needs storage.objects.list, storage.objects.get, storage.objects.create, and storage.objects.delete (delete is required to replace an object even though sync never removes keys). A bucket-scoped roles/storage.objectUser binding covers all four.
Vercel Blob — private store. Set BLOB_READ_WRITE_TOKEN. OPENSRE_REMOTE_SYNC_BUCKET is the store name/id for status.
Azure Blob Storage — private container. Set OPENSRE_REMOTE_SYNC_PROVIDER=azure, OPENSRE_REMOTE_SYNC_BUCKET to the container name, and OPENSRE_REMOTE_SYNC_PROFILE to the storage account name. Auth uses ambient Azure credentials (az login, Managed Identity, or AZURE_*). The principal needs Storage Blob Data Contributor on the account (plain Contributor is not enough).
S3-compatible (MinIO / R2 / Spaces) — set OPENSRE_REMOTE_SYNC_PROVIDER=s3compat and OPENSRE_REMOTE_SYNC_ENDPOINT_URL to the custom endpoint (or AWS_ENDPOINT_URL_S3). Path-style addressing is enabled for MinIO. Use the same ambient S3 credentials as AWS.
Skip some paths
By default every session and memory file syncs. To hold some back:~/.opensre/config.yml:
sessions/… or memory/… (case-sensitive). * can cross folders. Excluded paths are skipped both ways (not uploaded, not downloaded). Patterns starting with ! are rejected. Sync never deletes from the store.
Conflicts
Sync pulls first, then pushes.- Only on one side → copied to the other
- Both changed → newer write wins
- Nothing is deleted on either side