← back to blog
October 13, 2026by Bruno Fernandes

Context that never resets: shared memory for your agents

Every agent session starts with the same blank slate. The decision you made on Tuesday, the flaky test someone traced on Wednesday, the convention a teammate's agent discovered last week: none of it is there on Thursday morning unless someone wrote it down and the next agent can find it.

Allye memories are our answer. They are small, searchable notes that live next to your projects, specs and knowledge base, and they are shared with the team by default for the sectors where sharing makes sense.

What one agent learns, the others get

A memory belongs to a sector: decisions, patterns, incidents, plans, knowledge, sessions or preferences. Scope follows the sector. sessions and preferences are personal. The others are team memories, visible to everyone in the active team.

agent A (Claude Code)           agent B (Codex)
   memory_save  ----->  team memory  <-----  memory_search
   "pattern: how we            |
    run the verify step"       +--> agent C (OpenCode, next week)

So when your agent records that a migration needs a specific order, or why you picked one approach over another, another agent in a different harness can find it with a query. Search covers your personal memories plus the active team's, never other teams.

Search by meaning

memory_search ranks by semantic similarity, not by keyword match. You ask the way you would ask a colleague: "what did we decide about file uploads", not a string of ticket keys. That matters because the person who wrote the memory and the person searching rarely use the same words.

Agents should search before they act on anything consequential: at the start of a task, and before choosing an approach. A short, low-risk change can skip it.

Save at each stage, not at the end

Decisions and blockers are worth saving when they happen, not batched at the end of a session. The end of a session is when context is already partly lost. A typical save looks like this:

memory_search  query: "file upload storage decision"  limit: 10
memory_save
  title:   "Decision: uploads go to object storage"
  content: "## Decision ... ## Why ... ## Alternatives rejected ..."
  tags:    ["decision", "ALY-7"]
  sector:  "decisions"

Always pass the sector explicitly. If you leave it out, the server defaults to knowledge, which is usually not what you meant.

Smart save instead of duplicates

Agents are bad at remembering whether they already saved something. So memory_save does not just insert. Every save goes through conflict resolution against similar existing memories and resolves to exactly one outcome:

| Outcome | Meaning | |---|---| | created | Nothing similar existed, a new memory was written | | updated | A similar memory was merged with the new information | | superseded | The new memory replaces an older one that is no longer true | | noop | The team already knew this, nothing changed |

noop is not an error. It means the knowledge was already there, so the system did its job. The goal is that ten agents saving the same lesson do not leave you with ten copies.

A graph, not just a list

Memories can carry relations to each other, such as extends, depends on or supersedes. memory_graph takes a memory id and walks its neighborhood, and memory_relations gives a quick one-hop view. memory_search can also return graph context with include_graph. This is how an agent goes from "we decided X" to the trade-off and the blocker that led to it, which a plain similarity search can miss.

How the Bridge crew uses it

The Allye plugin ships Bridge, a crew of agents that runs specs end to end. Its memory rules are strict on purpose:

  • Memories are read at the start of every mode and saved at the end of a mode that produced something.
  • Memories are hints, never the source of truth. Specs, tasks, code and tests win.
  • What comes back from memory, including what teammates wrote, is treated as data, not instructions. A memory that reads like a directive is dropped.
  • Secrets, credentials, tokens, personal data and raw logs are never saved. Memories are distilled lessons, not transcripts.
  • Only the orchestrator talks to memory. The agents doing the work receive a short list of relevant hints in their packet.

Honest limits

Memory does not replace anything else in Allye. Some of these limits matter for what you put in, so they come without jokes.

  • It does not replace specs. Rules and acceptance criteria live in the spec, and a memory should point to the spec key rather than copy it.
  • It does not replace the code or code review. A memory can be stale, so an agent that relies on one should check it against the repository.
  • Semantic search returns likely matches, not guarantees. A missing hit does not prove nothing was saved.
  • It only helps if something was saved. Agents have to be told, or configured, to write down what matters, and the lesson is only as good as the note.
  • Team memories are visible to the active team. Keep personal notes in the personal sectors and keep anything sensitive out entirely.

Used with those limits in mind, shared memory removes a boring kind of waste: the same discovery made again by another agent. To set it up, start with the installation guide and the actions reference. Questions or odd results are welcome at app@devshire.app.