Memory
Celune's memory system — the Second Brain — gives your agents durable context that persists across sessions. Agents store structured notes in a searchable database, so they can recall relevant information from past work without you repeating yourself.
The Three Memory Layers
Celune stores memory in three layers, each with a different lifespan:
1. Conversation Context
The messages in a live session are available to your agent during that session. This is standard chat context — it resets when the session ends.
2. Task Memory
When a task is completed, a summary of the work, decisions made, and outcomes produced is stored against the task record. Agents can look up past tasks to understand what was done and why. Task memory persists indefinitely.
3. Agent Memory (Second Brain)
Explicit, structured notes that agents write (or that you write) to a persistent memory store. These survive session resets and can be searched semantically. This is what most people refer to when they talk about Celune's memory system.
What Gets Stored in Agent Memory
Memory entries are created in several ways:
- By the agent — during a task or conversation, your Agent Lead writes a note when they encounter something worth retaining.
- Manually via MCP — using the
celune_remembertool in Claude Code. - Via the task CLI — developers can write entries directly:
node task-cli.mjs remember "...".
Examples of what gets stored:
- "The staging environment uses a separate Supabase project."
- "The team uses tabs, not spaces, in TypeScript files."
- "The auth middleware breaks when a new route doesn't include workspace scoping."
- "Eric prefers architectural recommendations to include a confidence level."
Semantic Search
Memory is retrieved by meaning, not just keywords. Celune uses vector embeddings (384-dimensional, via the gte-small model running on a Supabase Edge Function) to encode every memory entry.
When your agent searches memory — whether triggered automatically or by explicit recall — it computes an embedding of the query and finds the closest matching entries by cosine similarity.
This means:
- Searching "auth problems" returns memories about "authentication middleware failures."
- Searching "team preferences" returns memories about code style, communication patterns, and workflow choices.
The threshold for what counts as "relevant" is configurable. The default is 0.5 — entries below that similarity score are not returned.
Memory Entry Structure
Each memory entry contains:
| Field | Description |
| ------------ | ----------------------------------------------------------------- |
| content | The text of the memory |
| source | Who created it: agent, task-cli, or mcp |
| category | Classification: technical, preference, decision, context |
| agent_id | Which agent created or owns the memory |
| embedding | The vector representation used for semantic search |
| created_at | When the entry was created |
Memory Limits by Plan
| Plan | Memory Entries | | -------------- | -------------- | | Spark (Free) | 100 | | Pro ($49/mo) | 10,000 | | Team ($149/mo) | 50,000 | | Enterprise | Unlimited |
When you reach the limit, new entries are blocked. Existing entries are preserved and remain searchable. To free capacity, delete entries from the Memory page in the dashboard, or upgrade your plan.
Celune never automatically deletes memory entries when you reach the limit. Your data is always preserved.
Managing Memory
Dashboard
Navigate to Memory in the sidebar to:
- Browse all entries, sorted by creation date.
- Search by typing a query — uses semantic search.
- Edit an entry to update its content.
- Delete individual entries.
Via MCP (Claude Code)
celune_remember: "Deploy to staging requires running db:migrate before the build."
celune_recall: "What do I need to do before deploying?"Via the Task CLI
node packages/db/scripts/task-cli.mjs remember "The Stripe webhook uses a separate secret from the API key."
node packages/db/scripts/task-cli.mjs recall --query "Stripe configuration"Memory Categories
Categorizing entries makes search more precise:
| Category | What It's For |
| ------------- | ------------------------------------------------------------ |
| technical | Architecture decisions, stack choices, environment config |
| preference | Team style preferences, communication patterns |
| decision | Resolved debates, tradeoff choices, direction calls |
| context | Background info, project history, stakeholder relationships |
You can filter by category in the dashboard's Memory view.
Privacy and Isolation
Agent memory is scoped to your workspace and protected by Row Level Security at the database level. No memory is shared across workspaces, and no external party can access your entries without explicit workspace owner authorization.
Related Concepts
- Agents — How agents use memory during task execution and delegation.
- Memory Guide — Practical walkthrough of creating, searching, and managing memory entries.
- MCP Setup — How to use
celune_rememberandcelune_recallfrom Claude Code.