Per-agent memory protocol for multi-agent systems
Project description
eachmind
Per-agent memory protocol for multi-agent systems
The problem: shared memory = shared perspective = no real team cognition. But fully isolated memory = no collaboration, no learning from each other.
Problem Statement
Current agent swarms share a single memory system. Every agent draws from the same pool of context, producing the same perspective. This creates the illusion of collaboration — agents divide tasks but never truly think differently from each other. Shared memory = shared perspective = no real team cognition.
The opposite — fully isolated agents — breaks collaboration entirely. Agents cannot learn from each other, cannot build on shared experience, and cannot develop institutional knowledge over time.
eachmind solves this by giving each agent its own memory — privately encoded, individually shaped — while defining a protocol for what gets selectively shared, when, and how. Agents develop genuine perspectives. Teams develop genuine collective intelligence.
What It Is
A standalone, framework-agnostic Python library that defines how memory is stored, differentiated, and selectively shared across agents in a multi-agent system. It is a memory protocol — not an agent framework, not a task runner. Any agent system can adopt it.
Core Primitives
| Primitive | Description |
|---|---|
| PrivateMemory | Each agent's own store. Encoded from its perspective. Never automatically shared. |
| SharedMemory | What agents explicitly publish to the collective. Opt-in, not default. |
| MemoryEvent | A discrete experience. Same event, encoded differently per agent based on its context. |
| Perspective | The lens through which an agent encodes events — shaped by its history and role. |
| Consolidation | How repeated private experiences abstract into durable beliefs over time. |
| Drift | Agents in the same team naturally diverge in perspective over time. Measurable. |
Design Principles
Private by default
Memory is private unless explicitly shared. Sharing is a deliberate act, not an automatic sync.
Same event, different encoding
When agents observe the same event, each encodes it through its own perspective. Divergence is the feature, not the bug.
Framework agnostic
Works alongside OpenAI Swarm, CrewAI, LangGraph, or a hand-written agent loop. No lock-in.
Institutional memory emerges
Over time, what agents repeatedly share consolidates into team-level knowledge — without forcing a single shared brain.
Installation
pip install eachmind
Quick Start
from eachmind import Agent, MemoryEvent, SharedMemory
# Create agents with their own private memory
analyst = Agent(name="analyst", role="data analysis")
writer = Agent(name="writer", role="content creation")
# Both agents observe the same event
event = MemoryEvent(
content="Q1 revenue grew 23% YoY",
source="quarterly_report",
timestamp="2026-04-10T09:00:00Z"
)
# Each encodes it through their own perspective
analyst.observe(event) # Encodes: statistical significance, trend implications
writer.observe(event) # Encodes: narrative angle, audience framing
# Analyst decides to share a finding
analyst.share(
content="Revenue growth acceleration suggests market expansion",
to=SharedMemory.TEAM
)
# Writer can now access shared knowledge
shared = writer.recall(source=SharedMemory.TEAM)
# Over time, perspectives naturally drift — and that's measurable
drift = analyst.perspective.drift_from(writer.perspective)
Architecture
┌─────────────────────────────────────────────────┐
│ Agent Team │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Agent A │ │ Agent B │ │ Agent C │ │
│ │┌────────┐│ │┌────────┐│ │┌────────┐│ │
│ ││Private ││ ││Private ││ ││Private ││ │
│ ││Memory ││ ││Memory ││ ││Memory ││ │
│ │└────────┘│ │└────────┘│ │└────────┘│ │
│ │┌────────┐│ │┌────────┐│ │┌────────┐│ │
│ ││Perspect││ ││Perspect││ ││Perspect││ │
│ ││ive ││ ││ive ││ ││ive ││ │
│ │└────────┘│ │└────────┘│ │└────────┘│ │
│ └─────┬────┘ └─────┬────┘ └─────┬────┘ │
│ │ share() │ share() │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────┐ │
│ │ Shared Memory (opt-in) │ │
│ │ ┌─────────────────────────────────┐ │ │
│ │ │ Consolidated Team Knowledge │ │ │
│ │ └─────────────────────────────────┘ │ │
│ └──────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
What It Is NOT
- Not a vector database or RAG system — eachmind defines memory behavior, not storage engines.
- Not an agent framework or task runner — it doesn't orchestrate agents or assign tasks.
- Not a replacement for mem0, Zep, or MemGPT — those are memory backends; eachmind is a protocol layer above them.
- Not a multi-agent orchestrator — it doesn't manage agent coordination or communication routing.
Project Status
Foundation complete. Project 1 of 2. All core primitives, protocol specification, storage backends, visualizations, and integration examples are implemented. Project 2 is an agent architecture built on top of eachmind that demonstrates genuine team cognition — agents that challenge, review, disagree, and accumulate institutional knowledge over time.
Roadmap
- Core primitives implementation
- Protocol specification
- Storage backend adapters (in-memory, SQLite, Redis)
- Integration examples (OpenAI Agents SDK, CrewAI, LangGraph)
- Drift measurement and visualization
- Consolidation algorithms
- Project 2: Team cognition demo
Contributing
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
License
MIT License — see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file eachmind-0.1.0.tar.gz.
File metadata
- Download URL: eachmind-0.1.0.tar.gz
- Upload date:
- Size: 47.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95faa04d3fae6079451300915bed3e0973731346b5f6d50f434d6cd76d8f2ebf
|
|
| MD5 |
45659f4bb42dcf0e7effb8aa6eee9950
|
|
| BLAKE2b-256 |
809dfeec92477c1f3186064ad8ac177bd9b51121de0350048bd347e6523c97f9
|
Provenance
The following attestation bundles were made for eachmind-0.1.0.tar.gz:
Publisher:
publish.yml on inthepond/each-mind
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
eachmind-0.1.0.tar.gz -
Subject digest:
95faa04d3fae6079451300915bed3e0973731346b5f6d50f434d6cd76d8f2ebf - Sigstore transparency entry: 1277394736
- Sigstore integration time:
-
Permalink:
inthepond/each-mind@ec6dc3724ed58bc01e75779fc1897b6affd1e00c -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/inthepond
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ec6dc3724ed58bc01e75779fc1897b6affd1e00c -
Trigger Event:
release
-
Statement type:
File details
Details for the file eachmind-0.1.0-py3-none-any.whl.
File metadata
- Download URL: eachmind-0.1.0-py3-none-any.whl
- Upload date:
- Size: 36.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b34f7f2bb7e664a919fcb4ab5506b74aae48d720e1f88b83baa324591894f4d
|
|
| MD5 |
39b05c91f30f524b5abbe93edf3e1bb4
|
|
| BLAKE2b-256 |
5cd0397ec8d626d6ca3a0b4ea43530b7a0f59a7cfac9660d0ba4c94906440e41
|
Provenance
The following attestation bundles were made for eachmind-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on inthepond/each-mind
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
eachmind-0.1.0-py3-none-any.whl -
Subject digest:
5b34f7f2bb7e664a919fcb4ab5506b74aae48d720e1f88b83baa324591894f4d - Sigstore transparency entry: 1277394765
- Sigstore integration time:
-
Permalink:
inthepond/each-mind@ec6dc3724ed58bc01e75779fc1897b6affd1e00c -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/inthepond
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ec6dc3724ed58bc01e75779fc1897b6affd1e00c -
Trigger Event:
release
-
Statement type: