Live Memory
Provides integration with MinIO as an S3-compatible storage backend for persisting memory data (notes, bank files).
Enables pushing consolidated memory into a Neo4j knowledge graph for long-term memory and RAG queries.
Allows use of OpenAI API as the LLM for consolidating raw notes into structured Markdown bank files.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Live Memorywhat's in the memory bank?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π§ Live Memory β MCP Knowledge Live Memory Service
Shared working memory for collaborative AI agents
π«π· Version franΓ§aise
π Table of Contents
Related MCP server: knowledgeplane
π― Concept
Live Memory is an MCP (Model Context Protocol) server that provides Memory Bank as a Service for AI agents. Multiple agents collaborate on the same project by sharing a common working memory.
graph-memory = LONG-TERM memory (documents β Knowledge Graph β Vector RAG)
live-memory = WORKING memory (live notes β LLM β Structured Memory Bank)Two Complementary Modes
Mode | Description | Analogy |
π΄ Live | Real-time notes (observations, decisions, todos...) append-only | Shared whiteboard |
π Bank | LLM consolidation into structured Markdown files based on rules | Structured project log |
Why Live Memory?
Problem | Live Memory Solution |
Agents lose context between sessions |
|
Multi-agent collaboration is impossible | Append-only notes, no conflicts, cross-visibility |
Manual consolidation is tedious | LLM transforms raw notes into structured documentation |
Memory scattered in local files | Central S3 point, accessible from everywhere |
No link with long-term memory | π Graph Bridge pushes the bank into a knowledge graph |
π§ Multi-agent Collaboration and Two-Level Memory Architecture
Recent research on LLM-based multi-agent systems (Tran et al., 2025 β Multi-Agent Collaboration Mechanisms: A Survey of LLMs) identifies shared memory as a fundamental component. In their formal framework, a multi-agent system is defined by agents (A), a shared environment (E), and collaboration channels (C). The authors emphasize that LLMs are inherently isolated algorithms, not designed to collaborate β they need a shared memory infrastructure to coordinate their actions.
Live Memory + Graph Memory directly implements this architecture:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Shared Environment E β
β β
β ββββββββββββββββββββ LLM ββββββββββββββββββββββββ β
β β Live β βββββββΊ β Bank β β
β β Real-time notes β consolidβ Structured working β β
β β (append-only) β -ates β memory β β
β ββββββββββββββββββββ ββββββββββββ¬ββββββββββββ β
β β β
β graph_push β
β (MCP Streamable HTTP) β
β β β
β ββββββββββββΌββββββββββββ β
β β π Graph Memory β β
β β Knowledge Graph β β
β β (entities, relationsβ β
β β embeddings, RAG) β β
β ββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββLevel | Service | Duration | Content | Usage |
Working Memory | Live Memory | Session / project | Raw notes + consolidated Markdown bank | Operational context, daily coordination |
Long-term Memory | Graph Memory | Permanent | Entities + relations + vector embeddings | Searchable knowledge base in natural language |
The Graph Bridge (graph_push) is the collaboration channel between these two levels. Following the late-stage collaboration pattern described in literature (sharing consolidated outputs as inputs to another system), it transforms working documentation (Markdown) into structured knowledge (entities/relations graph).
Why two levels? One level is not enough:
Working memory alone is ephemeral β it disappears when the project ends
Knowledge graph alone is too heavy for quick daily notes
The bridge between the two allows agents to work fast (live notes) while capitalizing knowledge (graph)
Specifically, agents can:
Write quickly without friction (live-memory, append-only, ~50ms)
Automatically consolidate via LLM into structured documentation (bank, ~15s)
Persist knowledge in a searchable graph (graph-memory, ~2min)
Query the graph in natural language to retrieve information from past projects
ποΈ Architecture
Agent Cline Agent Claude Agent X
β β β
ββββββββββ¬βββββββββββ β
β β
βΌ MCP Protocol (Streamable HTTP) βΌ
ββββββββββββββββββββββββββββββββββββββββββ
β Caddy WAF (Coraza CRS) β
β Rate Limiting β’ TLS β’ OWASP CRS β
ββββββββββββββ¬ββββββββββββββββββββββββββββ
β
ββββββββββββββ΄ββββββββββββββββββββ
β Live Memory MCP (:8002) β
β 44 tools β’ Auth Bearer β
β LLM Consolidation β
ββββββββ¬βββββββββββ¬βββββββ¬ββββββββ
β β β
ββββββββ΄βββ ββββββ΄ββββ β
β S3 β β LLMaaS β β MCP Streamable HTTP
βDell ECS β β CT API β β (optional)
βββββββββββ ββββββββββ β
βββββββββββββ΄βββββββββββββ
β Graph Memory β
β (long-term memory) β
β Neo4j + Qdrant β
ββββββββββββββββββββββββββMinimal Stack: S3 + LLM. No local database. Optional: connection to Graph Memory for long-term memory (knowledge graph).
π¦ Prerequisites
Docker >= 24.0 + Docker Compose v2
Python 3.11+ (for CLI, optional)
A compatible S3 storage (Cloud Temple Dell ECS, AWS, MinIO)
An OpenAI API compatible LLM (Cloud Temple LLMaaS, OpenAI, etc.)
π Installation
1. Clone the repository
git clone https://github.com/Cloud-Temple/live-memory.git
cd live-memory2. Configure the environment
cp .env.example .envEdit .env with your values (see Configuration).
3a. Docker Start (recommended)
# Build images (WAF + MCP server)
docker compose build
# Start services
docker compose up -d
# Check status
docker compose ps
# Health check
curl -s http://localhost:8080/health3b. Local Start (development)
# Install dependencies
uv pip install -e .
# Run server
python -m live_mem4. Install CLI (optional)
uv pip install -e .5. Verify Installation
# Health check via CLI
python scripts/mcp_cli.py health
# Or full E2E test (creates space, writes notes, consolidates)
python scripts/test_recette.pyExposed Ports
Service | Port | Description |
WAF |
| Only exposed port β Caddy WAF β Live Memory |
MCP Server |
| Internal Docker network only |
βοΈ Configuration
Edit .env. All variables are documented in .env.example.
Mandatory Variables
Variable | Description | Example |
| S3 endpoint URL |
|
| S3 access key |
|
| S3 secret key |
|
| Bucket name |
|
| S3 region |
|
| LLM API URL (must include |
|
| LLM API key |
|
| Admin bootstrap key (β₯ 32 chars) |
|
Optional Variables β LLM
The service can use distinct OpenAI-compatible models for consolidation and hierarchical compaction.
Variable | Default | Description |
|
| Consolidation model name as exposed by the provider |
|
| Dedicated Map/Reduce compaction model. |
|
| TOTAL context window of the model (input + output combined, in tokens). Qwen3 235B = 128K |
|
| Max OUTPUT tokens per request. The consolidator adjusts dynamically: |
|
| LLM creativity (0.0 = deterministic, 1.0 = very creative) |
| (none) | Outbound HTTP proxy (e.g. |
Optional Variables β Consolidation and Compaction
Variable | Default | Description |
|
| MCP server listening port |
|
| Detailed logs (full error messages) |
|
| Timeout per LLM call (seconds) |
|
| Max notes per consolidation |
|
| Notes per LLM batch (small = precise, large = faster) |
|
| Per-space anti-spam cooldown for |
|
| Optional post-consolidation check for unattributed claims |
|
| Max examples returned by the validation pass |
|
| Legacy compatibility setting; compaction follows the logical UTF-8 byte limit per file |
|
| UTF-8 byte target for a logical Bank file, not a veto: safe best-effort compaction may remain above it when protected content makes it unreachable |
|
| Max non-MCP response body size before truncation |
|
| Max request body accepted by |
During consolidation, duplicate Markdown sections are merged only when the
merge is non-empty. If the model returns an error or an empty result, Live
Memory preserves every current occurrence, stops deduplication for that file,
continues the batch, and exposes the event through dedup_failures_count.
βΆοΈ Getting Started
docker compose up -d
docker compose ps # Check status
docker compose logs -f live-mem-service --tail 50 # Logsπ§ MCP Tools
44 tools exposed via the MCP protocol (Streamable HTTP), divided into 7 categories.
System (3 tools)
Tool | Parameters | Description |
| β | Health status (S3, LLMaaS, number of spaces) |
| β | π€ Current token identity (name, permissions, spaces) |
| β | Service identity (version, tools, capabilities) |
Space (10 tools)
Tool | Parameters | Description |
|
| Creates a space with its rules (bank structure) |
|
| Mints/replaces one restricted mission-agent badge |
|
| Updates description and/or owner |
|
| π Updates space rules (manage) |
| β | Lists spaces accessible by current token |
|
| Detailed info (notes, bank, consolidation) |
|
| Reads immutable space rules |
|
| Complete summary: rules + bank + stats (agent startup) |
|
| tar.gz export in base64 |
|
| Deletes the space (β οΈ irreversible, manage required) |
Mission-space badges (v2.9.0)
space_badge_mint is deliberately not a general ACL mechanism. Only the
exact standard token that created a space can mint a badge for an agent
instance. A badge is restricted to that one space and to system_whoami,
live_read, and live_note; it has a fixed 24-hour lifetime. Re-minting the
same client_name revokes its prior badge, and deleting the space revokes all
of its badges first.
The intended flow is: mcp-mission holds the creator token and requests a
badge after it has authenticated the mission and reserved the runtime agent
identity; mcp-agent keeps the returned secret private and uses it only for
the mission space. Badges cannot call the web API or the admin console.
Live (3 tools)
Tool | Parameters | Description |
|
| Writes a timestamped note (agent = token name). Categories: observation, decision, todo, insight, question, progress, issue |
|
| Reads live notes (optional filters) |
|
| Full-text search in notes |
Bank (11 tools)
Tool | Parameters | Description |
|
| Reads a bank file (supports subfolders: |
|
| Reads entire bank in one request (π agent startup) |
|
| Lists bank files with relative paths (without content) |
|
| π§ Enqueues async LLM consolidation. Call once; do not watch/poll unless explicitly requested |
|
| Manual-only status check for a job returned by |
|
| Read-only summary of consolidation lanes by space |
|
| π¨ Lists spaces with β₯N unconsolidated notes whose oldest is β₯D days old (supervision) |
|
| π§ Scans or enqueues strict LLM compaction with UTF-8 byte checks, backup, rollback and audit hashes. |
|
| π§ Repairs corrupted filenames (Unicode, parasitic prefixes). |
|
| βοΈ Writes/replaces a bank file directly β bypasses LLM consolidation (manage) |
|
| ποΈ Deletes a bank file + its Unicode duplicates (manage, irreversible) |
Applied bank_compact is asynchronous: it joins the same per-space FIFO as
consolidation and returns a job_id. For each logical file above
BANK_FILE_MAX_SIZE, bounded Map calls create ephemeral cards for complete
Markdown source units and one Reduce writes a compact, non-exhaustive Markdown
digest. The server validates that digest, replaces all eligible historical
units with one code-owned, recompactable container, and requires the candidate
to reduce the original file strictly. When protected content makes the target
unreachable, a safe digest may remain above the configured limit and reports
target_met=false; otherwise the target remains enforced. Recent, undated, code-bearing, HTML-bearing and
external content stays byte-identical. In dated mode, the digest may consume at
most 75% of the space left after protected content only when the target is
reachable; the remaining 25% is growth headroom. Best-effort compaction uses
its full safe reduction budget. All candidates are validated before a full-space
backup is created.
Persisted content is read back and verified; failure triggers a verified
bank/ rollback. If rollback also fails, the job reports the backup_id needed
for manual restore. No new *.part-NNN.md object is created. Legacy
v2.7.x multipart families are read losslessly, then reassembled into their
single canonical file by compaction, consolidation, or an explicit
bank_write restoration.
Since v2.7.1, consolidation validates the complete LLM edit plan before the
first write. Bank and synthesis outputs (plus metadata outside normal batched
mode) are rolled back and verified as one batch on failure; source notes are
deleted only after every fallible operation in that batch has completed. Final
metadata/audit I/O runs after committed batches but can only return partial;
it never rolls them back. Partial note deletion exposes verified
restoration/loss metrics.
Multi-file compaction restores only bank/, so a live note created
concurrently is never removed by rollback. Terminal job results are persisted
for post-restart audit; active/queued jobs remain an in-memory FIFO.
When 2.8+ compaction has legitimately absorbed an old heading, a surgical
replace_section, append_to_section, or prepend_to_section may recover it
only as a strict ATX heading with non-empty content at the end of the existing
logical file. An absent delete_section is idempotent. This compatibility path
does not create files, infer Markdown parents, relax other plan validation, or
hide the event: terminal results expose recovered_operations, and recovered
files are read back exactly before source notes are deleted.
Since 2.9.3, automatic pre-consolidation is advisory when a refusal leaves the
Bank intact, or when a failed write has an exact verified rollback: it is
reported in compaction while normal live-note consolidation continues. Since
2.9.4, BANK_FILE_MAX_SIZE is also a target for manual and automatic
compaction: a safe candidate strictly smaller than its source may remain above
it only when protected content already makes the target unreachable;
target_met reports that outcome. Only an inconsistent legacy split family or
an unverified compaction rollback blocks bank_consolidate; bank_compact
remains strict on integrity checks.
2.8.0 release-ready β product-owner accepted, not deployed: bounded Maps plus one Reduce passed the real-corpus mechanical gates. Comparative review selected
mistral-small4:119bas the recommended compaction model: it preserved the global meaning and important operational points better than the tested Qwen models.gpt-oss:120bis not supported for this compaction path: it reachedfinish_reason=lengthwith the product Map ceiling of 4,000 tokens and remained slower and less faithful in an 8,000-token R&D rerun. Compaction is intentionally lossy and still requires a manual canary before production. See the 2.8.0 hierarchical compaction design.
Graph (4 tools) β π Link to Graph Memory
Tool | Parameters | Description |
|
| Connects a space to Graph Memory. Tests connection, creates memory if needed. Default ontology: |
|
| Synchronizes bank β graph. Smart delete + re-ingest, orphan cleanup. ~30s/file |
|
| Connection status + graph stats (documents, entities, relations, top entities, documents list) |
|
| Disconnects (data remains in graph) |
Backup (5 tools)
Tool | Parameters | Description |
|
| Creates a full snapshot on S3 |
|
| Lists available backups |
|
| Restores a backup (space must not exist) |
|
| Download as tar.gz base64 |
|
| Deletes a backup |
Admin (8 tools)
Tool | Parameters | Description |
|
| Creates a token (β οΈ displayed only once). Permissions: read, write, manage, admin. Optional email for traceability |
| β | Lists active tokens |
|
| Revokes a token (makes it unusable) |
|
| Physically deletes a token from the registry (β οΈ irreversible) |
|
| Bulk purge: revoked only (default) or all tokens |
|
| Modifies token spaces (add/remove/set) |
|
| Bulk token update with filters and add/remove/set operations |
|
| Garbage Collector: cleans orphaned notes |
π Graph Bridge β Link to Graph Memory
β οΈ Architecture note (v2.5.0) β Live Memory + Graph Memory responsibility separation
Memory Bank (Live Memory) = compact session bootstrap.
activeContext.mdis a volatile focus snapshot,progress.mdis a bounded recent journal. The consolidator continuously rewrites and compacts these files.Graph Memory = durable semantic index for stable canonical documents (RFCs, incidents, runbooks, design docs, infrastructure inventories).
Repository files = final authority.
Graph Memory complements the bank; it does not replace it. Graph Memory localizes; canonical repository files confirm.
Therefore,
graph_pushis NOT a routine action: pushing the full bank into the graph teaches it transient content that a later compaction strands as stale. Routine flows should ingest canonical repository documents directly into Graph Memory from the agent / tooling layer, using stablesource_pathkeys.graph_pushremains available for one-off bootstrap and explicit debug / migration only.In particular,
activeContext.mdandprogress.mdmust never end up in Graph Memory. A future revision (tracked inDESIGN/live-mem/EVOLUTION_LIVE_GRAPH_INTEGRATION.md) will turn this into a server-side guardrail. SeeWORKSPACE_CLINE_ADVANCE_RULES.mdfor the agent-side template.
Live Memory can push its Memory Bank into a Graph Memory instance for long-term memory. The knowledge graph extracts entities, relations, and embeddings from bank files.
Workflow
1. graph_connect(space_id, url, token, memory_id, ontology="general")
ββ Tests connection, creates Graph Memory if needed
2. bank_consolidate(space_id)
ββ Queues async consolidation; call once and do not watch/poll unless explicitly requested
3. graph_push(space_id)
ββ Lists documents in Graph Memory
ββ For each modified bank file:
β ββ document_delete (removes orphaned entities)
β ββ memory_ingest (complete graph recalculation)
ββ Cleans deleted bank documents
ββ Updates metrics (last_push, push_count)
4. graph_status(space_id)
ββ Stats: 79 entities, 61 relations, top entities, documents...Smart Push (delete + re-ingest)
Each push is a complete refresh of the graph for that file. Existing files are deleted then re-ingested so Graph Memory recalculates entities, relations, and embeddings with up-to-date content.
Available Ontologies
Ontology | Usage |
| Versatile: FAQ, specs, certifications, CSR |
| Legal documents, contracts |
| Cloud infrastructure, product sheets |
| Managed services, outsourcing |
| Pre-sales, RFP/RFI, proposals |
π₯οΈ Web Interface
Live Memory exposes a web interface on /live to visualize memory spaces in real-time.
Access
http://localhost:8080/liveFeatures
Zone | Content |
π Dashboard (left) | Space info, consolidation (date + counters), live/bank stats, colored agents, categories with %, Markdown rules, Graph Memory |
π΄ Live Timeline (top-right) | Live notes grouped by date (Today/Yesterday/date), cards with agent + category + Markdown |
π Bank Viewer (bottom-right) | Consolidated file tabs, Markdown rendering with marked.js |
Layout
ββββββββββββββββ¬βββββββββββββββββββββββββββββ
β π Dashboardβ π΄ Live Timeline β
β (info, β (auto-refresh, date group)β
β agents, ββββββββββββββββββββββββββββββ€
β rules...) β π Bank (Markdown tabs) β
ββββββββββββββββ΄βββββββββββββββββββββββββββββSmart Auto-refresh
Configurable: 3s / 5s / 10s / 30s / manual
Anti-flicker: only re-renders DOM if data has changed
Pulsing green dot with last refresh timestamp
Space selection β immediate loading (no button needed)
REST API (5 endpoints)
Endpoint | Description |
| List of spaces |
| Complete info (meta + rules + stats + graph-memory) |
| Live notes (filters: |
| Bank file list |
| Bank file content |
/api/* endpoints require a standard Bearer Token. Mission-space badges are
MCP-only and are refused, including by /api/login. /live page and
/static/* files are public.
Admin Console (/admin)
A full administration console is available at /admin, exposing all 44 MCP tools through a web interface:
http://localhost:8080/adminSection | Features |
π Dashboard | Health status (clickable β service details), spaces count, active tokens, version/uptime, identity bar |
π Spaces | CRUD, info/rules modals, explore link, delete with confirmation |
π Tokens | Create/update/revoke/delete, visual space chips with delta calculation |
π Explorer | Live notes + bank files side-by-side for any space |
πΎ Backups | Create/restore/delete, "Backup All", dynamic columns |
π Graph Bridge | Status check, push, disconnect per space |
π§Ή Maintenance | Consolidate, compact, repair, GC, purge β single space selector, compact action list |
Auth: requires a valid token (same as
/live), session via HttpOnly cookieCSP-safe: zero inline handlers, all via
data-action+ event delegationUpload Rules: file picker (
.md) or paste directly from the Rules modal
π MCP Integration
π Full Guide: See
CLINE_INTEGRATION_GUIDE.mdfor the step-by-step guide (Cline configuration, custom instructions, workflow, multi-agents, troubleshooting). Equivalent guides exist forCLAUDE_CODE_INTEGRATION.mdandCODEX_INTEGRATION.md.
With Cline (VS Code / VSCodium)
In Cline's MCP settings (cline_mcp_settings.json):
{
"mcpServers": {
"live-memory": {
"url": "http://localhost:8080/mcp",
"headers": {
"Authorization": "Bearer lm_YOUR_TOKEN"
}
}
}
}To configure the Custom Instructions for your agent, copy one of the two workspace rule templates into your Cline global Custom Instructions (or into a .clinerules/ directory in your project):
Template | When to use |
Workspaces with Live Memory only. | |
Workspaces also connected to Graph Memory (Graph-first lookup, compaction discipline, agent-side ingestion). |
Customize a few placeholders ({LIVE_MCP_SERVER}, {SPACE}, and for the advanced template {GRAPH_MCP_SERVER} / {GRAPH_MEMORY_ID}). The agent name is auto-detected from the authentication token β nothing else to configure.
π‘ Ready-to-use templates:
WORKSPACE_CLINE_RULES.md(Live-only) andWORKSPACE_CLINE_ADVANCE_RULES.md(Live + Graph) β copy and customize the placeholders.π Detailed integration guides:
CLINE_INTEGRATION_GUIDE.md,CLAUDE_CODE_INTEGRATION.md,CODEX_INTEGRATION.md.
With Claude Desktop
In claude_desktop_config.json:
{
"mcpServers": {
"live-memory": {
"url": "http://localhost:8080/mcp",
"headers": {
"Authorization": "Bearer lm_YOUR_TOKEN"
}
}
}
}Via Python (MCP client)
from mcp import ClientSession
from mcp.client.streamable_http import streamable_http_client
import httpx2
async def example():
headers = {"Authorization": "Bearer your_token"}
async with httpx2.AsyncClient(
headers=headers, timeout=httpx2.Timeout(30, read=30),
follow_redirects=True, trust_env=True,
) as http_client:
async with streamable_http_client(
"http://localhost:8080/mcp", http_client=http_client
) as (r, w):
async with ClientSession(r, w) as session:
await session.initialize()
# Load all context
result = await session.call_tool("bank_read_all", {
"space_id": "my-project"
})
# Write a note
await session.call_tool("live_note", {
"space_id": "my-project",
"category": "observation",
"content": "Build passing in CI"
})π» CLI and Shell
CLI Installation
pip install click rich prompt-toolkit 'mcp[cli]>=2.1.1,<3' 'httpx2>=2.5.0,<3'
export MCP_URL=http://localhost:8080
export MCP_TOKEN=your_tokenCLI Commands (Click)
python scripts/mcp_cli.py health
python scripts/mcp_cli.py whoami # Current token identity
python scripts/mcp_cli.py about
python scripts/mcp_cli.py space list
python scripts/mcp_cli.py space create my-project --rules-file rules.md
python scripts/mcp_cli.py live note my-project observation "Build OK"
python scripts/mcp_cli.py bank consolidate my-project
python scripts/mcp_cli.py bank read-all my-project
python scripts/mcp_cli.py token create agent-cline read,write
python scripts/mcp_cli.py graph connect my-project URL TOKEN MEM-ID -o general
python scripts/mcp_cli.py graph push my-project
python scripts/mcp_cli.py graph status my-project
python scripts/mcp_cli.py graph disconnect my-projectInteractive Shell
python scripts/mcp_cli.py shellAutocomplete, history, Rich display. See scripts/README.md for full reference.
π§ͺ Tests
Unified test script with 4 selectable suites via --suite:
docker compose up -d # Prerequisite
# All suites (44 tests, ~60s)
python scripts/test_recette.py --url http://localhost:8080
# Single suite
python scripts/test_recette.py --suite recette # Agent pipeline (7 tests)
python scripts/test_recette.py --suite isolation # Multi-tenant (18 tests)
python scripts/test_recette.py --suite qualite # MCP tools (19 tests)
# Graph Memory suite (optional, requires running graph-memory)
python scripts/test_recette.py --suite graph \
--graph-url http://host.docker.internal:8080 \
--graph-token your_token
# List available suites
python scripts/test_recette.py --list
# Step-by-step + verbose
python scripts/test_recette.py --suite isolation -v --step --no-cleanupSuite | Tests | Description |
| 7 | Full pipeline: token β notes β LLM consolidation β bank |
| 18 | Multi-tenant isolation v0.7.1: cross-space access, backup filtering, auto-add token |
| 19 | MCP tools regression testing: system, admin, space, live, bank, backup, GC |
| ~8 | Graph Memory bridge: connect, push, status, disconnect (optional) |
π Security
Authentication
Bearer Token mandatory on all MCP requests
Bootstrap key to create the first admin token
SHA-256 Tokens stored on S3 (never in clear text)
3 levels: read, write, admin
Space scope: a token can be limited to specific spaces
Mission badge: no general permission; one mission space and only
system_whoami, live read/write MCP operations. It is rejected by the web API and admin console.
WAF (Caddy + Coraza)
OWASP CRS: SQL/XSS injection, path traversal, SSRF
Rate Limiting: 200 MCP/min (Streamable HTTP)
Automatic TLS: Let's Encrypt in production (
SITE_ADDRESS=domain.com)Non-root container:
mcpuser
π Project Structure
live-memory/
βββ src/live_mem/ # Source code (44 MCP tools + web interface)
β βββ server.py # MCPServer v2 + middlewares
β βββ config.py # pydantic-settings configuration
β βββ auth/ # Authentication
β β βββ middleware.py # Auth + Logging + StaticFiles
β β βββ context.py # check_access, check_write, check_admin
β βββ static/ # /live web interface
β β βββ live.html # SPA (Dashboard + Live + Bank)
β β βββ css/live.css # Styles (Cloud Temple theme)
β β βββ js/ # 7 JS modules (config, api, app, dashboard, timeline, bank, sidebar)
β β βββ img/ # Cloud Temple SVG Logo
β βββ core/ # Business services
β β βββ storage.py # S3 dual SigV2/SigV4 (Dell ECS)
β β βββ space.py # Memory spaces CRUD
β β βββ live.py # Live notes (append-only)
β β βββ consolidator.py # LLM Pipeline (4 steps)
β β βββ graph_bridge.py # π Link to Graph Memory
β β βββ tokens.py # SHA-256 tokens management
β β βββ backup.py # S3 snapshots
β β βββ gc.py # Garbage Collector
β β βββ locks.py # asyncio locks per space
β β βββ models.py # Pydantic models
β βββ tools/ # MCP Tools (7 modules)
β βββ system.py # 3 tools (health, whoami, about)
β βββ space.py # 10 tools (spaces CRUD + mission badge)
β βββ live.py # 3 tools (notes)
β βββ bank.py # 11 tools (bank + consolidation + supervision + maintenance)
β βββ graph.py # 4 tools (Graph Bridge)
β βββ backup.py # 5 tools (snapshots)
β βββ admin.py # 8 tools (tokens + GC + purge + bulk)
βββ scripts/ # CLI + Shell + Tests
βββ waf/ # Caddy + Coraza WAF
βββ WORKSPACE_CLINE_RULES.md # π Cline Custom Instructions template β Live Memory only
βββ WORKSPACE_CLINE_ADVANCE_RULES.md # π Cline Custom Instructions template β Live Memory + Graph Memory
βββ RULES/ # π Memory Bank rules templates (general, book, medical, presales, product management, company steering)
βββ DESIGN/live-mem/ # 9 architecture documents
βββ docker-compose.yml
βββ Dockerfile
βββ pyproject.toml # Dependencies & project config (uv)
βββ uv.lock # uv lockfile
βββ VERSION # 2.9.5
βββ CHANGELOG.md
βββ FAQ.mdπ Troubleshooting
Service does not start
docker compose logs live-mem-service --tail 50
docker compose logs waf --tail 20401 Unauthorized
Check your token:
Authorization: Bearer YOUR_TOKENBootstrap key is not a token β create a token first via
admin_create_token
Consolidation fails
Check LLMaaS credentials in
.envDefault timeout is 1800s (30 minutes) to accommodate slower, higher-quality consolidation models
bank_consolidatereturns an async job acknowledgement (runningorqueued) withnext_action="return_to_user_without_polling"; call it once and do not watch/poll unless explicitly requestedbank_consolidation_status(job_id)remains available for manual status checks only
π€ Contributing
Development is driven entirely through GitHub β issues, branches, pull
requests, code reviews and project status all live there. This makes the
project easy to pilot remotely from the command line with the gh CLI
(including by AI coding agents): create an issue, branch, open a PR, review
and merge without ever leaving the terminal or the GitHub UI.
The full, mandatory workflow is documented in
WORKSPACE_WORKFLOW_GIT.md:
Branch + PR only β no local merge into
main; every change lands through a pull request merged on GitHub.Issue lifecycle β self-assign, move the Projects status to In Progress, keep solution-design discussion in the issue.
PR β issue link β a
Closes #Nkeyword in the PR body auto-closes the issue on merge.PR-channel reviews β once a PR is open, code-review discussion moves to the PR; every review conclusion is published on GitHub (
gh pr review/gh pr comment), not only in chat.
Following this file keeps the issue and PR histories clean and auditable, and
lets a contributor (or an agent) drive the whole cycle reproducibly via gh.
π Related Projects
Project | Description | Link |
graph-memory | Long-term memory (Knowledge Graph + RAG) |
π License
Apache License 2.0
π€ Author
Cloud Temple β cloud-temple.com
Developed by Christophe Lesur.
Live Memory v2.9.5 β Shared working memory for collaborative AI agents
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
An MCP memory server. One memory your agents share β across models, devices and apps.
One memory, every AI. A shared, user-owned markdown memory your AI clients read and write over MCP.
shared AI-context layer for teams β persistent memory your agents search and update over MCP
- MemocoreOAuthai.memocore
Shared memory for all your AI agents, your whole team and every MCP client β save, search, recall.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP-native, local-first memory server that gives AI agents persistent, structured memory across sessions and tools, enabling them to maintain identity and context without reconfiguration.3MIT
- FlicenseNot gradedqualityCmaintenanceMCP server that gives AI agents and teams persistent, shared memory using a knowledge graph with vector embeddings, automatic consolidation of related facts, and hybrid search.3-
- AlicenseNot gradedqualityBmaintenanceAn MCP server that provides shared memory, kanban board, and agent registry for AI agents to collaborate as a team, with a live dashboard for human oversight.MIT
- AlicenseNot gradedqualityBmaintenanceA shared memory MCP server for AI agents that provides persistent, semantic memory across sessions and tools, enabling long-term recall and context sharing.812MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Cloud-Temple/live-memory'
If you have feedback or need assistance with the MCP directory API, please join our Discord server