Replacing OpenClaw's Default Memory with Redis and Qdrant for Production Multi-Agent Systems

Scaling OpenClaw Memory for Production Multi-Agent Systems
A developer running OpenClaw in a production multi-agent setup on a self-hosted VPS for two months found that the default memory layer became problematic at scale. While the initial Markdown approach and later SQLite memory work fine for local use, they fall apart with multiple agents running in parallel, sessions spanning days, and the need for agents to retrieve relevant context from past work. The specific issues included: no semantic search, no cross-agent memory sharing, and messy concurrent writes.
Redis + Qdrant Architecture Solution
The developer rebuilt the memory system with the following architecture:
- Redis for hot ephemeral state: Current task, recent context window, tool call cache with TTL
- Qdrant for persistent vector memory: Past episodes, observations, extracted knowledge
- Three collections in Qdrant: agent_episodes, agent_observations, agent_knowledge
- Cross-agent knowledge sharing: Episodes are scoped per agent, while knowledge is shared across all agents
- Time-decay reranking: Prevents stale memories from polluting retrieval
- Redis pub/sub: Used for lightweight agent-to-agent event signaling
- Batch embedding + async Qdrant upserts: Prevents the agent loop from blocking on writes
Implementation Details
The developer documented the full implementation including architecture decisions, HNSW configuration reasoning, the memory manager class, how they hooked into the observation loop, and cleanup/pruning strategy. For embedding models, they're using text-embedding-3-small and considered going fully local with nomic-embed-text but didn't need to yet.
📖 Read the full source: r/openclaw
👀 See Also

Fix for sub-agents not showing up in OpenClaw v2026.3.13
A workaround for OpenClaw v2026.3.13 where custom sub-agents don't appear in the agent list: simplify the openclaw.json agent list to only include IDs and manually register agents in runs.json with status set to 'idle'.

Workaround for OpenClaw Claude Access via Claude Code CLI
A method routes OpenClaw through Claude Code CLI to maintain Claude subscription access after Anthropic blocked direct third-party harnesses. The process involves installing the CLI, setting up an OAuth token, and configuring OpenClaw to use the ACP plugin.

Setting Up Qwen3.5-27B Locally: vLLM vs llama.cpp Comparison
A Reddit user shares practical tips for running Qwen3.5-27B locally, comparing llama.cpp and vLLM backends with specific configuration recommendations and benchmark results.

Method for Transferring User Context from ChatGPT to Claude
A Reddit user shares a two-prompt method for extracting a detailed cognitive profile from ChatGPT and creating a portable AI constitution to transfer to Claude, addressing the difficulty of porting between AI systems.