Shroomy Architecture

Mac mini · Remote production 74.208.95.219 · OpenClaw · Relay · Memory / Distillation
Snapshot: 2026-03-15 · connecting…
/portal canonical Gateway :18789 Session API :18890 Neo4j 443 nodes Discord + Telegram
Operational Live and functioning
Needs Wiring Built, needs integration
In Progress Actively building
Updated Wired this session (Mar 15)
Missing Absent or broken
Local Mac mini (dev/control)
Remote eager-curran (74.208.95.219)
Shared Spans both planes
Cloud External service

System Planes

LOCAL · MAC MINI

Operational
ComponentDetailStatus
com.shroomy.agentlaunchd → main.py · Telegram polling + APSchedulerOK
Local GraphMemgraph-compatible Bolt :7687OK
Local Ollama:11434 · llama3:latest (health check)OK
OpenClaw GatewayLaunchAgent · :18789 loopback · v2026.3.12OK
Filesystemheartbeat/ · memory/ · schema/ · logs/OK
ChannelsALL DISABLED (dev/control node only)Disabled

REMOTE · EAGER-CURRAN

74.208.95.219
ServiceManagerPortRoleStatus
nginx / Plesksystemd:80/:443TLS ingress, route terminationOK
OpenClaw Gatewaysystemd:18789Realtime chat for /portal · OK
Shroomy Session APIsystemd:18890Session CRUD + Graphiti + distillationOK
discussion-apiPM2:18804/discussion state, users, attachments, AI actionsOK
Ingestion Preprocessorsystemd:18793Dedup, sanitize, extractOK
Graphiti MCPPM2:3010Episode ingestion + graph searchOK
Neo4jsystemd:7474/:7687Primary graph (443 nodes)OK
Ollamasystemd:11434llama3.2-vision:11b + nomic-embedOK
agent-bridgePM2:18790Token-auth remote opsOK
openclaw-layer6PM2internalSelf-healing + reconnectOK
relay-discord-botPM2internalDiscord + WhatsApp relayOK
monitoring-dashboardPM2:3011Host observabilityOK
PostgreSQLsystemd:5432Relay + discussion + hosted appsOK
Redissystemd:6379Shared cacheOK
ChromaDBsystemd:8000Auxiliary vector storeOK

RELAY BOT

Operational
ComponentDetailStatus
relay-discord-botPM2 · tsx · Discord.js · PrismaOK
Discord ingresslib/discord/bot.tsOK
WhatsApp ingresslib/whatsapp/client.tsOK
AI pipelinelocal | openai | anthropic | customOK
Loop guardshouldProcessMessage depth checkOK
PersistencePrisma → PostgreSQL :5432OK

Public Routes Remote

/portal Remote

Operational
Canonical web chat UI
Static app behind nginx/Plesk
Single public destination
Legacy paths redirect here

/gw/ Remote

Operational
→ Gateway :18789
Realtime WebSocket chat
Transport for /portal

/session-api/ Remote

Operational
→ Session API :18890
Session CRUD · Graphiti
Distillation endpoints

/discussion Remote

Operational
Native discussion workspace
Categories + channels + attachments
Discord import + AI in-thread actions

/api/dashboard Remote

Operational
JSON source for dashboard
Fed by live exporters
Mac mini + remote collectors

Integration Hub · Session API :18890 Remote

Session Persistence Remote

Operational
Token-scoped sessions
Neo4j: WebchatSession + WebchatMessage
Entity references + edges

Graph / Memory Bridge Remote

Operational
Transcript → add_memory
Status/search passthrough
Graphiti MCP :3010 bridge

Distillation Hub Remote

Operational
POST /consult · GET /consult/:id
GET /learned-patterns
GET /distillation/status
POST /distillation/flush-digest

Knowledge Distillation Remote

teacher-client.mjs Remote

Operational
Wraps standalone Copilot CLI
Execution/planning prompts
execFile(copilot -p ...)

distillation-pipeline.js Remote

Operational
Normalize → classify → score
Deduplicate → enrich → store
LearnedPattern + TeacherConsultation

discord-digest.js Remote

Wired
Batched digest summaries
Posts to #status-reports
DISCORD_BOT_TOKEN wired verified
via systemd service env

Pattern Storage Remote

Operational
TeacherConsultation →PRODUCED→
LearnedPattern →REFERENCES→
Entity + indexes

Neo4j Graph · 1405 Nodes Remote

Node Labels Remote

WebchatMessage 1122 · WebchatSession 70
Episodic 22 · Entity 26
WebchatUser 6 · LearnedPattern 77
TeacherConsultation 77 · SynProgram 2 · PainPoint 1

Relationships Remote

OWNS · HAS_MESSAGE · RELATES_TO
MENTIONS · NEXT_EPISODE
PRODUCED · REFERENCES

Data Flows Shared

Browser → /portal Chat Remote

Operational
Browsernginx :443/gw/ WSGateway :18789Ollama + GraphitiResponse

Session Persistence Remote

Operational
/session-api/:18890Preprocessor :18793Neo4j graph + Graphiti add_memory

Discussion Workspace Remote

Operational
Browser/discussiondiscussion-api :18804Prisma/PostgreSQLattachments on disk

Knowledge Distillation Remote

Operational
POST /consultteacher-clientCopilot CLIpipelineNeo4j (LearnedPattern)Discord digest

