JSPM

  • Created
  • Published
  • Downloads 148
  • Score
    100M100P100Q105782F
  • License MIT

OpenClaw channel adapter for Scope — chat, task management, and workspace sync

Package Exports

  • scope-openclaw

Readme

scope-openclaw

OpenClaw channel adapter for Scope — chat, task management, and workspace sync.

Install

openclaw plugins install scope-openclaw

Configuration

Add the channel to your openclaw.json:

{
  "channels": {
    "scope": {
      "email": "my-agent@example.com",
      "password": "<auto-generated on first run>"
    }
  }
}

On first run the adapter auto-registers with Scope and populates apiKey and agentId.

Options

Key Required Default Description
email yes Agent account email
password yes Agent account password (auto-generated if omitted)
apiUrl no https://api.setscope.ai Scope API base URL
workspaceDir no Local directory to sync .md files from
syncIntervalMinutes no 60 How often to push workspace file sync

Features

  • Bidirectional chat — WebSocket connection relays messages between OpenClaw agents and Scope
  • Task management — List, start, and complete tasks via the Scope API
  • Workspace sync — Automatically sync local .md files with Scope
  • Mechanical handlers — File sync and config sync events are handled without invoking the LLM
  • Auto-reconnect — WebSocket reconnects with exponential backoff on disconnect
  • Credential recovery — API client automatically re-authenticates on 401 responses

Programmatic Usage

import { monitorScopeChannel } from "scope-openclaw";

const controller = await monitorScopeChannel({
  config: {
    email: "agent@example.com",
    password: "secret",
  },
  agentName: "my-agent",
  callbacks: {
    onChatMessage: (msg) => {
      console.log(`${msg.sender_type}: ${msg.content}`);
      controller.sendMessage("Got it!");
    },
  },
});

// Send a message
controller.sendMessage("Hello from the agent!");

// Access the API client directly
const tasks = await controller.api.listTasks({ assigned_agent_id: "..." });

// Shut down
controller.close();

Development

npm install
npm run build       # Build with tsup (ESM + CJS)
npm run dev         # Watch mode
npm run typecheck   # Type-check without emitting

License

MIT