Hi Varun,
I've been running SLM v3.6.13 in a fully distributed LXC setup (SLM, MCP Hub, OpenClaw each in separate containers) for a few weeks now. Everything is finally stable — thank you for the rapid updates that made this possible. I wanted to share some detailed feedback from this experience, and a suggestion for the future.
Minor Issues in Distributed Deployment
These are all things I encountered while debugging. None of them block functionality, but they made the setup process much harder than it needed to be.
1. CSP headers block WebSocket/SSE connections from LAN addresses
- Problem: The
connect-src directive in src/superlocalmemory/server/security_middleware.py and src/superlocalmemory/server/middleware/security_headers.py strictly allows ws://localhost:* and ws://127.0.0.1:*.
- Impact: Remote browsers accessing the Dashboard via LAN IP (
192.168.50.x) get blocked by Chrome's CSP policy, causing the EventStream (/events/stream) to disconnect and rendering Listeners: 0. I had to manually patch both source files to add my LAN subnet wildcard.
- Suggestion: Consider relaxing
connect-src when SLM_REMOTE=1 is enabled, or mapping it dynamically to allowed network interfaces.
2. SLM_REMOTE=1 + SLM_MCP_STATELESS=1 changes host matching behavior
- Problem: When stateless MCP mode is enabled, the
SLM_MCP_ALLOWED_HOSTS allowlist requires strict exact string matches. Wildcards like * and CIDR ranges like 192.168.50.0/24 do not bypass the Uvicorn host layer as expected for raw HTTP clients.
- Suggestion: A short note in the distributed deployment guide about this behavior would save future users hours of network debugging.
3. Dashboard "Connected Agents" panel shows 0 for non-Claude clients
- Problem: I'm using OpenClaw via MCP Hub. All tools (
remember, recall) work perfectly. However, the Dashboard's "Connected Agents" panel continuously shows 0 for everything (total agents, active, writes, recalls).
- Impact: It seems the audit registry automatically filters out the generic
"agent_id": "mcp_client" or stateless HTTP connections to avoid telemetry pollution, which accidentally hides real OpenClaw agent activities.
- Suggestion: This panel could use a more generic agent detection mechanism, perhaps relying on custom HTTP attribution headers or fallback identifiers.
4. Mesh Peers displays 127.0.0.1:? instead of actual agent identity
- Problem: When MCP Hub or a remote client registers as a mesh peer, the dashboard topology maps it as
127.0.0.1:? rather than rendering the actual client LAN IP or agent type. Makes it hard to distinguish between different connected clients in the Homelab mesh.
5. slm mcp (stdio) crashes when connection is closed after calling mesh_summary
- Reproducible: Run
echo '...' | ssh ... "slm mcp" with a mesh_summary call, then close the pipeline pipe immediately. The daemon's async heartbeat task gets stuck during cleanup and the process times out. This is an edge case, but worth noting for custom pipeline scripts.
🚀 Suggestion: An OpenClaw Plugin
Instead of trying to make SLM natively support every AI client, introducing a lightweight plugin interface for MCP-compatible agents would be a game-changer.
OpenClaw is gaining rapid popularity as an open-source AI assistant. It speaks MCP natively and has an active self-hosted community. An SLM-OpenClaw plugin could:
- Automatically call
session_init / close_session on session start/end.
- Auto-inject relevant memories at conversation start.
- Report tool usage outcomes back to SLM for adaptive learning.
- Inject a stable
agent_id so the Dashboard shows real agent activity.
This is basically what I've been doing manually through AGENTS.md system rules and MCP Hub configuration. A dedicated plugin would make it "just work" for everyone.
I'm not a core developer, but I'd be very happy to share my real-world PVE/LXC logs, usage patterns, and pain points as reference for this plugin design.
Final Thoughts
SLM is an incredibly impressive project — the mathematical foundations (Fisher-Rao metrics, Sheaf Cohomology), the local-first philosophy, and the sheer engineering quality are outstanding. What you've built is more than just a memory tool; it's becoming a software ecosystem for local AI agents. I really hope it gains the recognition it deserves.
Thank you again for your incredible work.
Best regards,
sinking
Hi Varun,
I've been running SLM v3.6.13 in a fully distributed LXC setup (SLM, MCP Hub, OpenClaw each in separate containers) for a few weeks now. Everything is finally stable — thank you for the rapid updates that made this possible. I wanted to share some detailed feedback from this experience, and a suggestion for the future.
Minor Issues in Distributed Deployment
These are all things I encountered while debugging. None of them block functionality, but they made the setup process much harder than it needed to be.
1. CSP headers block WebSocket/SSE connections from LAN addresses
connect-srcdirective insrc/superlocalmemory/server/security_middleware.pyandsrc/superlocalmemory/server/middleware/security_headers.pystrictly allowsws://localhost:*andws://127.0.0.1:*.192.168.50.x) get blocked by Chrome's CSP policy, causing the EventStream (/events/stream) to disconnect and renderingListeners: 0. I had to manually patch both source files to add my LAN subnet wildcard.connect-srcwhenSLM_REMOTE=1is enabled, or mapping it dynamically to allowed network interfaces.2.
SLM_REMOTE=1+SLM_MCP_STATELESS=1changes host matching behaviorSLM_MCP_ALLOWED_HOSTSallowlist requires strict exact string matches. Wildcards like*and CIDR ranges like192.168.50.0/24do not bypass the Uvicorn host layer as expected for raw HTTP clients.3. Dashboard "Connected Agents" panel shows 0 for non-Claude clients
remember,recall) work perfectly. However, the Dashboard's "Connected Agents" panel continuously shows0for everything (total agents, active, writes, recalls)."agent_id": "mcp_client"or stateless HTTP connections to avoid telemetry pollution, which accidentally hides real OpenClaw agent activities.4. Mesh Peers displays
127.0.0.1:?instead of actual agent identity127.0.0.1:?rather than rendering the actual client LAN IP or agent type. Makes it hard to distinguish between different connected clients in the Homelab mesh.5.
slm mcp(stdio) crashes when connection is closed after callingmesh_summaryecho '...' | ssh ... "slm mcp"with amesh_summarycall, then close the pipeline pipe immediately. The daemon's async heartbeat task gets stuck during cleanup and the process times out. This is an edge case, but worth noting for custom pipeline scripts.🚀 Suggestion: An OpenClaw Plugin
Instead of trying to make SLM natively support every AI client, introducing a lightweight plugin interface for MCP-compatible agents would be a game-changer.
OpenClaw is gaining rapid popularity as an open-source AI assistant. It speaks MCP natively and has an active self-hosted community. An SLM-OpenClaw plugin could:
session_init/close_sessionon session start/end.agent_idso the Dashboard shows real agent activity.This is basically what I've been doing manually through
AGENTS.mdsystem rules and MCP Hub configuration. A dedicated plugin would make it "just work" for everyone.I'm not a core developer, but I'd be very happy to share my real-world PVE/LXC logs, usage patterns, and pain points as reference for this plugin design.
Final Thoughts
SLM is an incredibly impressive project — the mathematical foundations (Fisher-Rao metrics, Sheaf Cohomology), the local-first philosophy, and the sheer engineering quality are outstanding. What you've built is more than just a memory tool; it's becoming a software ecosystem for local AI agents. I really hope it gains the recognition it deserves.
Thank you again for your incredible work.
Best regards,
sinking