Skip to content

OpenClaw Agent Hub bridge stuck on "OpenClaw is still connecting" after dkg openclaw setup (v10-rc) #272

@anabevc

Description

@anabevc

OpenClaw Agent Hub bridge stuck on "OpenClaw is still connecting" after dkg openclaw setup

Branch: v10-rc
Node version: 10.0.0-rc.1-dev.1777021554.93866af
OS: WSL2 (Ubuntu) on Windows, Node.js 25.8.2
OpenClaw version: 2026.3.31


Summary

After running dkg openclaw setup on a fresh V10 RC installation, the Agent Hub in the DKG Node UI (http://127.0.0.1:9200/ui) shows "OpenClaw is still connecting" and the agent chat remains inactive. The adapter plugin does not appear to establish the bridge connection to the OpenClaw gateway.


Steps to reproduce

  1. Install DKG V10 RC CLI:

    npm install -g @origintrail-official/dkg --allow-prerelease
  2. Initialise and start the node:

    dkg init
    dkg start
  3. Run the OpenClaw adapter setup:

    dkg openclaw setup
  4. The setup completes successfully with all checks:

    [setup] [verify] plugins.slots.memory === "adapter-openclaw" ✓
    [setup] [verify] plugins.slots.contextEngine !== "adapter-openclaw" ✓
    [setup] [verify] openclaw.plugin.json has "kind": "memory" ✓
    
  5. Restart the OpenClaw gateway as instructed:

    openclaw gateway restart
  6. Open the DKG Node UI at http://127.0.0.1:9200/ui → Agent Hub.

  7. Expected: OpenClaw agent chat is active.
    Actual: "OpenClaw is still connecting" — chat remains inactive.


Root cause identified (manual investigation)

Two issues were found by inspecting the resulting ~/.openclaw/openclaw.json:

Issue 1: dkg openclaw setup writes new config, but gateway restart loads a stale backup

The setup script backs up the original config and writes a new one. However, after openclaw gateway restart, the running gateway appears to load the pre-existing config rather than the one written by setup. The plugins.slots, plugins.allow, and plugins.entries.adapter-openclaw keys written by setup were absent after restart.

Evidence: Running openclaw status after restart showed plugin memory-core (the default), not adapter-openclaw. Inspecting ~/.openclaw/openclaw.json confirmed the adapter-openclaw entries were missing.

Issue 2: Setup writes incorrect config key nodeUrl — plugin expects daemonUrl

The setup script populates plugins.entries.adapter-openclaw.config with nodeUrl for the DKG daemon endpoint. However, the adapter's openclaw.plugin.json configSchema defines the correct key as daemonUrl:

"daemonUrl": {
  "type": "string",
  "default": "http://127.0.0.1:9200",
  "description": "DKG daemon HTTP URL"
}

Because of this mismatch, the plugin silently uses the default value even when a custom URL is intended, and — more critically — the misconfigured entry causes the bridge not to establish.

Issue 3: Setup does not set channel.enabled: true in the adapter config

The plugin's configSchema includes:

"channel": {
  "type": "object",
  "properties": {
    "enabled": { "type": "boolean", "default": false },
    "port": { "type": "number", "default": 9201 }
  }
}

The channel.enabled flag defaults to false. The setup script does not set it to true, so the DKG UI ↔ OpenClaw bridge is never activated.

Issue 4: Setup does not set channels.dkg-ui in openclaw.json

The gateway needs a channels.dkg-ui entry to listen on port 9201. The setup adds this via the channels key in openclaw.json ("dkg-ui": { "enabled": true, "port": 9201 }), but this was also lost after the restart loaded the stale config (see Issue 1).


Working config (manual fix)

The following manual config in ~/.openclaw/openclaw.json produces a working Agent Hub connection:

"plugins": {
  "slots": { "memory": "adapter-openclaw" },
  "entries": {
    "adapter-openclaw": {
      "enabled": true,
      "config": {
        "daemonUrl": "http://127.0.0.1:9200",
        "memory": { "enabled": true },
        "channel": { "enabled": true, "port": 9201 }
      }
    }
  },
  "allow": ["discord", "anthropic", "duckduckgo", "adapter-openclaw"],
  "load": {
    "paths": [
      "/path/to/node_modules/@origintrail-official/dkg/node_modules/@origintrail-official/dkg-adapter-openclaw"
    ]
  }
},
"channels": {
  "dkg-ui": { "enabled": true, "port": 9201 }
}

Note: the adapter is bundled inside the main dkg package at node_modules/@origintrail-official/dkg/node_modules/@origintrail-official/dkg-adapter-openclaw — not as a standalone global package.


Expected behaviour

After dkg openclaw setup + openclaw gateway restart:

  • ~/.openclaw/openclaw.json should contain all adapter keys correctly
  • openclaw status should show plugin adapter-openclaw not memory-core
  • The Agent Hub in the DKG Node UI should show an active OpenClaw chat

Suggested fixes

  1. Fix config key mismatch: Replace nodeUrl with daemonUrl in the setup script's config population step.
  2. Set channel.enabled: true in the adapter config written by setup.
  3. Ensure channels.dkg-ui is written to openclaw.json by setup.
  4. Investigate config persistence across gateway restart — the most impactful issue. The setup-written config should survive a openclaw gateway restart. Consider verifying config integrity post-restart in the setup [verify] step.

Environment

  • WSL2 · Ubuntu · Node.js 25.8.2
  • DKG V10 RC: 10.0.0-rc.1-dev.1777021554.93866af
  • OpenClaw: 2026.3.31
  • Adapter bundled at: @origintrail-official/dkg/node_modules/@origintrail-official/dkg-adapter-openclaw

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions