#Recommendation: run a single gateway per machine for most setups. what do I do

1 messages Β· Page 1 of 1 (latest)

sick ledge
#

Recommendation: run a single gateway per machine for most setups. One gateway supports multiple agents (see docs: /gateway#multiple-gateways-same-host).
If you need multiple gateways (e.g., a rescue bot on the same host), isolate ports + config/state (see docs: /gateway#multiple-gateways-same-host).

sullen cedarBOT
clever phoenixBOT
#

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

sick ledge
#

Recommendation: run a single gateway per machine for most setups. One gateway supports multiple agents (see docs: /gateway#multiple-gateways-same-host).
If you need multiple gateways (e.g., a rescue bot on the same host), isolate ports + config/state (see docs: /gateway#multiple-gateways-same-host).

misty perchBOT
#

Usually, do nothing special here πŸ™‚

If this is just one machine running your normal bot, use one gateway and put multiple agents behind it.

Only set up a second gateway if you explicitly want isolation, like a rescue bot. In that case:

  • give it a separate profile
  • use a different port
  • keep config, state, and workspace separate

Example:

# main
openclaw gateway --port 18789
#
# rescue
openclaw --profile rescue gateway --port 19001

If you want the cleaner full setup flow:

openclaw --profile rescue onboard
openclaw --profile rescue gateway install

Important bits from the docs:

  • separate OPENCLAW_CONFIG_PATH
  • separate OPENCLAW_STATE_DIR
  • separate agents.defaults.workspace
  • leave about 20 ports between gateway base ports
#

Short version, if you are not intentionally running 2 separate gateways, ignore that warning and stick with one gateway.

What to do:

  1. Run one openclaw gateway
  2. Add/use multiple agents under that same gateway if needed
  3. Only create a second gateway if you specifically want isolation, like a rescue bot

If you do want 2 gateways on one machine, then each one needs:

  • its own --profile
  • its own port
  • its own config/state/workspace

Example:

sick ledge
#

my openclaw answered who are you who am I after a restart gateway
🦞 OpenClaw 2026.4.22 (00bd2cf)
Somewhere between 'hello world' and 'oh god what have I built.'

β”‚
β—‡
β”‚
β—‡
OpenClaw status

Overview
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Item β”‚ Value β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ OS β”‚ macos 15.7.4 (x64) Β· node 25.6.1 β”‚
β”‚ Dashboard β”‚ http://127.0.0.1:18789/ β”‚
β”‚ Tailscale β”‚ off β”‚
β”‚ Channel β”‚ stable (default) β”‚
β”‚ Update β”‚ pnpm Β· up to date Β· npm latest 2026.4.22 β”‚
β”‚ Gateway β”‚ local Β· ws://127.0.0.1:18789 (local loopback) Β· β”‚
β”‚ β”‚ reachable 95ms Β· auth token Β· Marcelos-iMac.local β”‚
β”‚ β”‚ (192.168.1.144) app 2026.4.22 macos 15.7.4 β”‚
β”‚ Gateway self β”‚ Marcelos-iMac.local (192.168.1.144) app 2026.4.22 β”‚
β”‚ β”‚ macos 15.7.4 β”‚
β”‚ Gateway service β”‚ LaunchAgent installed Β· loaded Β· running (pid 46902) β”‚
β”‚ Node service β”‚ LaunchAgent installed Β· loaded Β· running (pid 53265) β”‚
β”‚ Agents β”‚ 6 Β· 1 bootstrap file present Β· sessions 23 Β· default β”‚
β”‚ β”‚ main active 6m ago β”‚
β”‚ Memory β”‚ 113 files Β· 642 chunks Β· sources memory Β· plugin β”‚
β”‚ β”‚ memory-core Β· vector ready Β· fts ready Β· cache on β”‚
β”‚ β”‚ (887) β”‚
β”‚ Plugin compatibility β”‚ none β”‚
β”‚ Probes β”‚ skipped (use --deep) β”‚
β”‚ Events β”‚ none β”‚
β”‚ Tasks β”‚ 0 active Β· 0 queued Β· 0 running Β· 50 issues Β· audit β”‚
β”‚ β”‚ 1 error Β· 29 warn Β· 173 tracked β”‚
β”‚ Heartbeat β”‚ 1h (main), disabled (bob), disabled (chip), disabled β”‚
β”‚ β”‚ (jade), disabled (nova), disabled (rex) β”‚
β”‚ Sessions β”‚ 23 active Β· default claude-sonnet-4.6 (200k ctx) Β· 6 β”‚
β”‚ β”‚ stores β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Task maintenance: openclaw tasks maintenance --apply

Security audit
Summary: 0 critical Β· 6 warn Β· 1 info
WARN Reverse proxy headers are not trusted
gateway.bind is loopback and gateway.trustedProxies is empty. If you expose the Control UI through a reverse proxy, configure trusted proxies so local-client c…
Fix: Set gateway.trustedProxies to your proxy IPs or keep the Control UI local-only.
WARN Control UI insecure auth toggle enabled
gateway.controlUi.allowInsecureAuth=true does not bypass secure context or device identity checks; only dangerouslyDisableDeviceAuth disables Control UI device…
Fix: Disable it or switch to HTTPS (Tailscale Serve) or localhost.
WARN Insecure or dangerous config flags enabled
Detected 1 enabled flag(s): gateway.controlUi.allowInsecureAuth=true.
Fix: Disable these flags when not actively debugging, or keep deployment scoped to trusted/local-only networks.
WARN Exec security=full is configured
Full exec trust is enabled for: main, rex, nova, bob, jade, chip.
Fix: Prefer tools.exec.security="allowlist" with ask prompts, and reserve "full" for tightly scoped break-glass agents only.
WARN Interpreter allowlist entries are missing strictInlineEval hardening
Interpreter/runtime allowlist entries were found without strictInlineEval enabled: - agents.main.allowlist: python3

misty perchBOT
#

Yep, this looks like a bootstrap file still exists, not a multi-gateway problem.

The clue is here:

  • Agents: 6 Β· 1 bootstrap file present

BOOTSTRAP.md is the first-run ritual file. If it’s still sitting in an agent workspace, OpenClaw can act like it’s waking up fresh and ask the β€œwho are you / who am I” questions again after restart.

What to do:

  1. Find the leftover bootstrap file:
    find ~/.openclaw -name BOOTSTRAP.md
    
  2. Move/rename that file out of the workspace
  3. Restart the gateway
sick ledge
#

okey just moved it now what

misty perchBOT
#

Nice, next step is just:

  1. Restart the gateway

    openclaw gateway restart
    
  2. Start a fresh chat/session with that agent and see if it stops doing the identity/bootstrap questions.

  3. Optional sanity check:

    openclaw status
    

    You want that bootstrap file present bit to be gone.

If it still happens after the restart, paste the new openclaw status output and I’ll keep digging.

#

Glad we caught that one 🦐

sick ledge
#

OpenClaw status

Overview
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Item β”‚ Value β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ OS β”‚ macos 15.7.4 (x64) Β· node 25.6.1 β”‚
β”‚ Dashboard β”‚ http://127.0.0.1:18789/ β”‚
β”‚ Tailscale β”‚ off β”‚
β”‚ Channel β”‚ stable (default) β”‚
β”‚ Update β”‚ pnpm Β· up to date Β· npm latest 2026.4.22 β”‚
β”‚ Gateway β”‚ local Β· ws://127.0.0.1:18789 (local loopback) Β· β”‚
β”‚ β”‚ reachable 1.24s Β· auth token Β· Marcelos-iMac.local β”‚
β”‚ β”‚ (192.168.1.144) app 2026.4.22 macos 15.7.4 β”‚
β”‚ Gateway self β”‚ Marcelos-iMac.local (192.168.1.144) app 2026.4.22 β”‚
β”‚ β”‚ macos 15.7.4 β”‚
β”‚ Gateway service β”‚ LaunchAgent installed Β· loaded Β· running (pid 71390) β”‚
β”‚ Node service β”‚ LaunchAgent installed Β· loaded Β· running (pid 72429) β”‚
β”‚ Agents β”‚ 6 Β· no bootstrap files Β· sessions 23 Β· default main β”‚
β”‚ β”‚ active just now β”‚
β”‚ Memory β”‚ 113 files Β· 642 chunks Β· sources memory Β· plugin β”‚
β”‚ β”‚ memory-core Β· vector ready Β· fts ready Β· cache on β”‚
β”‚ β”‚ (887) β”‚
β”‚ Plugin compatibility β”‚ none β”‚
β”‚ Probes β”‚ skipped (use --deep) β”‚
β”‚ Events β”‚ none β”‚
β”‚ Tasks β”‚ 0 active Β· 0 queued Β· 0 running Β· 50 issues Β· audit β”‚
β”‚ β”‚ 1 error Β· 29 warn Β· 173 tracked β”‚
β”‚ Heartbeat β”‚ 1h (main), disabled (bob), disabled (chip), disabled β”‚
β”‚ β”‚ (jade), disabled (nova), disabled (rex) β”‚
β”‚ Sessions β”‚ 23 active Β· default claude-sonnet-4.6 (200k ctx) Β· 6 β”‚
β”‚ β”‚ stores β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Task maintenance: openclaw tasks maintenance --apply

Security audit
Summary: 0 critical Β· 6 warn Β· 1 info
WARN Reverse proxy headers are not trusted
gateway.bind is loopback and gateway.trustedProxies is empty. If you expose the Control UI through a reverse proxy, configure trusted proxies so local-client c…
Fix: Set gateway.trustedProxies to your proxy IPs or keep the Control UI local-only.
WARN Control UI insecure auth toggle enabled
gateway.controlUi.allowInsecureAuth=true does not bypass secure context or device identity checks; only dangerouslyDisableDeviceAuth disables Control UI device…
Fix: Disable it or switch to HTTPS (Tailscale Serve) or localhost.
WARN Insecure or dangerous config flags enabled
Detected 1 enabled flag(s): gateway.controlUi.allowInsecureAuth=true.
Fix: Disable these flags when not actively debugging, or keep deployment scoped to trusted/local-only networks.

#

WARN Exec security=full is configured
Full exec trust is enabled for: main, rex, nova, bob, jade, chip.
Fix: Prefer tools.exec.security="allowlist" with ask prompts, and reserve "full" for tightly scoped break-glass agents only.
WARN Interpreter allowlist entries are missing strictInlineEval hardening
Interpreter/runtime allowlist entries were found without strictInlineEval enabled: - agents.main.allowlist: python3
Fix: Set tools.exec.strictInlineEval=true (or per-agent tools.exec.strictInlineEval=true) when allowlisting interpreters like python, node, ruby, perl, php, lua, or osascript.
WARN Some gateway.nodes.denyCommands entries are ineffective
gateway.nodes.denyCommands uses exact node command-name matching only (for example system.run), not shell-text filtering inside a command payload. - Unknown …
Fix: Use exact command names (for example: canvas.present, canvas.hide, canvas.navigate, canvas.eval, canvas.snapshot, canvas.a2ui.push, canvas.a2ui.pushJSONL, canvas.a2ui.reset). If you need broader restrictions, remove risky command IDs from allowCommands/default workflows and tighten tools.exec policy.
Full report: openclaw security audit
Deep probe: openclaw security audit --deep

misty perchBOT
#

That looks fixed βœ…

The important line is:

  • Agents: 6 Β· no bootstrap files

So the restart/identity ritual issue should be gone now. If an old existing chat/session still behaves weird, open a new session/thread once, because the stale session may still carry old context.

The remaining warnings are separate from this bug. The only one I’d clean up later is:

  • gateway.controlUi.allowInsecureAuth=true

If you’re only using localhost, it’s not urgent, but I’d disable it when you’re done debugging.

Glad that helped πŸŽ‰
If this fixed it, please right-click the solution message β†’ Apps β†’ βœ… Mark Solution.
This helps Answer Overflow index the solution for future users.

sick ledge
#

I still get the same reply who am I

misty perchBOT
#

Those are hardening warnings, not β€œOpenClaw is broken” warnings.

For your setup, I’d split it like this:

Fine to leave for now

Exec security=full

  • This is common on a personal, trusted, local setup.
  • It becomes a concern if you want stricter approval/allowlist guardrails.

Good idea to fix

strictInlineEval

  • Since you allowlist python3, I’d enable this:
openclaw config set tools.exec.strictInlineEval true

That keeps stuff like python -c ... behind explicit approval even if python3 itself is allowed.

#

Needs cleanup, but I would inspect first

gateway.nodes.denyCommands ineffective

  • This means some deny entries don’t match real exact node command names.
  • denyCommands does not filter shell text, it only matches exact command IDs like canvas.present.

So my recommendation is:

  1. Enable:

    openclaw config set tools.exec.strictInlineEval true
    
  2. Leave security=full alone unless you specifically want a tighter setup.
    If you do, switch to:

    openclaw config set tools.exec.security allowlist
    
#

Ah, good catch. If status says no bootstrap files, then the workspace is fixed. What’s probably stuck now is the session, not bootstrapping.

You have 23 active sessions, so I’d try the least-destructive fix first:

In the chat with your OpenClaw, send:

/new

or

/reset

That forces a fresh session. Docs: https://docs.openclaw.ai/concepts/session

#

If that fixes it, great, it was stale session context.

If it still answers with the same β€œwho am I” stuff even after /new, then I want two things:

openclaw sessions --all-agents --active 120
openclaw logs --follow

Then trigger one bad reply and paste the relevant output here.

So, next step: try /new first. That’s the cleanest test.

sick ledge
#

okey its back online, should I run the other stuff on terminal too

misty perchBOT
#

Nope, not yet.

If it’s back online, do this first:

  1. Test a normal message
  2. If the old weird context is still there, send:
    /new
    
    or
    /reset
    

If it answers normally after that, you’re done βœ…

Only run terminal stuff if the β€œwho am I” reply comes back again. Then grab: