Skip to main content
By default OpenSRE keeps everything on your machine. Turn on remote sync to copy conversations and memory to a private store you own, so another laptop can continue where you left off. Credentials and API keys stay local. You still run integration setup on each new machine.
Use a private store. It can hold incident chats and system details.

Setup

In the interactive shell, run /remote-sync setup to open the editable form. Choose a provider and enter the required bucket, container, or store name. Provider defaults to aws. Optional settings contains the prefix (default opensre), provider-supported region/profile fields (optional, using ambient configuration when empty), and the enabled switch (default Yes for new setups). Existing stored settings and supplied flags prefill the form. Changing the provider updates its fields and credential guidance. Save settings writes ~/.opensre/config.yml; Cancel, Esc from review, or Ctrl-C saves nothing. Validation errors keep your draft editable. Setup saves configuration only: it does not verify access, create a store, or transfer files. Use a private store. External CLI commands (opensre remote-sync setup) and chat gateways use flags only, even on a TTY. Missing --bucket returns an actionable error without prompting or saving. Provider is optional and defaults to aws; for example, opensre remote-sync setup --bucket my-opensre-bucket saves directly. Complete REPL flag commands also save without opening the form. For example:
A flag missing its value is rejected before the form opens or anything is saved. --prefix= uses the default prefix. setup --disabled only turns sync off, keeping the stored destination; to save new settings while disabled, also supply --bucket (and optionally --provider). Credentials stay in the provider’s ambient environment, not in this form or config file. Environment variables still override saved settings for a run. Or set env vars yourself:
A bucket name alone does nothing — you must also set 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

In the shell: /remote-sync status and /remote-sync sync. To run one full sync automatically after an interactive shell session exits:
Run setup first. The flag applies only to that invocation; a normal opensre session remains manual-only. If the automatic sync fails, OpenSRE prints a warning without changing the shell’s exit status.
Remote sync is for a personal machine. Org-bound Slack/Discord turns are refused — those already persist under the org context root.

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:
Or in ~/.opensre/config.yml:
If the env var is set, it replaces the config list for that run (it does not merge). Clearing the env var to empty does not turn exclusions off — use this instead:
Patterns match keys like 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
Deleting a session on one laptop does not remove it from the store or other machines. Delete the object in the store if you want it gone everywhere.