#Multiple node runners on single server

1 messages · Page 1 of 1 (latest)

still island
#

Is it possible to run multiple node runners on a single server if so how? The Openclaw node install does pair and install in a single step; how do you create more than 1? I’m having multiple bots and crons block my node runners which causes huge problems

neon gorgeBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

jaunty tuskBOT
#

Yep — but in most cases you don’t want “more node hosts”, you want more Gateway concurrency, because the Gateway is what schedules/serializes work (bots, crons, tool calls).

1) Multiple node hosts on one server (the thing behind openclaw node install)

openclaw node install is basically “one node host per OpenClaw state dir” because the node identity is stored in ~/.openclaw/node.json.

So to run multiple node hosts on the same machine, you need separate state dirs (or separate Linux users/containers). Example (foreground processes):

# node host A
OPENCLAW_STATE_DIR=~/.openclaw-node-a \
openclaw node run --host <gateway-host> --port 18789 --node-id node-a --display-name "Node A"

# node host B
OPENCLAW_STATE_DIR=~/.openclaw-node-b \
openclaw node run --host <gateway-host> --port 18789 --node-id node-b --display-name "Node B"
#

Then approve pairing on the gateway host:

openclaw devices list
openclaw devices approve <requestId>

Docs:

Note: installing multiple of these as system services on the same Linux user is awkward because openclaw node install installs a single service name; easiest is separate OS users (each user gets their own ~/.openclaw/… + their own user service), or containers.


2) If “bots + crons block my node runners”: fix concurrency, not node count

#

What you’re describing usually comes from the command queue + concurrency caps in the Gateway, not from the node host count.

Things to check/tune:

A) Increase global agent concurrency
The queue caps overall parallelism with agents.defaults.maxConcurrent (see queue doc). If this is low, one long run can starve everything else.

B) Increase cron concurrency
Crons have their own cap:

{
  cron: { maxConcurrentRuns: 2 }
}

(From config docs: https://docs.openclaw.ai/gateway/configuration)

#

C) Make sure DMs aren’t all forced into one shared session
For multi-user/bot setups you typically want:

{
  session: { dmScope: "per-channel-peer" }
}

(Also in the config docs page above.)

D) Consider multi-agent routing if you’re running multiple bots
Multiple isolated agents (separate workspaces/sessions) is the “one server, many bots” setup:
https://docs.openclaw.ai/concepts/multi-agent.md


If you paste:

  1. openclaw --version
#
  1. the relevant bits of your ~/.openclaw/openclaw.json (redact tokens)
    …I can point to the exact knob that’s causing the blocking in your setup.
still island
#

Concurrency didn’t seem to solve the problem. I think there are long running crons which are holding it up. Is there a way to see how many tasks the node runner is doing?

jaunty tuskBOT
#

There isn’t a great “openclaw node show me current in-flight commands” view yet — the node host is basically just an RPC target for system.run, and the place that knows what’s queued/running is the Gateway (cron scheduler + command queue).

What you can do today to see what’s holding things up:

1) See if cron has runs piling up / long-running runs

On the gateway host:

openclaw cron status
openclaw cron list
openclaw cron runs --id <jobId> --limit 20

This is the doc-recommended ladder for “cron not firing / stuck / no delivery” too:
https://docs.openclaw.ai/automation/troubleshooting

Cron overview (and where run logs live) here:

#

https://docs.openclaw.ai/automation/cron-jobs

2) Watch the gateway logs for “queued” + which cron/job is active

openclaw logs --follow

Look for lines around:

  • cron: (scheduler + job starts/finishes)
  • queue messages like “queued for …ms” (means you’re saturated and waiting for a lane/concurrency slot)
  • system.run / nodes run / node.invoke calls (these correlate to node-host work)

Logs CLI doc: https://docs.openclaw.ai/cli/logs

3) Quick “what sessions are active right now?”

This doesn’t show “node tasks”, but it does show whether you have lots of active sessions (including cron isolated sessions) recently:

#
openclaw sessions --active 120 --all-agents

Docs: https://docs.openclaw.ai/cli/sessions

4) On the node host itself: easiest visibility is “run it in foreground”

If you temporarily stop the service and run:

openclaw node run --host <gateway-host> --port 18789

…you’ll typically see each incoming system.run request as it happens. (This is the most direct way to answer “is the node busy?”)

Node host doc: https://docs.openclaw.ai/cli/node.md