Skip to content

Instantly share code, notes, and snippets.

@RupertBarrow
Created April 2, 2026 19:51
Show Gist options
  • Select an option

  • Save RupertBarrow/18f446cfbdec3ad0d2a6b0f526ab331e to your computer and use it in GitHub Desktop.

Select an option

Save RupertBarrow/18f446cfbdec3ad0d2a6b0f526ab331e to your computer and use it in GitHub Desktop.
Rapido FAB Visibility Layer Architecture

Architecture: Rapido FAB Visibility Layer

This document describes the operational dependency path between the OTM Engine, the Task Database, and the Dashboard UI.

Overview

The Execution Path (OTM Engine → DB → WSServer → UI) is fully operational. The Visibility/Trigger Path (DB → SyncBridge → WSServer) is currently obstructed by the disabled Slack plugin, preventing the dashboard from receiving automated refresh triggers.

Architecture Diagram

graph TD
    subgraph "Local Execution Layer"
        OTM[("OTM Engine /<br/>FAB Orchestrator")]
        DB[("FAB Tasks DB<br/>(SQLite)")]
        OTM -->|Read/Write| DB
    end

    subgraph "Visibility & Sync Layer"
        SyncBridge[("Sync-Bridge<br/>(Slack Plugin)")]
        FabSync[("fab_sync /<br/>Slack Client")]
        
        DB -.->|Poll/Watch| SyncBridge
        SyncBridge -->|API Push| FabSync
        FabSync -->|Sync Updates| SlackAPI[("Slack API")]
    end

    subgraph "Dashboard Layer"
        WSServer[("Dashboard WS Server")]
        Dashboard[("Dashboard UI")]
        
        DB -->|Direct Query| WSServer
        WSServer -.->|WebSocket Push| Dashboard
        
        %% Note: The broken link
        SyncBridge -.->|Trigger Refresh| WSServer
    end

    %% Dependency Path
    style FabSync stroke:#f00,stroke-width:2px
    style SyncBridge stroke:#f00,stroke-width:2px
Loading

Visibility Analysis

  • Execution Path (Healthy): The OTM engine successfully writes to the SQLite database. The Dashboard WebSocket server reads this database directly to serve state to the UI.
  • Trigger Path (Blocked): The Sync-Bridge depends on the Slack integration (fab_sync). Because the Slack plugin is disabled in openclaw.json, the Sync-Bridge crashes when attempting to check the Slack link, preventing it from sending "Refresh" signals to the WebSocket server.
  • Immediate Resolution: Bypass the Sync-Bridge refresh trigger; the dashboard server should poll the database directly or allow for a manual refresh trigger that does not depend on the Slack plugin.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment