Architecture Snapshot
Captured: 2026-05-06 05:58 UTC
This is a live snapshot generated by probing the VPS at capture time — not a hand-curated diagram. Phase 5 of the docs-site plan will auto-refresh this page daily via cron.
Top-Line Stats
Section titled “Top-Line Stats”- VPS uptime: 1 day, 11h 49m (booted 2026-05-04 18:08 UTC)
- Load average (1/5/15 min): 9.10 / 7.50 / 5.49
- Memory: 31 GB total — 14 GB used, 17 GB available; swap 4.3 GB / 8 GB used
- Disk: 387 GB total — 135 GB used (35%), 252 GB free on
/ - Active agents: 44 directories (42 active +
_retired/+_templates/) - Agent memory DBs: 44 SQLite databases (~5,568 chunks fleet-wide)
- Installed skills: 75 skill directories
- MCP servers configured: 24 in
.mcp.json; 16 connected, 2 need auth, 2 failed at capture time - Active systemd user services: 27 running, 4 failed
- PM2 processes: 8 online
Services Running
Section titled “Services Running”| Service | Description |
|---|---|
openclaw-gateway | OpenClaw Gateway v2026.4.15 (agent dispatch) |
portkey-proxy | Per-agent LLM proxy — routes to Anthropic / OpenAI / Moonshot |
aurora-worker | Aurora in-Quo live orchestrator worker (dispatch + follow-ups) |
quo-mention-receiver | Quo @Aurora mention ingestion (:18798) |
quo-watcher-c4 | Quo WebSocket mention watcher (C4 headless-ws) |
openphone-webhook | OpenPhone/Quo webhook handler — calls, SMS, deal detection |
imessage-webhook | BlueBubbles iMessage webhook handler (:18802) |
anthropic-max-router | Anthropic Max Router — teamsteph account (:18903) |
claude-max-api-proxy@teamsteph | Claude Max API proxy, OpenAI-compatible API surface |
ccr-dispatcher | CCR Dispatcher — non-Anthropic LLM routing (:18902) |
openclaw-mcpo | MCPO MCP→HTTP/OpenAPI gateway (:18922 internal) |
openclaw-mcpo-proxy | MCPO middleware proxy with CHOKEPOINT-1 hooks (:18921) |
openclaw-usage-tracker | Real-time LLM cost dashboard (:18920) |
llmlingua-compress | LLMLingua-2 prompt compression service (:18926) |
investorlift-gateway | InvestorLift gateway server (Playwright/Stealth) |
ollama-tunnel | SSH tunnel VPS→EC2 Mac Ollama (127.0.0.1:11435) |
models-guardian | Agent models.json guardian (max-plan agents) |
openwebui | Open WebUI browser chat for Gemma/Kimi/DeepSeek |
broadcast-audit | Broadcast Response Audit UI (:18812) |
ops-dashboard | RERI Operations Dashboard (static serve) |
reri-dispo-page | RERI Dispo Model Landing Page (:18803) |
bettertrading-dashboard | BetterTrading Next.js Dashboard |
prediction-ingestor | Prediction market data ingestor |
property-view-watcher | Lovable → HubSpot property view sync |
slack-thread-manager | Slack channel thread hygiene monitor |
trigger-dev-worker | Trigger.dev dev worker (Aurora / proj_ghvdlebathcbahioiuiv) |
aurora-session-watchdog (timer) | Aurora session health watchdog |
Failed Services
Section titled “Failed Services”| Service | Description |
|---|---|
gmail-inbox-scanner | Gmail auto-label and inbox harvest |
investorlift-cookie-refresh | InvestorLift Playwright cookie refresh |
omni-contact-resolver | Resolve new contacts into contact_identities |
stack-inventory | Daily snapshot of services/workers/agents/credentials |
⚠️ 4 services in failed state. Per G-FAILED-SERVICE-MTTR, any service failed >24h requires fix, explicit disable, or archive. Check
journalctl --user -u <unit>for root cause.
Active Timers (sample — first 29 at capture time)
Section titled “Active Timers (sample — first 29 at capture time)”| Timer | Next Fire | Description |
|---|---|---|
cost-monitor | ~8s | LLM cost tracking |
dashboard-metrics | ~16s | Ops dashboard metrics refresh |
claude-orphan-reaper | ~30s | Kill stale Claude Code processes |
cgroup-pressure-monitor | ~32s | Memory pressure monitoring |
openclaw-vault-pull | ~59s | Pull vault changes from GitHub (5 min cycle) |
arbitrage-monitor | ~1min | Prediction market arbitrage scan |
gmail-inbox-scanner | ~2min | Gmail inbox labeling |
memory-worker | ~2min | Agent memory flush worker |
bluebubbles-memory-sync | ~3min | iMessage memory sync |
prediction-reconcile | ~3min | Prediction market reconciliation |
hubspot-showing-sync | ~3min | Showing day HubSpot sync |
email-deal-intake | ~3min | Email → deal intake pipeline |
gmail-label-worker | ~3min | Gmail label automation |
monitoring-alerts | ~3min | System health alerting |
portfolio-cache-refresh | ~3min | Portfolio cache refresh |
gmail-email-harvest | ~3min | Gmail email harvesting |
sm-approval-cleanup | ~4min | SalesMsg approval queue cleanup |
prediction-history | ~5min | Prediction market history fetch |
webhook-health-monitor | ~5min | Webhook handler health checks |
showing-followup-trigger | ~5min | Showing day follow-up dispatch |
orphan-approval-sweep | ~5min | Orphan approval record sweep |
email-signal-stage-updater | ~6min | Email signal → deal stage updates |
deal-outreach-auto-approver | ~6min | Auto-approve outreach queue |
aurora-session-watchdog | ~9min | Aurora session health |
prediction-trader | ~11min | Prediction market trade execution |
openclaw-vault-sync | ~13min | Push vault changes to GitHub (15 min cycle) |
sm-broadcast-sync | ~17min | SalesMsg broadcast sync |
prediction-expiring | ~19min | Expiring prediction cleanup |
omni-conversation-linker | ~20min | Cross-channel conversation linking |
Listening Ports (OpenClaw-related)
Section titled “Listening Ports (OpenClaw-related)”| Port | Bind | Service |
|---|---|---|
| 18789 | 127.0.0.1 | OpenClaw Gateway (agent dispatch) |
| 18790 | 0.0.0.0 | HubSpot + DocuSign webhook handler |
| 18791 | 127.0.0.1 | OpenClaw Gateway (Quo internal dispatch) |
| 18792 | 127.0.0.1 | OpenPhone/Quo webhook handler |
| 18793 | 0.0.0.0 | SalesMsg webhook handler |
| 18795 | 127.0.0.1 | OpenClaw API proxy (internal) |
| 18797 | 0.0.0.0 | Twilio Voice webhook handler |
| 18798 | 127.0.0.1 | Quo @Aurora mention receiver |
| 18802 | 0.0.0.0 | BlueBubbles iMessage webhook |
| 18812 | 0.0.0.0 | Broadcast Response Audit UI |
| 18820 | 127.0.0.1 | HubSpot webhook bridge |
| 18850 | 127.0.0.1 | Open WebUI (model testing chat) |
| 18900 | 127.0.0.1 | Portkey LLM proxy |
| 18902 | 127.0.0.1 | CCR Dispatcher (non-Anthropic routing) |
| 18910 | 127.0.0.1 | Claude Max API proxy |
| 18920 | 127.0.0.1 | OpenClaw usage tracker dashboard |
| 18921 | 127.0.0.1 | MCPO middleware proxy |
| 18922 | 127.0.0.1 | MCPO MCP→HTTP/OpenAPI gateway |
| 18923 | 127.0.0.1 | OpenAPI Filesystem (docker) |
| 18924 | 127.0.0.1 | OpenAPI Time (docker) |
| 18925 | 127.0.0.1 | OpenAPI Memory Graph (docker) |
| 18926 | 127.0.0.1 | LLMLingua-2 compression service |
| 3847 | 127.0.0.1 | InvestorLift gateway server |
| 8890 | 127.0.0.1 | Aurora Portal dashboard backend |
| 8891 | 127.0.0.1 | InvestorLift Deals API |
| 18840 | Tailscale | OSIL Langfuse Web (T10 eval infra) |
| 18841 | Tailscale | OSIL Langfuse Worker |
Ports 80, 22, 631, 8443, 8444, 9050 are system/nginx/SSH — omitted. Full port map in
CLAUDE.md→ Webhook Service Port Map.
PM2 Processes
Section titled “PM2 Processes”| ID | Name | Uptime | Restarts | Memory | Status |
|---|---|---|---|---|---|
| 7 | discord-lovable-bridge | 31h | 1 | 91.9 MB | online |
| 5 | discord-reaction | 35h | 0 | 89.6 MB | online |
| 3 | hubspot | 23h | 20 | 136.3 MB | online |
| 6 | inbound-alert-watcher | 12h | 1 | 91.3 MB | online |
| 0 | lovable-api | 5h | 11 | 201.6 MB | online |
| 4 | pgmq-consumer | 35h | 0 | 87.7 MB | online |
| 2 | salesmsg | 12h | 2 | 153.8 MB | online |
| 1 | twilio | 35h | 0 | 75.3 MB | online |
Note:
lovable-api(11 restarts) andhubspot(20 restarts) show elevated restart counts — worth investigating if counts continue climbing.
Agents
Section titled “Agents”44 directories in /home/opsadmin/.openclaw/agents/ (42 active + _retired/ + _templates/).
Three-tier structure per Portkey config:
| Tier | Model | Count | Role |
|---|---|---|---|
| max-plan | Claude Max (flat-rate) | 39 agents | Operations + Automation |
| gemma | Gemma 4 31B (local/OpenRouter) | 1 agent | Code execution + cheap tasks |
| Strategic (Opus direct) | claude-opus-4-6/4-7 | 2 agents | Highest-stakes reasoning |
Sample agents: acquisitions, angel-calls, atlas, aurora, betterbets, betterfiles, dispo, solara, and 36 others.
Agent Memory DBs
Section titled “Agent Memory DBs”44 SQLite databases in /home/opsadmin/.openclaw/memory/ — one per agent. Each DB uses vec0 + FTS5 hybrid search (70% vector via Voyage-4, 30% keyword). Approximately 5,568 chunks fleet-wide (per last fleet audit).
Schema per DB: chunks, chunks_fts, chunks_vec, dead_letters, embedding_cache, pending_saves, meta, files.
⚠️ Known anomaly:
acquisitions.sqlitehas only 1 chunk. Investigation tracked inopenclaw-fragmentation-fix-2026-05-01.md§A2.3.
MCP Servers Connected
Section titled “MCP Servers Connected”24 configured in .mcp.json — 16 connected at capture time:
| Server | Status |
|---|---|
| openclaw-tools | ✓ Connected |
| aurora-orchestrator | ✓ Connected (via MCPO) |
| gemma | ✓ Connected |
| context7 | ✓ Connected |
| 21st-magic | ✓ Connected |
| dune | ✓ Connected |
| supabase (claude.ai) | ✓ Connected |
| hubspot (claude.ai) | ✓ Connected |
| slack (claude.ai) | ✓ Connected |
| gmail (claude.ai) | ✓ Connected |
| google-calendar (claude.ai) | ✓ Connected |
| cloudflare (claude.ai) | ✓ Connected |
| godaddy (claude.ai) | ✓ Connected |
| quo (claude.ai) | ✓ Connected |
| docusign (claude.ai) | ✓ Connected |
| zoom (claude.ai) | ✓ Connected |
| google-drive (claude.ai) | ⚠ Needs authentication |
| make (claude.ai) | ⚠ Needs authentication |
| figma | ✗ Failed to connect |
| ui-expert | ✗ Failed to connect |
Remaining 4 (perplexity, playwright, shortio, sequential-thinking) loaded as on-demand/deferred tools.
Portkey Tier Config — Registered Models
Section titled “Portkey Tier Config — Registered Models”The proxy routes by model alias. Registered model tiers at capture time:
| Category | Models |
|---|---|
| Anthropic (Claude) | claude-opus-4-7, claude-opus-4-6, claude-opus-4, claude-sonnet-4-6, claude-sonnet-4, claude-haiku-4-5-20251001, claude-haiku-4-5 |
| Embedding | voyage-4, voyage-3 |
| Gemma (Google) | gemma-4-31b-it, gemma-4-26b-a4b-it (with and without google/ prefix) |
| Perplexity | sonar, sonar-pro, sonar-reasoning-pro, sonar-deep-research (with and without perplexity/ prefix) |
No API keys or credentials included. Full routing config at
/home/opsadmin/.openclaw/portkey-proxy/tier-config.json.
Where to Dig In
Section titled “Where to Dig In”- Visual architecture diagrams → Master Architecture
- How the system fits together → How It Works
- Full port registry →
CLAUDE.mdWebhook Service Port Map (authoritative until Phase 1.5 shipsworkspace/port-registry.md) - Agent registry →
/home/opsadmin/.openclaw/workspace/AGENT-REGISTRY.md - Service health →
systemctl --user status openclaw-gateway portkey-proxy