Skip to content

Workspace memory: personal and organization memory for AI clients #1151

Closed

Description

@helpcodeai

Follow-up to #1145 and #1148. Skills tell an AI client how a company works. What is missing is what it has learned: facts ("STAMMKUNDE means a customer with a framework agreement"), preferences of a person ("answer in Italian, numbers as tables") and notes an assistant should find again next week, in any client, for the same user or for the whole team.

Proposal

Workspace memory, available with an Enterprise licence (Cloud and self-hosted), gated like single sign-on: the code is in core, the licence check lives in ee/licensing.

Scopes

  • Personal: one member. Only that member can read it, admins included; admins can erase it (data protection) but not read it.
  • Organization: the company memory.
  • (Team scope via roles comes later.)

Kinds: fact, preference, note. Memory is served as data, never as instructions; skills stay the only instruction-grade content.

MCP tools (only on /mcp/:serverId; the shared /mcp toolset is unchanged), registered per member level:

  • memory_search(query, scope?): full-text search over the caller's personal memory and the active organization memory.
  • memory_save(content, kind, scope, tags?): personal directly; organization as a proposal or directly, depending on the workspace switch.
  • memory_forget(id): the caller's own personal items only.

Per-member access (organization_members.memory_access): inherit (workspace default) | none | read | personal | contribute. Default for the workspace is personal. Set one by one or in bulk under Settings > Users.

Workspace switch for organization writes from AI clients: approval (default, an admin or editor approves under Memory) or auto. Provenance (who, which server and client) is kept either way.

Safety: content that looks like a secret (API keys, tokens, passwords, private keys) is refused; size limits per item and per workspace; no cross-workspace access.

UI: a Memory page with "My memory", "Company memory" and "Pending" tabs, plus the workspace settings; a Memory column on Settings > Users.

Storage

New table memory_items (organization, scope, owner, kind, content, tags, status, source, author, approver, timestamps) with a Postgres full-text tsvector (simple configuration, multilingual) and a GIN index; new column organization_members.memory_access. No new dependency. Embeddings can come later as an option.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions