Commands at a glance
What the agent remembers
OpenSRE keeps durable knowledge across sessions so you never repeat yourself:- Who you are — your name, role, and how you like to work
- Your infrastructure — cluster names, naming conventions, known-flaky services
- Your repositories — owner/name, purpose, default branch, and repo-specific conventions
- Your preferences — report formats, notification choices, defaults
- Operational learnings — causes and lessons worth keeping
Multiple repositories
OpenSRE keeps one active repository per GitHub or GitLab context while retaining facts for many repositories. Naming a different repository makes it active for unqualified follow-up requests in that session; it does not delete or overwrite the repositories used earlier. Durable details are stored as separaterepository memories, one per repository, and remain available in later
sessions. A new session defaults the active target to the current workspace
checkout, while the other repository memories stay available for recall.
Saving memories
Talk normally — no special phrasing:Viewing and deleting memories
/memory forget prod-cluster-conventions, or ask the agent:
“forget what you know about the prod cluster”.
Where memories live
On a laptop, memories are plain markdown files under~/.opensre/memory/ — one
file per memory plus a generated MEMORY.md index. OpenSRE creates that folder
(and an empty index) the first time memory is used in a chat or via /memory.
They are stored locally and unencrypted.
Override the directory with OPENSRE_MEMORY_DIR when you need a custom path.
On a Slack or Discord silo, each member gets a private memory folder inside the
organization’s mounted context volume
(<org root>/users/<user_id>/memory/), not a shared host folder. Telegram
turns are unbound and stay host-global under the flat ~/.opensre/memory/
layout.
Every chat and action turn includes the stored facts (summaries plus bodies,
within a size budget) in prompts sent to your configured LLM provider. You can
open, edit, or delete the files directly at any time; the index rebuilds on the
next write.
Turning memory off
The per-turn extraction makes one lightweight LLM call when durable facts may
have appeared (coalesced across rapid turns) and saves at most five memories
per pass. On shell exit that pass runs to completion after resources are
released so durable facts are not dropped. Never share secrets or credentials
expecting them to be remembered — the memory ingestion path blocks obvious
tokens, passwords, private keys, and credential-shaped values, and redacts
matching spans before the extraction LLM call.
Gateway (Slack / Telegram / Discord)
On Slack and Discord, when org scope is bound, memory is per-user scoped — each member’s facts live under their ownusers/<id>/memory/ folder inside the
org volume, so one user’s memories cannot appear in another’s prompts or
channel replies. Telegram turns are unbound and stay host-global.
Because Telegram is host-global (and to keep memory off by default on shared
hosts), the Slack and Telegram gateway path is off by default; opt in
with OPENSRE_MEMORY_GATEWAY_ENABLED=1. Discord uses the same actor-scoped
storage layout when scoped; it is not gated by that opt-in flag today — use
OPENSRE_MEMORY_DISABLED=1 if you need memory off there.