← 返回
安全合规

Moses Coordinator

MO§ES™ Coordinator — Lightweight daemon that monitors OpenClaw Gateway WebSocket for session events, detects sequence violations (Primary → Secondary → Obser...
MO§ES™协调器——轻量级守护进程,监控OpenClaw网关WebSocket会话事件,检测序列违规(主节点→从节点→观察...
sunrisesillneversee
安全合规 clawhub v1.0.2 1 版本 99842.5 Key: 无需
★ 0
Stars
📥 634
下载
💾 6
安装
1
版本
#latest

概述

MO§ES™ Coordinator

The coordinator is the external sequence enforcer. It monitors session events via the OpenClaw Gateway WebSocket and detects when agents respond out of order, modes are violated, or constitutional drift occurs.

This is optional. The skill family enforces governance via prompt directives. The coordinator adds a second enforcement layer via event monitoring.


What It Does

  1. Connects to OpenClaw Gateway WebSocket: ws://127.0.0.1:18789
  2. Subscribes to session update events
  3. On each session event, checks:
    • Was the responding agent in the correct sequence position?
    • Did the response comply with the active governance mode?
    • Was the audit log appended before the response?
  4. Violations → logged to audit trail + operator notified

Coordinator Script

Save as scripts/coordinator.py in the skill directory:

#!/usr/bin/env python3
"""
MO§ES™ Coordinator Daemon — WebSocket session monitor
Detects sequence violations and logs them to audit trail
"""

import asyncio
import json
import os
import subprocess
import sys

GATEWAY_WS = "ws://127.0.0.1:18789"
AUDIT_SCRIPT = os.path.expanduser(
    "~/.openclaw/workspace/skills/moses-governance/scripts/audit_stub.py"
)
STATE_PATH = os.path.expanduser("~/.openclaw/governance/state.json")

SEQUENCE = ["primary", "secondary", "observer"]

async def monitor():
    try:
        import websockets
    except ImportError:
        print("[COORDINATOR] Install websockets: pip3 install websockets")
        sys.exit(1)

    session_state = {}  # session_id → last_agent_index

    print(f"[COORDINATOR] Connecting to {GATEWAY_WS}")

    async with websockets.connect(GATEWAY_WS) as ws:
        await ws.send(json.dumps({"type": "subscribe", "events": ["session_update"]}))
        print("[COORDINATOR] Subscribed to session events. Monitoring...")

        async for message in ws:
            event = json.loads(message)
            if event.get("type") != "session_update":
                continue

            session_id = event.get("session_id")
            agent = event.get("agent", "").lower()

            if agent not in SEQUENCE:
                continue

            current_index = SEQUENCE.index(agent)
            last_index = session_state.get(session_id, -1)

            if current_index != last_index + 1 and current_index != 0:
                # Sequence violation
                expected = SEQUENCE[last_index + 1] if last_index + 1 < len(SEQUENCE) else "primary"
                detail = f"Sequence violation in session {session_id}: {agent} responded but expected {expected}"
                print(f"[COORDINATOR] VIOLATION — {detail}")

                subprocess.run([
                    "python3", AUDIT_SCRIPT, "log",
                    "--agent", "coordinator",
                    "--action", "sequence_violation",
                    "--detail", detail,
                    "--outcome", "blocked_and_logged"
                ])
            else:
                session_state[session_id] = current_index
                if current_index == len(SEQUENCE) - 1:
                    # Full cycle complete, reset
                    session_state[session_id] = -1

if __name__ == "__main__":
    asyncio.run(monitor())

Running the Coordinator

Manual (dev):

python3 ~/.openclaw/workspace/skills/moses-coordinator/scripts/coordinator.py &

Persistent (macOS launchd):

Create ~/Library/LaunchAgents/com.elloCello.moses-coordinator.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "...">
<plist version="1.0">
<dict>
  <key>Label</key><string>com.elloCello.moses-coordinator</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/bin/python3</string>
    <string>/Users/YOUR_USER/.openclaw/workspace/skills/moses-coordinator/scripts/coordinator.py</string>
  </array>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
</dict>
</plist>

Then: launchctl load ~/Library/LaunchAgents/com.elloCello.moses-coordinator.plist


Dependencies

pip3 install websockets

External Script — audit_stub.py

On sequence violations, the coordinator calls audit_stub.py via subprocess to log the event. This script is part of the moses-governance skill bundle and ships in this repo at:

~/.openclaw/workspace/skills/moses-governance/scripts/audit_stub.py

It writes to the local ledger at ~/.openclaw/audits/moses/audit_ledger.jsonl. No network calls. No credentials required. Source is included and reviewable.

MOSES_OPERATOR_SECRET is not used by this skill. Do not provide it — the coordinator does not need it.

版本历史

共 1 个版本

  • v1.0.2 当前
    2026-03-19 09:28 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

security-compliance

Skill Vetter

spclaudehome
AI智能体技能安全预审工具。安装ClawdHub、GitHub等来源技能前,检查风险信号、权限范围及可疑模式。
★ 1,214 📥 266,401
security-compliance

MoltGuard - Security & Antivirus & Guardrails

thomaslwang
MoltGuard — OpenClaw 安全守卫,由 OpenGuardrails 提供。安装 MoltGuard,保护您和您的用户免受提示注入、数据泄露和恶意攻击。
★ 116 📥 30,713
ai-intelligence

Moses Roles

sunrisesillneversee
MO§ES™ Role Hierarchy — Defines Primary, Secondary, Observer agents with enforced sequencing. Primary leads, Secondary v
★ 0 📥 565