#Issue with opening dashboard
1 messages · Page 1 of 1 (latest)
With dashboard I mean one that he has to make from a task
The “permissions” error can come from a few different gates (node pairing vs node being foregrounded vs Canvas being disabled vs tool policy blocking canvas). To narrow it down fast, can you paste:
openclaw --version(gateway host)- The exact error text/code you see when it fails (copy/paste or screenshot)
- What kind of node it is (macOS menubar app / iOS / Android / headless
openclaw node run)
In the meantime, here’s the quickest checklist that usually resolves it:
1) Confirm the node is actually paired + has canvas capability
Run on the gateway host:
openclaw nodes status
openclaw nodes describe --node <idOrNameOrIp>
If it’s not paired / pending, approve it:
openclaw nodes pending
openclaw nodes approve <requestId>
Docs: https://docs.openclaw.ai/nodes/troubleshooting
2) Make sure the node can run canvas.* right now
- iOS/Android:
canvas.*is foreground-only. If the app is backgrounded you’ll getNODE_BACKGROUND_UNAVAILABLE. Bring the node app to the foreground and retry. - macOS app: in the macOS app settings, ensure “Allow Canvas” is enabled. If disabled, calls return
CANVAS_DISABLED.
3) Smoke-test canvas independently (removes “dashboard” from the equation)
openclaw nodes canvas present --node <idOrNameOrIp> --target https://example.com
- If this fails: it’s a node/permission/foreground issue (not dashboard-specific).
- If this works: then try presenting the dashboard URL.
4) If you have a restrictive tool allowlist, Canvas might be blocked
If you set tools.allow / agents.*.tools.allow, make sure it includes either:
canvas, orgroup:ui(which includesbrowser+canvas)
Docs: https://docs.openclaw.ai/tools
5) Watch the logs for the real error code
Run while reproducing the issue:
openclaw logs --follow
You’ll usually see something like CANVAS_DISABLED, NODE_BACKGROUND_UNAVAILABLE, or another *_PERMISSION_REQUIRED code that tells us exactly what’s missing.
Paste the outputs from (1) + (2) + nodes describe and I’ll tell you which branch you’re on and the exact fix.
When you say “dashboard”, you mean a custom UI the agent renders in Canvas (A2UI/HTML), not the OpenClaw Control UI web dashboard — got it.
In that case, the most common gotchas are:
1) The “node” you connected might be an exec-only node (no Canvas)
If you connected a headless node host via openclaw node run, that’s mainly for system.run and often doesn’t provide canvas.*.
Run on the gateway host and paste the output:
openclaw nodes status
openclaw nodes describe --node <idOrNameOrIp>
In describe, we should see a capability for canvas. If it’s missing, you need a macOS app node or iOS/Android node app for Canvas.
2) Foreground / “Allow Canvas” is required (often reported as “permissions”)
- iOS/Android:
canvas.*is foreground-only. Bring the node app to the foreground and retry. - macOS app node: Settings must have Allow Canvas enabled (otherwise you’ll get
CANVAS_DISABLED/ permission-like errors).
Docs: https://docs.openclaw.ai/nodes/troubleshooting
3) Tool policy can block Canvas even if the node is fine
If you set tools.allow (globally or per-agent), make sure it includes:
canvas(orgroup:ui)
Docs: https://docs.openclaw.ai/tools
4) Quick smoke test (bypasses “make dashboard” logic)
Try:
openclaw nodes canvas present --node <idOrNameOrIp> --target https://example.com
- If this fails → it’s a node/canvas permission/capability issue.
- If this works → the “dashboard task” failure is likely A2UI host / routing / tool policy.
One thing I still need from you
Please paste the exact error text/code OpenClaw prints when it says “issue with permissions” (and tell me what kind of node it is: macOS app / iOS / Android / headless openclaw node run). That will pinpoint the fix in one step.
Is a Windows node and the error is: "I'm sorry, Boss, it seems there is still an issue. Even with the permission changes, I am receiving the same error: node command not allowed."
"This indicates that, despite your efforts, the 'My Dashboard Node' is still not authorized to execute the canvas command to present the dashboard. It could be a deeper configuration issue on the node itself or within the Gateway policies."
"Unfortunately, I cannot force the graphical dashboard view at this time. I can continue to provide reports in text format if you prefer."
That error is actually a strong hint: your Windows “node” can’t run Canvas at all, so canvas.present gets rejected as “node command not allowed”.
On Windows today you typically have a node host (openclaw node run / node install) which is meant for system.run (exec). Canvas is only implemented by the GUI node apps (macOS menubar app Canvas panel, Android node app; iOS is preview). So no amount of “node permissions” / exec approvals will make a Windows node suddenly accept canvas.*.
Quick confirm (gateway machine)
Please run and paste the relevant bits:
openclaw nodes describe --node "My Dashboard Node"
If the capabilities section doesn’t mention canvas / canvas.*, that’s exactly why you’re seeing it.
Your options
- Use a Canvas-capable node
- Pair the macOS OpenClaw app (Canvas enabled in Settings → Allow Canvas), or
- Pair an Android node app (and keep it foreground when using canvas).
Docs:
- https://docs.openclaw.ai/nodes/troubleshooting
- https://docs.openclaw.ai/platforms/android
- https://docs.openclaw.ai/platforms/mac/canvas
- Skip Canvas and ask for a “dashboard” as text / HTML
If you just want a “dashboard report”, the agent can generate a markdown/text summary, or write an HTML file you open manually in your browser—no Canvas node required.
If you tell me where your Gateway is running (Windows/WSL2? Linux VPS? etc.) and paste nodes describe, I can tell you the cleanest path for your setup.
My gateway is running on a Linux VPS, I run the command that you sent me and here is what I?ve gotten: root@openclaw-vps:~# openclaw nodes describe --node "My Dashboard Node"
🦞 OpenClaw 2026.2.13 (203b5bd) — I don't judge, but your missing API keys are absolutely judging you.
│
◇
nodes describe failed: Error: unknown node: My Dashboard Node (known: b55121cd305ff98cc7a9a26f4202e4749efffce84457e87d47b0f773e5efc493)
I want the canvas file and not the HTML because I need to consult it easily
@topaz needle
That error is actually good news: it tells us your gateway does know exactly one node — just not under the name you typed.
You ran:
openclaw nodes describe --node "My Dashboard Node"
…but your gateway says it only knows this node id:
b55121cd305ff98cc7a9a26f4202e4749efffce84457e87d47b0f773e5efc493
1) Describe the node using the id (should work)
openclaw nodes describe --node b55121cd305ff98cc7a9a26f4202e4749efffce84457e87d47b0f773e5efc493
2) See what name the gateway currently has for it
openclaw nodes status
# or
openclaw nodes list
3) (Optional) Set the display name so "My Dashboard Node" works
openclaw nodes rename --node b55121cd305ff98cc7a9a26f4202e4749efffce84457e87d47b0f773e5efc493 --name "My Dashboard Node"
4) If it’s not fully paired/approved yet
Check pending requests:
openclaw nodes pending
If you see a request id, approve it with:
openclaw nodes approve <requestId>
If you paste:
- the output of
openclaw nodes statusand - the exact “issue with permissions” message you get when trying to open the dashboard/canvas,
…I can tell you whether this is just a naming/pairing problem or a separate canvas permission/capability issue.
“Permissions” around nodes/canvas can mean a few different things in OpenClaw (pairing vs OS permissions vs exec approvals vs Canvas disabled). The fastest way to pinpoint it is: what exact error text / code do you see (e.g. CANVAS_DISABLED, NODE_BACKGROUND_UNAVAILABLE, *_PERMISSION_REQUIRED, SYSTEM_RUN_DENIED)?
In the meantime, here’s the standard check list (and what each result usually means):
1) Version + basic health (please paste output)
openclaw --version
openclaw status
openclaw nodes status
2) Confirm the node actually exposes Canvas
openclaw nodes describe --node <idOrNameOrIp>
You should see canvas.* capabilities listed. If not, it’s paired/connected but doesn’t support (or isn’t advertising) Canvas.
3) The 3 most common “permission” causes
A) Node app is backgrounded (mobile)
If you’re using an iOS/Android node: canvas.* is foreground-only.
Typical error: NODE_BACKGROUND_UNAVAILABLE
Fix: open the node app, keep it in the foreground (screen unlocked), retry.
Quick smoke test:
openclaw nodes canvas snapshot --node <idOrNameOrIp>
B) Canvas is disabled in the node’s settings (macOS menubar app especially)
Typical error: CANVAS_DISABLED
Fix: on the node device, open the node app settings and enable “Allow Canvas”, then retry.
C) You’re actually hitting exec approvals (not Canvas)
Canvas is ultimately web content (HTML/CSS/JS). There isn’t a separate “.canvas” document format you can download—but you have two good “file” options depending on what you meant:
Option A) You want a Canvas snapshot file (PNG/JPG) instead of HTML
Run:
openclaw nodes canvas snapshot --node <idOrNameOrIp> --format png
That writes an actual image file and prints a MEDIA:... path you can open/share/keep.
(You can also use --format jpg --max-width 1200 --quality 0.9 if you want smaller files.)
Option B) You want the on-disk files that back Canvas (so you can read/edit them easily)
On the macOS app, Canvas lives here:
If the agent is trying to run something like openclaw dashboard via system.run, that’s governed by exec approvals/allowlist, not the “nodes section” UI.
Typical error: SYSTEM_RUN_DENIED ...
Check:
openclaw approvals get --node <idOrNameOrIp>
4) If you can, grab the log line with the error code
Run this, then retry the action once:
openclaw logs --follow
Docs that match this issue exactly: https://docs.openclaw.ai/nodes/troubleshooting
If you paste:
- the exact permission error text/code,
~/Library/Application Support/OpenClaw/canvas/<session>/...
Example for the default session:
~/Library/Application Support/OpenClaw/canvas/main/index.html
If there’s no index.html, the app shows a built-in scaffold page instead (so there may be “nothing to read” yet).
Docs:
If you tell me which node type you’re on (macOS menubar app vs iOS/Android vs openclaw node run), I can point you at the exact location/workflow that applies.
- what kind of node it is (iOS / Android / macOS menubar / “openclaw node run” host), and
openclaw nodes describe --node ...output (just the relevant part showing capabilities),
I can tell you the precise fix.
Okay now I connected succesfully the node, what I should do next to have canvas?
@topaz needle
Now that the node is connected, getting Canvas working is basically:
- Make sure Canvas is allowed on the node device
- On the node device (macOS menubar app / iOS / Android), open the node app settings and enable “Allow Canvas”.
- If it’s iOS/Android: keep the app in the foreground (Canvas calls fail in background).
- Find the node id/name
On the gateway machine:
openclaw nodes list
# or
openclaw nodes status
- Show the Canvas on that node
openclaw nodes canvas present --node <idOrName>
Then try navigating it (either to the local scaffold or a URL):
openclaw nodes canvas navigate --node <idOrName> --url "/"
# or
openclaw nodes canvas navigate --node <idOrName> --url "https://example.com"
- Quick smoke test (proves Canvas is actually working)
openclaw nodes canvas snapshot --node <idOrName>
If you tell me what kind of node it is (macOS menubar app vs iOS/Android vs openclaw node run on another machine) and what happens when you run openclaw nodes canvas present ... (any error code), I can give the exact fix.
To “have Canvas” once the node is connected, you just need to (a) enable Canvas on the node device and (b) tell OpenClaw to show it.
1) Enable Canvas on the node device
- In the node app settings, turn on Allow Canvas (if it’s off you’ll get
CANVAS_DISABLED). - If it’s iOS/Android, keep the node app in the foreground (background =
NODE_BACKGROUND_UNAVAILABLE).
2) Show Canvas (from the Gateway machine)
First get the node id/name:
openclaw nodes list
Then open the Canvas panel:
openclaw nodes canvas present --node <idOrName>
(Optional) navigate it to the default local scaffold:
openclaw nodes canvas navigate "/" --node <idOrName>
Quick smoke test (proves it works):
openclaw nodes canvas snapshot --node <idOrName>
If it still says “permission”…
Paste the exact error code/text you see after running canvas present or canvas snapshot (those codes are the key), plus:
openclaw nodes describe --node <idOrName>
With the command openclaw nodes describe there is this error: nodes canvas present failed: Error: node command not allowed. For openclaw nodes describe there isn't any error and it worked showing:Node
┌─────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Field │ Value │
├─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ ID │ b55121cd305ff98cc7a9a26f4202e4749efffce84457e87d47b0f773e5efc493 │
│ Name │ My Dashboard Node │
│ Version │ core v2026.2.13 │
│ PATH │ /usr/bin:/usr/local/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/games:/usr/local/games:/snap/bin │
│ Status │ paired · connected │
│ Caps │ browser, system │
└─────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Commands
- browser.proxy
- system.execApprovals.get
- system.execApprovals.set
- system.run
- system.which
@topaz needle
That ping is fair — but based on your nodes describe, you’re paired to a node-host style node (caps: browser, system). That kind of node can run commands (system.run) etc., but it cannot show a Canvas panel.
Canvas only works on a node that advertises canvas capability (you’d see Caps: …, canvas and commands like canvas.present, canvas.snapshot, …). Right now your node doesn’t have those, so nodes canvas present will always fail with “node command not allowed”.
What to do next
- If you want an actual Canvas window/panel: pair a device/app that supports Canvas (typically the macOS OpenClaw app Canvas panel; or a mobile node app if it supports canvas and is foregrounded), then rerun:
openclaw nodes list
openclaw nodes describe --node <id>
openclaw nodes canvas present --node <id>
- If your goal is just the Dashboard (Control UI): you don’t need Canvas at all:
openclaw dashboard
Tell me what device you want Canvas to appear on (macOS? iPhone? Android?), and what you’re running this node on (Linux server? your laptop?). Then I can tell you exactly which node/app to install/run to get Caps: canvas.
That output explains it: the node you paired does not have Canvas capability.
Your openclaw nodes describe shows:
- Caps:
browser, system - Commands:
browser.proxy,system.run,system.which, …
There’s no canvas.* in the capabilities list, so when you run:
openclaw nodes canvas present …
the gateway correctly replies “node command not allowed” (because that node simply can’t do Canvas).
What to do if you want Canvas
You need to pair a node that supports Canvas, e.g.:
- the macOS OpenClaw menubar app (Canvas panel is a macOS app feature), or
- an iOS/Android node app (Canvas works but must be foregrounded)
After pairing the right node, openclaw nodes describe should show Caps including canvas (and you’ll see canvas.present, canvas.snapshot, etc.), then these work:
openclaw nodes canvas present --node <idOrName>
openclaw nodes canvas snapshot --node <idOrName>
If your real goal is “open the dashboard”
You don’t need Canvas for that. The Dashboard/Control UI is just the web UI from the gateway:
openclaw dashboard
(or open http://127.0.0.1:18789/ on the gateway host, and paste the token if prompted).
Quick question so I can point you to the exact install
What device/OS do you want the Canvas window to appear on (macOS / Windows / Linux / iPhone / Android), and how did you start this current node (was it openclaw node run …)?
To pair an iOS node app to your Gateway, the flow is:
0) Make sure your iPhone can reach the Gateway
The iOS app connects to the Gateway WebSocket (default port 18789). If your Gateway is only bound to 127.0.0.1, the phone can’t reach it.
On the gateway machine, check:
openclaw gateway status
openclaw config get gateway.bind
If the gateway is on another machine, you typically want gateway.bind: "lan" (same Wi‑Fi) or gateway.bind: "tailnet" (Tailscale).
1) Connect from the iOS app
In the iOS app:
- Open Settings
- Select a discovered gateway (Bonjour), or use Manual Host/Port (fallback)
- Tap Connect
Keep the app open (foreground) while testing canvas/camera later.
2) Approve the pairing on the Gateway
On the gateway machine:
openclaw nodes pending
openclaw nodes approve <requestId>
openclaw nodes status
After approval, nodes status should show the iOS node as paired/connected, and nodes describe should show capabilities like canvas/camera/screen/location (not just system/browser).
3) Use Canvas
Once the iOS node shows canvas capability:
openclaw nodes canvas present --node "<nodeNameOrId>"
If it doesn’t show up in nodes pending
- The request expires after a few minutes → try “Connect” again in the iOS app, then re-run
openclaw nodes pending. - If the iOS app can’t connect at all, it’s almost always network/bind/firewall (phone can’t reach port 18789).
Docs:
- https://docs.openclaw.ai/platforms/ios
- https://docs.openclaw.ai/gateway/pairing
- https://docs.openclaw.ai/nodes/troubleshooting
If you paste what the iOS app shows when you hit Connect (and whether you’re on LAN vs Tailscale), I can tell you which bind/discovery path to use.
You pinged me but didn’t include what got stuck—so I’ll give you the exact iOS pairing runbook, and you tell me where it breaks.
First: the iOS node app is currently “internal preview” (not publicly distributed) per docs. So pairing is only possible if you already have the iOS app build (TestFlight/internal).
Pair an iOS node (steps)
1) Make sure the iPhone can reach the Gateway
The iOS app must reach your Gateway at host:18789.
On the gateway machine, check what you’re bound to:
openclaw config get gateway.bind
openclaw gateway status
- If your Gateway is only on
loopback/127.0.0.1, your phone can’t connect. - Use LAN (same Wi‑Fi) or Tailscale tailnet (recommended if remote).
2) In the iOS app: connect to the Gateway
In the iOS app → Settings:
- pick a discovered Gateway (Bonjour), or
- enable Manual Host and enter:
- Host/IP (gateway LAN IP or Tailscale IP/MagicDNS)
- Port 18789
- tap Connect
3) Approve the pairing on the Gateway
On the gateway machine:
openclaw nodes pending
openclaw nodes approve <requestId>
openclaw nodes status
openclaw nodes describe --node <id>
After pairing, nodes describe should show Caps including canvas (plus other commands). If it only shows system/browser, you’re not paired to the iOS app.
4) Show something on the iOS Canvas
Once the node has canvas, try:
openclaw nodes canvas navigate "/" --node <idOrName>
openclaw nodes canvas snapshot --node <idOrName>
(Keep the iOS app foregrounded; canvas commands fail in background.)
If you tell me this, I can pinpoint it fast
- Are you on same Wi‑Fi or Tailscale?
- What do you get from:
openclaw nodes pending
(right after you hit “Connect” on the iOS app)
How i can change it? Gateway: bind=loopback (127.0.0.1),
bind=loopback means the Gateway only listens on 127.0.0.1, so anything that’s not the same machine (like your iPhone) can’t connect.
To let an iOS node connect, switch the Gateway bind to lan (same Wi‑Fi) or tailnet (Tailscale).
Option A (same Wi‑Fi): bind to LAN
On the gateway host:
openclaw config set gateway.bind lan
openclaw doctor --generate-gateway-token
openclaw gateway restart
Then verify it’s reachable:
openclaw gateway status
openclaw status
Now, in the iOS app use Manual Host and enter the gateway machine’s LAN IP + port 18789.
(Find LAN IP: macOS ipconfig getifaddr en0, Linux hostname -I)
Option B (recommended if remote): bind to Tailscale tailnet
- Install/enable Tailscale on the gateway host and the iPhone
- Then on the gateway host:
openclaw config set gateway.bind tailnet
openclaw doctor --generate-gateway-token
openclaw gateway restart
In the iOS app, use the gateway’s Tailscale IP / MagicDNS name + port 18789.
Important: LAN/tailnet binds require auth
If you bind to lan/tailnet without auth, the gateway may refuse to start (or you’ll see “unauthorized” in UI). That’s why I included openclaw doctor --generate-gateway-token.
Docs reference (this exact gotcha): https://docs.openclaw.ai/help/faq (see the gateway.bind section)
After the iPhone connects: approve the node
When you hit “Connect” in the iOS app, run one of these on the gateway host (depending on which pairing prompt you see):
openclaw devices list
openclaw devices approve <requestId>
and/or:
openclaw nodes pending
openclaw nodes approve <requestId>
If you paste the output of openclaw gateway status after changing the bind (and whether you’re doing LAN or Tailscale), I’ll tell you the exact host/IP to type into the iOS app.
wait, tell me what name is the app. tell me what i have to do to find the instance url and the token pass by pass. tell me the other things with all informations so i can reach my goal easily
1) What’s the iOS app name?
It’s the OpenClaw iOS App (Node) — and it’s currently “internal preview” (not publicly distributed / not on the App Store) per the docs: https://docs.openclaw.ai/platforms/ios
So: pairing is only possible if you already have that iOS build (TestFlight/internal).
2) Your main blocker: gateway.bind=loopback
loopback (127.0.0.1) means only the same machine can connect. Your iPhone cannot.
Pick one:
Option A — Same Wi‑Fi (LAN)
On the gateway machine:
openclaw config set gateway.bind lan
openclaw doctor --generate-gateway-token
openclaw gateway restart
Option B — Remote / cross-network (Tailscale)
Make sure both gateway host + iPhone are on Tailscale, then:
openclaw config set gateway.bind tailnet
openclaw doctor --generate-gateway-token
openclaw gateway restart
3) “Instance URL” + “Token” (pass-by-pass)
A) Get the token (this is what you paste into UIs/apps)
On the gateway machine:
openclaw config get gateway.auth.token
If empty/missing:
openclaw doctor --generate-gateway-token
openclaw config get gateway.auth.token
B) Find the URLs you’ll use
There are three relevant URLs:
- Dashboard / Control UI (in your browser)
http://<gateway-host>:18789/
Fastest way to get the right link:
openclaw dashboard --no-open
If it asks for auth in the UI, paste gateway.auth.token.
- Gateway WebSocket (what nodes connect to)
ws://<gateway-host>:18789
- Canvas Host (what mobile Canvas WebViews load)
http://<gateway-host>:18793/__openclaw__/canvas/
(A2UI host ishttp://<gateway-host>:18793/__openclaw__/a2ui/)
C) What is <gateway-host> exactly?
- If you used
bind=lan: use your gateway machine’s LAN IP (e.g.192.168.1.x) - macOS:
ipconfig getifaddr en0 - Linux:
hostname -I - If you used
bind=tailnet: use the Tailscale IP / MagicDNS name
- gateway host:
tailscale ip -4
4) Pair the iOS node (once the iPhone can reach the Gateway)
- On iPhone (OpenClaw iOS node app) → Settings:
- set Host to your gateway host (LAN IP or Tailscale IP/name)
- set Port to
18789 - if there’s a Token field, paste the value from
gateway.auth.token - tap Connect
- On the gateway machine, approve the pending request:
openclaw nodes pending
openclaw nodes approve <requestId>
openclaw nodes status
(If nodes pending is empty, also try openclaw devices list and approve there — some setups surface it as device pairing.)
- Confirm the iOS node actually has Canvas:
openclaw nodes describe --node "<iOS node name>"
You should see Caps including canvas.
5) Finally: show Canvas on the iPhone
Once the iOS node is paired and advertises canvas:
openclaw nodes canvas present --node "<iOS node name>"
And/or navigate it to the gateway canvas host:
openclaw nodes canvas navigate "http://<gateway-host>:18793/__openclaw__/canvas/" --node "<iOS node name>"
If you want something easy to “consult”, put an index.html here on the gateway host:
~/.openclaw/workspace/canvas/index.html
(That’s what the canvas host serves by default.)
If you tell me whether you’re doing LAN or Tailscale, and paste:
openclaw gateway status
openclaw config get gateway.bind