You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Introduce a first-class namespace/workspace boundary that is separate from the existing project field.
This adds AGENTMEMORY_NAMESPACE and AGENTMEMORY_NAMESPACE_SCOPE, stamps namespace onto sessions, observations, memories, lessons, and project profiles, and enforces namespace-aware filtering across the core recall and API surfaces.
Key behavior changes:
- add namespace env/config loading with shared vs isolated modes
- stamp namespace on write paths including session start, observe, remember, compress, and synthetic compression
- enforce namespace filtering in mem::search, mem::smart-search, mem::context, and mem::enrich
- filter REST list/read endpoints for sessions, observations, and memories in isolated mode
- keep project as an intra-namespace identifier instead of the top-level workspace boundary
- key project profiles by namespace+project so the same project slug can exist in multiple workspaces without collisions
- extend lessons to carry namespace and avoid cross-namespace fingerprint collisions
- document the feature in README and .env.example
Validation:
- focused namespace regression tests passed
- build passed with npm run build
- full unit suite was green except for one pre-existing unrelated fs-watcher test failure
If one agentmemory daemon serves multiple higher-level environments such as `work`, `personal`, or `research`, set a namespace on the server or per request.
|`shared` (default) | yes | no | Auditability without automatic isolation. Callers can still filter by passing `namespace`. |
1349
+
|`isolated`| yes | yes | Strict workspace separation. Reads default to the configured namespace unless the caller explicitly opts out with `namespace=*`. |
1350
+
1351
+
What gets tagged when `AGENTMEMORY_NAMESPACE` is set: `Session.namespace`, `RawObservation.namespace`, `CompressedObservation.namespace`, `Memory.namespace`, `ProjectProfile.namespace`, `Lesson.namespace`.
1352
+
1353
+
What gets filtered in isolated mode: `mem::search`, `mem::smart-search`, `mem::context`, `mem::enrich`, `/agentmemory/sessions`, `/agentmemory/observations`, `/agentmemory/memories`.
1354
+
1355
+
Per-call override at the SDK / REST layer: mutating endpoints such as `/session/start`, `/observe`, `/remember`, `/context`, `/search`, `/smart-search`, and `/enrich` accept a `namespace` field that overrides the env default for that call.
1356
+
1323
1357
### Ports
1324
1358
1325
1359
agentmemory + iii-engine bind four ports by default. If a restart fails with `port in use`, this table tells you which process to look for.
0 commit comments