Skip to main content
opensre keeps everything on your laptop by default. Turn on remote sync and it also mirrors your conversation history and memory to an object store you own, so a second machine picks up where the first left off. Your cloud credentials are read from the usual places — environment, profile, SSO session. opensre never stores them.

What is mirrored

Credentials stay on the machine. On a second laptop you run the integration setup again; everything else is already there.

Turn it on

Naming a bucket is not enough on its own — OPENSRE_REMOTE_SYNC has to be set too, so a bucket variable left over from another tool never starts uploading. You can also persist settings under remote_sync in ~/.opensre/config.yml (enabled, bucket, provider, prefix, …). Environment variables still win for a single run.
Every machine that should share your history needs the same provider, bucket, and prefix. Change the prefix only when you want a separate, isolated set of conversations — a different prefix is a different history, not a backup of the same one.
All surfaces share one entry point, platform/filestorage/operations.py, with the wording in messages.py:
This mirrors a personal machine. Turns that belong to an organization — Slack and Discord, which bind an org principal — are refused, because object keys carry no organization or member id and every member would otherwise share the same keys. Organization history already persists through the mounted context root (OPENSRE_CONTEXT_ROOT); it does not need this.
Check what would move before moving it:
Then sync:

Providers

The sync engine talks only to a small object-store interface. Amazon S3 is the built-in backend today (OPENSRE_REMOTE_SYNC_PROVIDER=aws, the default). Other clouds (GCS, Azure, …) are community additions: implement ObjectStore, call register_object_store("<name>", factory), and set OPENSRE_REMOTE_SYNC_PROVIDER — the engine, CLI, and REPL do not change.

AWS / S3 (default)

Any private bucket works. Uploads request server-side encryption, so a bucket that requires encryption accepts them unchanged. Minimum permissions on the prefix you use:
s3:DeleteObject is not needed — sync never deletes anything.

The store

Keep the store private. It holds your incident conversations and everything opensre has remembered about your systems.

How conflicts resolve

Sync pulls first, then pushes. A file that exists on only one side is copied to the other. When both sides changed the same file, the more recently written one wins. Nothing is ever deleted, on either side. A machine that has been offline for a month cannot erase work done elsewhere — worst case it re-uploads an old copy under the same name, and the newer one wins on the next sync. Deleting a session or a memory on one machine does not remove it from the store or from your other machines. Delete it in the store too if you want it gone everywhere.