Swarm Workbench Plan
Hard Gates: Native Mobile App · Real Threads · Rich Markdown · Multi-Agent Swarms

Managed vs. Self-Hosted Agent Workbench

4 Named Lead Agents (@dot, @grok, @ghost, @hermes) · Private Sub-Swarms on Rivet/pi-durable

Managed #1 9.2/10

Slack Pro

Fastest path. Best iOS thread drawer, zero push proxy headaches, Dot already native, Socket Mode for Grok/Ghost/Hermes.

iOS ThreadsS-Tier Drawer
MarkdownBlock Kit + Code (No GFM Table)
Cost$8.75/mo (Bots $0)
Self-Host #1 8.9/10

Mattermost

Runs on charles-netcup. Persistent bot accounts with 1 WebSocket, Slack-clone iOS threads, and full Markdown tables.

iOS ThreadsCollapsed Threads (CRT)
MarkdownFull GFM + Tables + LaTeX
CatchTPNS Push Proxy on Free
Markdown King 8.6/10

Lark / Feishu

Mind-blowing Card 2.0 UI (live streaming Markdown, tables, buttons, collapsible panels) + WS SDK. Heavy suite tax.

iOS ThreadsThread Drawer + Topic
MarkdownS+ Interactive Card 2.0
CatchDot Not Native · Suite Bloat
Failed Gate 4.1/10

Matrix (Element X)

Tonight's live test proved it: Element X iOS collapses m.thread into flat inline quotes and mangles rich Markdown.

iOS ThreadsBroken on Element X
MarkdownPainful / No Tables
RoleKeep for Background Ops Only
Interactive Mobile UX Preview

How Your iPhone Actually Renders Threads & Markdown

Tap each platform to inspect how a 4-agent swarm thread + Markdown report renders on iOS.

6-Axis Capability Polygon

Managed vs. Self-Hosted Tradeoff Shape

Click legend labels below to toggle platforms on/off.

Head-to-Head Metrics

Score Breakdown by Requirement

💡 Key takeaway: Slack wins fastest deployment; Mattermost wins if you want full Markdown tables + self-hosted bots on charles-netcup; Lark wins raw mobile card rendering.
Wildcard Evaluation

Lark / Feishu: Where It actually Is Mind-Blowing vs. Why You’re Reluctant

You said: "only if it's absolutely mind-blowing for this." Here is the honest visual verdict.

Verdict on Lark
Mind-Blowing Cards · High Integration Tax

🚀 What Is Genuinely Mind-Blowing (Beats Slack)

1. Interactive Card JSON 2.0 (Best Mobile Markdown on Earth)

Native GFM tables, syntax-highlighted code blocks, collapsible sub-agent logs, progress bars, and action buttons inside a single message card.

2. Streaming Card Updates (cardkit) + Long-Connection WS

Like Slack Socket Mode, charles-netcup connects outbound via WebSocket (no webhooks) and streams token-by-token into a structured card without rate-limit spam.

3. Topics + Threads Hybrid on Mobile

Supports both "Topic Groups" (every task is a collapsible card thread) and standard chat channels with thread drawers.

⚠️ Why Your Reluctance Is Right

1. Zero Native Dot Support (Must Bridge All 4 Agents)

In Slack, Dot already has native integration. In Lark, we have to build and maintain custom Lark Open Platform apps + event bridges for all 4 agents.

2. Heavy Enterprise App Permission Ceremony

Every bot requires creating an Enterprise Custom App in Lark Admin Console, toggling 15+ granular scopes, and publishing versions inside the tenant.

3. All-In-One Super-App Bloat

iOS app bundles Calendar, Docs, Base, Mail, OKRs, Approval workflows — heavier navigation when all you want is a clean agent command center.

Visual Architecture & Decision Flow

How Your Named Agents + Swarms Map to Threads

1. Named Leads in Chat · Swarms Behind Rivet

Topology

Main channel stays clean. Each thread hosts the 4 named leads; noisy sub-swarms run inside charles-netcup and roll up into one rich Markdown card.

flowchart TB
  subgraph Phone["📱 Your iPhone (Slack / Mattermost / Lark)"]
    CH["#working-room (Clean Main Timeline)"]
    TH["🧵 Task Thread (thread_ts / root_id)"]
    CH -->|"Tap message"| TH
  end

  subgraph Leads["🤖 4 Named Lead Identities (In Thread)"]
    DOT["@dot (Lead)"]
    GROK["@grok (Lead)"]
    GHOST["@ghost / Nebula (Lead)"]
    HERMES["@hermes (Lead)"]
  end

  subgraph Netcup["⚡ charles-netcup (Rivet + pi-durable)"]
    SW1["Ghost Sub-Swarm (Codemode / Racegraft)"]
    SW2["Hermes Sub-Agents (Parallel Delegation)"]
    SW3["Dot / Grok Worker Loops"]
  end

  TH <-->|"@mention / Reply"| Leads
  GHOST <-->|"Rollup Card only"| SW1
  HERMES <-->|"Rollup Card only"| SW2
  DOT <--> SW3
  GROK <--> SW3
            

2. Decision Tree: Which One Do We Spin Up Today?

Go / No-Go

Every option below passes the Native iOS App + Working Thread Drawer gate.

flowchart TD
  START["Hard Gate: Native iOS App + Real Threads + Rich Markdown"] --> Q1{"Want Zero Server Ops
& Dot Native Today?"}
  Q1 -->|"Yes (Fastest)"| SLACK["✅ SLACK PRO ($8.75/mo)
• Socket Mode on netcup
• 4 Named Bots Free
• S-Tier iOS Thread Drawer"]
  Q1 -->|"No, Own It on netcup"| MM["✅ MATTERMOST (Self-Hosted)
• Docker on charles-netcup
• Persistent Bot Accounts
• Full Markdown Tables + CRT"]
  START --> Q2{"Want Best-in-Class
Streaming Markdown Cards?"}
  Q2 -->|"Willing to bridge all 4"| LARK["⚡ LARK / FEISHU
• Card JSON 2.0 + Tables
• Outbound WS SDK
• Higher Admin Setup"]
            
Actionable Next Step

2-Hour Pilot Plan (Pick Track A or Track B)

Matrix stays untouched while we test
Track A · Recommended Default ETA: ~45 mins

Slack Workspace + Socket Mode Bridge

  1. 01Connect Dot natively; create Socket Mode tokens for Grok, Ghost, and Hermes.
  2. 02Map Slack thread_ts directly to per-thread agent sessions on charles-netcup.
  3. 03Enable bot_id wake filter (only wake when explicitly @mentioned, hop-cap = 3).
Track B · Self-Hosted Twin ETA: ~30 mins (Zero User Action)

Mattermost on chat.charlesfeng1.com

  1. 01Spin up Mattermost Docker on charles-netcup behind Cloudflare Tunnel (mm.charlesfeng1.com).
  2. 02Auto-provision persistent accounts: @charles, @dot, @grok, @ghost, @hermes with CRT threads enabled.
  3. 03You download the official Mattermost iOS app, log in once, and test threads + Markdown tables live.