Memory schema and scope
Agentic OS memory uses one schema for local and hosted memory.
Agentic OS memory uses one schema for local and hosted memory.
Local installs use PGLite. Hosted Team OS uses Postgres with pgvector. The schema and scope rules are the same in both modes.
Core tables
| Table | Purpose |
|---|---|
memory_sources | One row for each source document, such as a memory file or manual import. |
memory_chunks | Searchable chunks from each source, including vector embeddings. |
index_jobs | Indexing and import job history. |
search_events | Audit records for scoped search requests. |
schema_migrations | Applied memory schema migrations. |
Scope columns
Memory rows carry scope data:
| Column | Meaning |
|---|---|
team_id | The Team OS team that owns team memory. |
client_id | The client workspace that owns client memory. |
user_id | The user that owns private memory. |
visibility | Which memory layer the row belongs to. |
Visibility rules
| Visibility | Required scope | Who it is for |
|---|---|---|
system | none | Baseline Agentic OS memory. |
team | team_id | Shared memory for one team. |
client | client_id | Shared memory for one client. |
private | user_id | Private memory for one user. |
The store enforces these rules before writing rows. Hosted Team OS also checks the signed-in user's role and grants before search, import, or sync actions.
Hosted search boundary
In hosted mode, the server resolves the real team and user from the saved Team OS session. Request body IDs cannot widen access.
For example, if a local client sends a different teamId, the server still
uses the team from the authenticated session.
Embeddings
Current semantic memory uses the BGE-M3 embedder with 1024 dimensions by default. All writers and the hosted API should use the same embedder for one database.
If a database was built with a different embedding dimension, rebuild and re-index memory before serving it from Team OS.
Next: Hosted memory API