Relay Bot Remote

Operational
Discord / WhatsApprelay-botloop guardAI providersPrisma/PGreply

Local Shroomy Local

Operational
Telegrammain.pyMemgraph :7687heartbeatagent-bridge :18790

Dashboard Collectors Shared

Operational
Mac mini collectorsigned payload/api/dashboardsnapshot refresh | Remote probePM2/systemd healthUI badges

PM2 Runtime · Verified on Host Remote

relay-discord-bot Remote

online · 41h
tsx · Node 22.22.1
2 restarts

discussion-api Remote

online · PM2
Node HTTP API · :18804
Discussion channels + AI actions

agent-bridge Remote

online · 3D
Node 22.22.0
:18790

graphiti-mcp Remote

online · 3D
Python fork
:3010

openclaw-layer6 Remote

online · 26h
Node 22.22.1
14 restarts

monitoring Remote

online · 2D
Next.js :3011
env=production

AI & Memory Services

Ollama (Remote) Remote

Operational
llama3.2-vision:11b chat + vision
nomic-embed-text 768d embed
systemd · :11434

Ollama Cloud Cloud

Operational
minimax-m2.5 primary chat
kimi-k2.5 fallback
qwen3-coder-next subagents
qwen3-vl:235b vision
gemma3:4b graphiti + L6

Graphiti MCP :3010 Remote

Operational
add_memory · search_nodes
search_memory_facts
MCP-over-HTTP tool surface

Operations & Maintenance

Scheduled Jobs verified Remote

Operational
openclaw-compaction daily 01:00 · systemd timer
openclaw-backup daily 03:30 · systemd timer
failopen-recovery every 10min

Always-On Remote

Operational
failopen-recovery every 10min
memory-watcher always on
Pushes files → Graphiti episodes

Self-Healing Remote

Operational
openclaw-layer6 PM2
Reconnect + fix-pattern
monitoring-dashboard :3011

Port Map Shared

Public Remote

:80/:443 nginx
:18789 Gateway (/gw/)
:18890 Session API (/session-api/)

Internal Remote

:18790 agent-bridge
:18793 preprocessor
:18792 secondary gateway
:3010 Graphiti · :3011 monitoring

Data Stores Remote

:7474/:7687 Neo4j
:5432 PostgreSQL · :6379 Redis
:8000 ChromaDB · :11434 Ollama

Other / Local Shared

:3000 DutyStation · :3007 jovial-meninsky
:8443/:8880 Plesk · :22 sshd
Local: :7687 Memgraph · :11434 Ollama

⚡ Session Update · Mar 15, 2026

8 components wired this session:
· M1 Vector Search — pgvector + HNSW indexes installed, 5 tables created
· M2 Embed Pipeline — 624 embeddings (Neo4j → Ollama → pgvector), PM2 cron every 6h
· M5 Hybrid Search — NEW three-tier cascade (pgvector cosine + Neo4j graph + BM25 keyword), port 18895
· M6 Dream Migration — NEW dream-cycle.mjs with consolidation/association/reflection, PM2 cron daily 02:00
· M8 Reflection Pipeline — Weekly reflection via dream-cycle.mjs
· Discord Digest — DISCORD_BOT_TOKEN verified in systemd env
· Scheduled Jobs — 3 systemd timers verified (compaction, backup, failopen)
· Dashboard Collectors — Health API polling operational

10-Model Cognitive Integration · Sentient Upgrade Directive Shared

SENTIENT UPGRADE DIRECTIVE Shared

SOUL.md Property 17 · MEMORY.md
M1 · Vector Search updated
nomic-embed-text
pgvector VECTOR(768) · HNSW index
Wired
M2 · Embed Pipeline updated
embed-pipeline.mjs
Neo4j → Ollama → pgvector · 624 vectors
Wired
M3 · RLM Engine
gemma3:4b cloud
Recursive decomp
Wire
M4 · Graph DB
Neo4j :7687
1405 nodes active
OK
M5 · Hybrid Search new
pgvector + Neo4j + BM25
Three-tier RRF cascade · :18895
Wired
M6 · Dream Migration new
dream-cycle.mjs
PM2 cron daily 02:00 · 10 dreams
Wired
M7 · Emotional Embed
5D state → embed
Similarity matching
Wire
M8 · Reflection Pipeline updated
Weekly reflection
dream-cycle.mjs · consolidation + association
Wired
M9 · Context Continuity
cognitive_context
Boot injection
Wire
M10 · Auto-Discovery
Correlation analysis
Auto DEPENDS_ON
Wire

Architectural Takeaways

/portal = canonical UI Remote

Browser users enter via /portal.
Realtime via /gw/.
Persistence via /session-api/.

Session API = hub Remote

Session persistence, Graphiti bridge,
distillation endpoints, digest hooks.

:18790 ≠ :18890 Remote

agent-bridge = :18790
session-api = :18890
Critical port split.

Relay = sibling ingress Remote

Not the portal. Discord/WhatsApp
with own AI pipeline + Prisma.

Discussion = native workspace Remote

Categories, channels, users,
attachments, imported Discord history,
now backed by Prisma/PostgreSQL.

Local = control node Local

Telegram, heartbeats, local graph.
Not the public web runtime.

Distillation = production Remote

Teacher consult, pattern storage,
Discord digests on remote host.