#Basic set-up details

1 messages · Page 1 of 1 (latest)

young perch
#

I need all the basic to mid commands for the OpenClaw to run inside Terminal.

  • Basic Opening Command

  • Restart Command

  • Reboot Command

  • Turn off and on OpenClaw

  • Add new API for AI Model

  • Add new Models

  • Add new Platforms

  • View Pending pairing Code

  • Approve Pairing Code

  • Add Discord channels to the allow list

  • Add Discord channels to the allow list

  • Add Discord Servers to the allow list

  • Add a new User to the Allow List

  • Add the permission to choose between Always/Mention in the server

Some other needed commands and basic ones. Organize and make a good welll made list.

Thank you

charred abyssBOT
red peakBOT
#

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

charred abyssBOT
peak dockBOT
#

Let me verify the exact CLI paths and commands so I don't hand you fake ones.

#

I checked this against the current CLI/docs, here’s a solid Terminal cheat sheet.

1) First commands to know

openclaw --version
openclaw status
openclaw gateway status
openclaw config file
  • openclaw --version = confirm your installed version
  • openclaw status = quick health check
  • openclaw gateway status = check the service/gateway
  • openclaw config file = show where your config file lives

#

2) Start / stop / restart OpenClaw

Run in the current terminal

openclaw gateway run

Install as a background service

openclaw gateway install

Start service

openclaw gateway start
#

Stop service

openclaw gateway stop

Restart service

openclaw gateway restart

Check service status

openclaw gateway status

First-time setup

#
openclaw onboard --install-daemon

Important: there is no special OpenClaw reboot command. For OpenClaw itself, use:

openclaw gateway restart

If you mean rebooting the whole computer, that is your OS command, not an OpenClaw command.


3) Add API keys / AI provider auth

Recommended interactive setup

#
openclaw configure --section model

Add auth interactively

openclaw models auth add

Login to a provider flow

openclaw models auth login

Paste a token directly

#
openclaw models auth paste-token

Check model/provider auth

openclaw models status
openclaw models status --probe

Set the default model

openclaw models set <model-id-or-alias>

List configured models

#
openclaw models list

Scan OpenRouter free models

openclaw models scan

Tip: in OpenClaw, “add new models” usually means:

  1. add provider auth
  2. verify with openclaw models status
  3. choose one with openclaw models set ...

4) Add new platforms / channels

#

Interactive channel setup

openclaw configure --section channels

Link a login-based channel (only for channels that support it)

openclaw channels login --channel <channel>

Example:

openclaw channels login --channel whatsapp

Show QR / setup code

#
openclaw qr

5) Pairing commands

There are 2 different pairing systems.

A) DM pairing codes

View pending pairing requests:

openclaw pairing list --channel <channel>

Approve a pairing code:

#
openclaw pairing approve --channel <channel> <code>

Example:

openclaw pairing list --channel telegram
openclaw pairing approve --channel telegram 123456

B) Device/browser/node pairing

List pending devices:

openclaw devices list

Approve a device request:

#
openclaw devices approve <requestId>

Reject a device request:

openclaw devices reject <requestId>

6) Discord allowlist / server / channel / user config

Use the config command for this.

Allow DMs from specific Discord users

#
openclaw config set channels.discord.allowFrom '["USER_ID_1","USER_ID_2"]' --strict-json

Allow a Discord server (guild)

openclaw config set 'channels.discord.guilds["GUILD_ID"]' '{"slug":"your-server","requireMention":true}' --strict-json

Allow specific channels inside a server

openclaw config set 'channels.discord.guilds["GUILD_ID"]' '{"slug":"your-server","requireMention":true,"channels":{"general":{"allow":true},"help":{"allow":true,"requireMention":true}}}' --strict-json

Allow only specific users inside a server

#
openclaw config set 'channels.discord.guilds["GUILD_ID"].users' '["USER_ID_1","USER_ID_2"]' --strict-json

Mention-only vs always reply in a server

Mention only

openclaw config set 'channels.discord.guilds["GUILD_ID"].requireMention' true --strict-json

Always reply

openclaw config set 'channels.discord.guilds["GUILD_ID"].requireMention' false --strict-json

Mention-only vs always reply in one channel

#

Mention only

openclaw config set 'channels.discord.guilds["GUILD_ID"].channels.help' '{"allow":true,"requireMention":true}' --strict-json

Always reply

openclaw config set 'channels.discord.guilds["GUILD_ID"].channels.help' '{"allow":true,"requireMention":false}' --strict-json

Note: channel keys are usually the slugged channel name like help, general, not #help.


7) After changing config

#
openclaw config validate
openclaw gateway restart

Also useful:

openclaw config get channels.discord

8) Other very useful commands

openclaw logs --follow
young perch
#

It's showing command not found.

I installed the OpenClaw in Hostinger VPS Docker

peak dockBOT
#

Let me check the Docker/Hostinger docs so I can tell you the right commands, not generic Linux guesses.

#

Yep, that makes sense.

On a Hostinger VPS Docker install, openclaw on the host shell can show command not found because OpenClaw is running inside the container, not installed globally on the VPS PATH.

What to do instead

If you used Hostinger’s Docker Manager / 1-click VPS setup

Use hPanel → Docker Manager for:

  • start / stop / restart
  • logs
  • updates
  • opening the dashboard

That’s the official Hostinger flow: https://docs.openclaw.ai/install/hostinger

If you want Terminal commands on a Docker install

#

The docs recommend ClawDock for Docker setups.

Install it:

mkdir -p ~/.clawdock && curl -sL https://raw.githubusercontent.com/openclaw/openclaw/main/scripts/clawdock/clawdock-helpers.sh -o ~/.clawdock/clawdock-helpers.sh
echo 'source ~/.clawdock/clawdock-helpers.sh' >> ~/.bashrc && source ~/.bashrc

Then use:

clawdock-start
clawdock-stop
clawdock-restart
clawdock-status
clawdock-logs
#
clawdock-shell
clawdock-dashboard
clawdock-devices
clawdock-approve <request-id>

And to run OpenClaw CLI commands inside Docker:

clawdock-cli status
clawdock-cli gateway status
clawdock-cli models status
clawdock-cli doctor

ClawDock docs: https://docs.openclaw.ai/install/clawdock

#

Docker docs: https://docs.openclaw.ai/install/docker

Important distinction

  • Host install → you use openclaw ...
  • Docker install → you usually use Docker Manager or ClawDock
  • Docker installs do not automatically give you a host-level openclaw command

Quick next step

Please paste these 2 things:

docker ps

and the exact command that returned command not found.

Then I can tell you the exact command version for your Hostinger setup, no guessing.

#

If this fixed the confusion, please right-click the solution message → Apps → ✅ Mark Solution so Answer Overflow can index it.

young perch
#

~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e3c8e74de910 ghcr.io/hostinger/hvps-openclaw:latest "/entrypoint.sh node…" 10 hours ago Up 9 hours 0.0.0.0:41470->41470/tcp, [::]:41470->41470/tcp openclaw-b8wu-openclaw-1
19cd050098b5 traefik:latest "/entrypoint.sh --ap…" 11 hours ago Up 11 hours traefik-i3j1-traefik-1

Im using Ubuntu

peak dockBOT
#

Nice, that helps a lot. Let me verify whether that Hostinger Docker image exposes openclaw directly or if you need to call the Node entrypoint inside the container.

#

Perfect, that confirms it.

Your OpenClaw is running in this container:

openclaw-b8wu-openclaw-1

So the fix is:

  • use Docker commands for start/stop/restart
  • use docker exec ... openclaw ... for OpenClaw CLI commands

Best shortcut

Run this once in your Ubuntu shell:

#
oc(){ docker exec -it openclaw-b8wu-openclaw-1 openclaw "$@"; }

Then you can use oc ... instead of the full Docker command.

If you want it permanent, add that line to ~/.bashrc.


Docker commands for your setup

Start / stop / restart OpenClaw

docker start openclaw-b8wu-openclaw-1
docker stop openclaw-b8wu-openclaw-1
#
docker restart openclaw-b8wu-openclaw-1

View logs

docker logs -f openclaw-b8wu-openclaw-1

Open shell inside container

docker exec -it openclaw-b8wu-openclaw-1 sh

OpenClaw commands inside the container

#

Basic checks

oc --version
oc status
oc config file
oc config validate

Health / debugging

oc status --all
oc status --deep
oc models status
oc doctor

#

Models / API keys

Add provider auth

oc models auth add

Provider login flow

oc models auth login

Paste token

oc models auth paste-token
#

Check model status

oc models status
oc models status --probe

List available/configured models

oc models list

Set default model

oc models set <model-id-or-alias>

#

Channels / platforms

Open channel setup wizard

oc configure --section channels

Link a channel that supports login flow

oc channels login --channel <channel>

Show QR/setup code

oc qr
#

Pairing

DM pairing requests

oc pairing list --channel <channel>
oc pairing approve --channel <channel> <code>

Device/browser pairing

oc devices list
oc devices approve <requestId>
oc devices reject <requestId>
#

Discord allowlist / server / channel settings

Allow specific Discord DM users

oc config set channels.discord.allowFrom '["USER_ID_1","USER_ID_2"]' --strict-json

Allow a Discord server

oc config set 'channels.discord.guilds["GUILD_ID"]' '{"slug":"your-server","requireMention":true}' --strict-json

Allow specific channels in a server

#
oc config set 'channels.discord.guilds["GUILD_ID"]' '{"slug":"your-server","requireMention":true,"channels":{"general":{"allow":true},"help":{"allow":true,"requireMention":true}}}' --strict-json

Allow specific users inside a server

oc config set 'channels.discord.guilds["GUILD_ID"].users' '["USER_ID_1","USER_ID_2"]' --strict-json

Mention-only vs always reply

Mention only

oc config set 'channels.discord.guilds["GUILD_ID"].requireMention' true --strict-json

Always reply

#
oc config set 'channels.discord.guilds["GUILD_ID"].requireMention' false --strict-json

After config changes:

oc config validate
docker restart openclaw-b8wu-openclaw-1

Important note for Docker installs

Do not use these on the VPS host shell:

#
openclaw gateway start
openclaw gateway stop
openclaw gateway restart

That pattern is for host installs.

For your setup, Docker is the service manager, so use:

docker start ...
docker stop ...
docker restart ...

young perch
#

oc --version

oc: command not found

peak dockBOT
#

oc is just a shortcut I gave you, it does not exist yet by default.

Also, don’t type the leading #, that’s just your root prompt.

Use the full command right now

docker exec -it openclaw-b8wu-openclaw-1 openclaw --version

If you want the oc shortcut, create it first

oc(){ docker exec -it openclaw-b8wu-openclaw-1 openclaw "$@"; }

Then run:

#
oc --version
oc status
oc models status

One-line test

Paste this exactly:

oc(){ docker exec -it openclaw-b8wu-openclaw-1 openclaw "$@"; }; oc --version

If you want, next I can give you the full Hostinger Docker command list with no shortcuts at all, just direct copy-paste commands.

young perch
#

oc(){ docker exec -it openclaw-b8wu-openclaw-1 openclaw "$@"; }; oc --version
OpenClaw 2026.4.12 (1c0672b)

peak dockBOT
#

Nice, that means you’re good now 🎉

Here’s the Hostinger Docker cheat sheet for your exact setup.

0) Keep the shortcut

Run this in every new shell, or add it to ~/.bashrc:

oc(){ docker exec -it openclaw-b8wu-openclaw-1 openclaw "$@"; }

To save it permanently:

echo 'oc(){ docker exec -it openclaw-b8wu-openclaw-1 openclaw "$@"; }' >> ~/.bashrc && source ~/.bashrc
#

1) Start / stop / restart OpenClaw

Turn on

docker start openclaw-b8wu-openclaw-1

Turn off

docker stop openclaw-b8wu-openclaw-1

Restart / reboot OpenClaw

#
docker restart openclaw-b8wu-openclaw-1

Check container

docker ps
docker logs -f openclaw-b8wu-openclaw-1

For Docker installs, use Docker for start/stop/restart.


2) Basic OpenClaw commands

#
oc --version
oc status
oc status --all
oc status --deep
oc doctor
oc config file
oc config validate

3) AI model / API key commands

Add provider/API auth

#
oc models auth add

Login flow

oc models auth login

Paste token manually

oc models auth paste-token

Check model auth/status

#
oc models status
oc models status --probe

List models

oc models list

Set default model

oc models set <model-id-or-alias>

Open interactive model setup

#
oc configure --section model

4) Add new platforms / channels

Interactive channel setup

oc configure --section channels

Login for channels that support it

oc channels login --channel <channel>
#

Show QR/setup code

oc qr

5) Pairing commands

DM pairing requests

oc pairing list --channel <channel>
oc pairing approve --channel <channel> <code>

Example:

#
oc pairing list --channel telegram
oc pairing approve --channel telegram 123456

Device/browser pairing

oc devices list
oc devices approve <requestId>
oc devices reject <requestId>

6) Discord allow list commands

Allow Discord DMs from specific users

#
oc config set channels.discord.allowFrom '["USER_ID_1","USER_ID_2"]' --strict-json

Allow a Discord server

oc config set 'channels.discord.guilds["GUILD_ID"]' '{"slug":"your-server","requireMention":true}' --strict-json

Allow specific channels in that server

oc config set 'channels.discord.guilds["GUILD_ID"]' '{"slug":"your-server","requireMention":true,"channels":{"general":{"allow":true},"help":{"allow":true,"requireMention":true}}}' --strict-json

Allow specific users inside a server

#
oc config set 'channels.discord.guilds["GUILD_ID"].users' '["USER_ID_1","USER_ID_2"]' --strict-json

Mention only in a server

oc config set 'channels.discord.guilds["GUILD_ID"].requireMention' true --strict-json

Always reply in a server

oc config set 'channels.discord.guilds["GUILD_ID"].requireMention' false --strict-json

Check current Discord config

#
oc config get channels.discord

After changing config:

oc config validate
docker restart openclaw-b8wu-openclaw-1

7) Useful extra commands

View logs

#
docker logs -f openclaw-b8wu-openclaw-1

Open shell inside container

docker exec -it openclaw-b8wu-openclaw-1 sh

Health/debug

oc health --verbose
oc models status
oc doctor

#

8) Important notes

  • Docker install → use docker start/stop/restart
  • OpenClaw CLI inside container → use oc ...
  • Replace:
    • GUILD_ID with your Discord server ID
    • USER_ID with Discord user ID
  • Channel keys are usually slug names like general, help

Docs:

#

Glad we caught it.
If this solved it, please right-click the solution message → Apps → ✅ Mark Solution so Answer Overflow can index it.

young perch
#

Since you know what to type for my system, then give me this now.

I need all the basic to mid commands for the OpenClaw to run inside Terminal.

Basic Opening Command
Restart Command
Turn off and on OpenClaw

Add new API
Add new AI Provider
Add new Models
Check Added models
Choose the default model
Add Aliases/Name for the Adde Models

Add new Platforms
View Pending pairing Code
Approve Pairing Code
View Paired Codes

Add Discord channels to the allow list
Add Discord channels to the allow list
Add Discord Servers to the allow list
Add a new User to the Allow List
Add the permission to choose between Always/Mention in the server

Some other needed commands and basic ones. Organize and make a good, well made list.

Thank you

peak dockBOT
#

I’m going to tighten this up and make sure the model-alias bits are exact too.

#

Got it. Here’s the exact Terminal cheat sheet for your Hostinger Docker setup on Ubuntu.

0) First, create the shortcut

Run this once per shell, or save it in ~/.bashrc:

oc(){ docker exec -it openclaw-b8wu-openclaw-1 openclaw "$@"; }

Save permanently:

echo 'oc(){ docker exec -it openclaw-b8wu-openclaw-1 openclaw "$@"; }' >> ~/.bashrc && source ~/.bashrc

#

1) OpenClaw on/off/restart

Turn on OpenClaw

docker start openclaw-b8wu-openclaw-1

Turn off OpenClaw

docker stop openclaw-b8wu-openclaw-1

Restart OpenClaw

docker restart openclaw-b8wu-openclaw-1
#

Check running containers

docker ps

View OpenClaw logs

docker logs -f openclaw-b8wu-openclaw-1

2) Basic OpenClaw commands

Version

#
oc --version

Basic status

oc status

Full status

oc status --all

Deep status

#
oc status --deep

OpenClaw doctor

oc doctor

Show config file path

oc config file

Validate config

#
oc config validate

3) Add new API / AI provider / model auth

Interactive auth setup

oc models auth add

Provider login flow

oc models auth login
#

Paste token/API key manually

oc models auth paste-token

Interactive model setup

oc configure --section model

4) Add models / check models / choose default model

Check configured model status

#
oc models status

Probe model/provider auth live

oc models status --probe

List models

oc models list

Set default model

#
oc models set <model-id-or-alias>

Example:

oc models set openai/gpt-5.4

5) Add alias/name for a model

List aliases

oc models aliases list
#

Add alias

oc models aliases add <alias> <provider/model>

Example:

oc models aliases add fast openai/gpt-5.4

Remove alias

oc models aliases remove <alias>

Example:

#
oc models aliases remove fast

6) Add new platforms / channels

Open channel setup wizard

oc configure --section channels

List configured channels

oc channels list
#

Check channel status

oc channels status

Probe channel credentials

oc channels status --probe

Link a channel that supports login flow

oc channels login --channel <channel>

Show QR/setup code

#
oc qr

7) Pairing commands

View pending pairing codes

oc pairing list --channel <channel>

Example:

oc pairing list --channel telegram
#

Approve pairing code

oc pairing approve --channel <channel> <code>

Example:

oc pairing approve --channel telegram 123456

View device/browser pairings

oc devices list

Approve device pairing

#
oc devices approve <requestId>

Reject device pairing

oc devices reject <requestId>

Important note

  • oc pairing list = pending DM pairing codes
  • oc devices list = pending + paired devices
  • There is no separate pairing list-approved command for already-approved DM codes

8) Discord allow list commands

#

Show current Discord config

oc config get channels.discord

Allow Discord DMs from specific users

oc config set channels.discord.allowFrom '["USER_ID_1","USER_ID_2"]' --strict-json

Add Discord server to allow list

oc config set 'channels.discord.guilds["GUILD_ID"]' '{"slug":"your-server","requireMention":true}' --strict-json

Add Discord channels to allow list

#
oc config set 'channels.discord.guilds["GUILD_ID"]' '{"slug":"your-server","requireMention":true,"channels":{"general":{"allow":true},"help":{"allow":true,"requireMention":true}}}' --strict-json

Add specific users to allow list inside a server

oc config set 'channels.discord.guilds["GUILD_ID"].users' '["USER_ID_1","USER_ID_2"]' --strict-json

9) Always reply vs mention-only in Discord

Mention-only in a server

oc config set 'channels.discord.guilds["GUILD_ID"].requireMention' true --strict-json
#

Always reply in a server

oc config set 'channels.discord.guilds["GUILD_ID"].requireMention' false --strict-json

Mention-only in a specific channel

oc config set 'channels.discord.guilds["GUILD_ID"].channels.help' '{"allow":true,"requireMention":true}' --strict-json

Always reply in a specific channel

oc config set 'channels.discord.guilds["GUILD_ID"].channels.help' '{"allow":true,"requireMention":false}' --strict-json

#

10) After config changes

Validate config

oc config validate

Restart OpenClaw container

docker restart openclaw-b8wu-openclaw-1

11) Useful extra commands

Open shell inside container

#
docker exec -it openclaw-b8wu-openclaw-1 sh

Health check

oc health --verbose

Re-check models

oc models status

Re-check channels

#
oc channels status --probe

12) Replace these placeholders

  • GUILD_ID = Discord server ID
  • USER_ID_1 = Discord user ID
  • channel keys are usually names like general, help

Important

Because you use Docker, use:

#

If this solved it, please right-click the solution message → Apps → ✅ Mark Solution so Answer Overflow can index it.

young perch
#

Do it

peak dockBOT
#

Here’s the short Hostinger Docker version, just the essentials for your exact setup.

0) Create the shortcut

oc(){ docker exec -it openclaw-b8wu-openclaw-1 openclaw "$@"; }

1) OpenClaw on/off/restart

docker start openclaw-b8wu-openclaw-1
docker stop openclaw-b8wu-openclaw-1
docker restart openclaw-b8wu-openclaw-1
docker logs -f openclaw-b8wu-openclaw-1

2) Basic checks

#
oc --version
oc status
oc status --all
oc doctor
oc config validate

3) Models / API / provider

oc models auth add
oc models auth login
oc models auth paste-token
oc models status
oc models list
oc models set <model-id-or-alias>
#

4) Model aliases

oc models aliases list
oc models aliases add <alias> <provider/model>
oc models aliases remove <alias>

5) Platforms / channels

oc configure --section channels
oc channels list
oc channels status --probe
oc channels login --channel <channel>
oc qr

6) Pairing

#
oc pairing list --channel <channel>
oc pairing approve --channel <channel> <code>
oc devices list
oc devices approve <requestId>

7) Discord allow list

oc config get channels.discord
oc config set channels.discord.allowFrom '["USER_ID"]' --strict-json
oc config set 'channels.discord.guilds["GUILD_ID"]' '{"slug":"your-server","requireMention":true}' --strict-json
oc config set 'channels.discord.guilds["GUILD_ID"].users' '["USER_ID"]' --strict-json

8) Discord always vs mention-only

#
oc config set 'channels.discord.guilds["GUILD_ID"].requireMention' true --strict-json
oc config set 'channels.discord.guilds["GUILD_ID"].requireMention' false --strict-json
oc config set 'channels.discord.guilds["GUILD_ID"].channels.help' '{"allow":true,"requireMention":true}' --strict-json
oc config set 'channels.discord.guilds["GUILD_ID"].channels.help' '{"allow":true,"requireMention":false}' --strict-json

9) After config changes

oc config validate
docker restart openclaw-b8wu-openclaw-1

If you want, I can make the same list with your real Discord IDs filled in so it’s fully copy-paste ready.

young perch
#

Yes do it

peak dockBOT
#

Yep, here’s the copy-paste version with the IDs visible in this thread filled in.

Using:

  • Your user ID: 1302991150763999302
  • Current server/guild ID: 1456350064065904867
  • Current channel key: basic-set-up-details

0) Save the shortcut

echo 'oc(){ docker exec -it openclaw-b8wu-openclaw-1 openclaw "$@"; }' >> ~/.bashrc && source ~/.bashrc

1) OpenClaw on/off/restart

#
docker start openclaw-b8wu-openclaw-1
docker stop openclaw-b8wu-openclaw-1
docker restart openclaw-b8wu-openclaw-1
docker logs -f openclaw-b8wu-openclaw-1

2) Basic checks

oc --version
oc status
oc status --all
oc doctor
oc config validate
#

3) API / provider / models

oc models auth add
oc models auth login
oc models auth paste-token
oc models status
oc models list
oc models set <model-id-or-alias>

4) Model aliases

#
oc models aliases list
oc models aliases add fast openai/gpt-5.4
oc models aliases remove fast

Change openai/gpt-5.4 to whatever model you actually want.


5) Platforms / channels

oc configure --section channels
oc channels list
oc channels status --probe
oc channels login --channel <channel>
#
oc qr

6) Pairing

oc pairing list --channel <channel>
oc pairing approve --channel <channel> <code>
oc devices list
oc devices approve <requestId>

7) Discord, pre-filled for your server/user

#

Allow your Discord DMs

oc config set channels.discord.allowFrom '["1302991150763999302"]' --strict-json

Allow your current server

oc config set 'channels.discord.guilds["1456350064065904867"]' '{"slug":"basic-set-up-details-server","requireMention":true}' --strict-json

Allow only your current channel

oc config set 'channels.discord.guilds["1456350064065904867"]' '{"slug":"basic-set-up-details-server","requireMention":true,"channels":{"basic-set-up-details":{"allow":true,"requireMention":true}}}' --strict-json

Allow your user inside that server

#
oc config set 'channels.discord.guilds["1456350064065904867"].users' '["1302991150763999302"]' --strict-json

Mention-only in that server

oc config set 'channels.discord.guilds["1456350064065904867"].requireMention' true --strict-json

Always reply in that server

oc config set 'channels.discord.guilds["1456350064065904867"].requireMention' false --strict-json

Mention-only in your current channel

#
oc config set 'channels.discord.guilds["1456350064065904867"].channels.basic-set-up-details' '{"allow":true,"requireMention":true}' --strict-json

Always reply in your current channel

oc config set 'channels.discord.guilds["1456350064065904867"].channels.basic-set-up-details' '{"allow":true,"requireMention":false}' --strict-json

Check current Discord config

oc config get channels.discord

After Discord config changes

#
oc config validate
docker restart openclaw-b8wu-openclaw-1

One important note

The server slug I filled as:

basic-set-up-details-server

That slug is just a label. You can rename it to anything simple, for example:

  • my-server
#
  • main-discord
  • wrakeeb-server

It does not need to match the real Discord server name exactly.

If you want, next I can make you one final polished block with:

  • no explanations
  • only commands
  • ready to paste straight into Ubuntu.
young perch
#

Alright, now I wanna add her to a server and itll be mention only and she will only reply to my messages when I mention her, not anyone else.

Before that, added her to the server and need to allow this server: 1396404029680128001

This is the server ID: 1396404029680128001
My User ID: 1302991150763999302

peak dockBOT
#

Yep, for that server, mention only, and only your messages, run this:

oc config set 'channels.discord.guilds["1396404029680128001"]' '{"slug":"server-1396404029680128001","requireMention":true,"users":["1302991150763999302"]}' --strict-json

Then validate and restart:

oc config validate
docker restart openclaw-b8wu-openclaw-1

What this does

  • allows server 1396404029680128001
  • makes it mention only
  • only allows user 1302991150763999302 to trigger replies there
#

Check it after

oc config get channels.discord

If you want, I can also give you the next command to limit her to only one specific channel inside that server.

young perch
#

It's showing

This channel is not allowed.

Even though I want her to reply anywhere in that server, no specific channels needed

peak dockBOT
#

That sounds like Discord is still gating at the channel level. I’m going to verify the exact config shape before I give you the fix.

#

Got it. Then let’s force it into the exact shape you want:

  • whole server allowed
  • mention only
  • only your user can trigger it
  • no channel-specific allowlist

Run these:

oc config set channels.discord.groupPolicy '"allowlist"' --strict-json
oc config unset 'channels.discord.guilds["1396404029680128001"].channels'
oc config set 'channels.discord.guilds["1396404029680128001"]' '{"slug":"server-1396404029680128001","requireMention":true,"users":["1302991150763999302"]}' --strict-json
oc config validate
docker restart openclaw-b8wu-openclaw-1
#

Then verify it looks like this

oc config get 'channels.discord.guilds["1396404029680128001"]'

You want it to show a guild entry with:

  • requireMention: true
  • users: ["1302991150763999302"]
  • no channels block

That should allow any channel in that server, but only when you mention the bot.

If it still says This channel is not allowed, paste this output next:

oc config get channels.discord
young perch
#

Still getting the same message. Let's do step by step and it and ill show u the command respond. This is the server id: 1396404029680128001

And my user: 1302991150763999302

peak dockBOT
#

Yep, let’s do it step by step.

Step 1

Run this exact command and paste the output:

oc config get channels.discord.groupPolicy

If it says the path is missing or empty, paste that too.

young perch
#

oc config get channels.discord.groupPolicy

🦞 OpenClaw 2026.4.12 (1c0672b) — Half butler, half debugger, full crustacean.

peak dockBOT
#

Good, that means groupPolicy is probably unset and falling back at runtime.

Step 2

Now let’s inspect the guild entries only. Run this and paste the output:

oc config get channels.discord.guilds

That won’t expose your bot token.

young perch
#

oc config get channels.discord.guilds

🦞 OpenClaw 2026.4.12 (1c0672b) — I'm basically a Swiss Army knife, but with more opinions and fewer sharp edges.

{
  "1495157727146545194": {
    "requireMention": false,
    "users": [
      "1302991150763999302"
    ]
  },
  "\"1396404029680128001\"": {
    "slug": "server-1396404029680128001",
    "requireMention": true,
    "users": [
      "1302991150763999302"
    ]
  }
}

#

oc config get channels.discord.guilds

🦞 OpenClaw 2026.4.12 (1c0672b) — I'm basically a Swiss Army knife, but with more opinions and fewer sharp edges.

{
"1495157727146545194": {
"requireMention": false,
"users": [
"1302991150763999302"
]
},
""1396404029680128001"": {
"slug": "server-1396404029680128001",
"requireMention": true,
"users": [
"1302991150763999302"
]
}
}

#
oc config get channels.discord.guilds

:lobster: OpenClaw 2026.4.12 (1c0672b) — I'm basically a Swiss Army knife, but with more opinions and fewer sharp edges.

{
  "1495157727146545194": {
    "requireMention": false,
    "users": [
      "1302991150763999302"
    ]
  },
  "\"1396404029680128001\"": {
    "slug": "server-1396404029680128001",
    "requireMention": true,
    "users": [
      "1302991150763999302"
    ]
  }
}
peak dockBOT
#

Looks like you only ran the get, not the set, because the bad quoted key is still there.

Let’s make it impossible to miss. Run this one exact line:

oc config set channels.discord.guilds '{"1495157727146545194":{"requireMention":false,"users":["1302991150763999302"]},"1396404029680128001":{"slug":"server-1396404029680128001","requireMention":true,"users":["1302991150763999302"]}}' --strict-json && oc config get channels.discord.guilds

Then paste the full output.

If it errors, paste the error exactly.

young perch
#

🦞 OpenClaw 2026.4.12 (1c0672b) — Your .zshrc wishes it could do what I do.

Config overwrite: /data/.openclaw/openclaw.json (sha256 1c71e1188880393d44371ec8fcf68b0ccf52958d0bb9997c27c18ac4b2517ebc -> 63ea806057077a4b3692d2e1295a59f0de8a77ddfcc6e82658dd2a8ab7020026, backup=/data/.openclaw/openclaw.json.bak)
Updated channels.discord.guilds. Restart the gateway to apply.

🦞 OpenClaw 2026.4.12 (1c0672b) — You had me at 'openclaw gateway start.'

{
  "1495157727146545194": {
    "requireMention": false,
    "users": [
      "1302991150763999302"
    ]
  },
  "1396404029680128001": {
    "slug": "server-1396404029680128001",
    "requireMention": true,
    "users": [
      "1302991150763999302"
    ]
  }
}
root@srv1584299:~# ```
peak dockBOT
#

Perfect, the guild key is fixed now.

Step 4

Now set Discord group policy explicitly and restart the container:

oc config set channels.discord.groupPolicy '"allowlist"' --strict-json && docker restart openclaw-b8wu-openclaw-1

After that, test the bot in server 1396404029680128001 by mentioning it from your user.

Then tell me one of these:

  • it works
  • or the exact message it replies with now
young perch
#

Yeap, works now but She's also adding reactions when replying to my messages. How can I stop that?

peak dockBOT
#

Nice, glad we caught the access issue. Let me verify the exact Discord reaction setting so I don’t give you the wrong key.

#

Yep, you can turn that off.

If you want no reactions at all

Run these:

oc config set messages.ackReaction '""' --strict-json
oc config set messages.statusReactions.enabled false --strict-json
docker restart openclaw-b8wu-openclaw-1

What they do

  • messages.ackReaction = "" disables the little reaction while she’s thinking
  • messages.statusReactions.enabled = false disables lifecycle/status reactions too

If you want, I can also give you the single command to make her text-only everywhere with no reactions, no prefix, just plain replies.

young perch
#

I want her to add reaction when I ask her to. She's not adding on my another server but adding in this server: 1396404029680128001

peak dockBOT
#

Let me verify the exact reaction-related config and the likely Discord permission issue, since this sounds like per-server permissions more than routing now.

#

That’s a separate thing, and I’m pretty sure the difference is Discord server/channel permissions, not the OpenClaw mention config.

Important

The settings we changed earlier:

  • messages.ackReaction
  • messages.statusReactions.enabled

only control automatic reactions.

They do not stop the bot from reacting when you explicitly ask it to.


First, make sure reaction actions are enabled in OpenClaw

Run this:

#
oc config get channels.discord.actions.reactions

If it comes back empty or false, enable it:

oc config set channels.discord.actions.reactions true --strict-json
docker restart openclaw-b8wu-openclaw-1

Second, check Discord permissions in the server where it fails

On the other server, make sure the bot role has:

  • View Channels
#
  • Read Message History
  • Add Reactions

If you want custom emoji from outside that server, also allow:

  • Use External Emojis

Also check the channel-level overrides, because a server can allow reactions globally but a specific channel can still block them.


Why it works in server 1396404029680128001

Because that server/channel likely already gives the bot the right Discord permissions.


Best next step

#

Run this and paste the output:

oc config get channels.discord.actions.reactions

If that says true, then the problem is almost certainly the bot permissions in the other server.

young perch
#
oc config get channels.discord.actions.reactions

🦞 OpenClaw 2026.4.12 (1c0672b) — Shell yeah—I'm here to pinch the toil and leave you the glory.

Config path not found: channels.discord.actions.reactions```
peak dockBOT
#

Perfect, that actually tells us a lot.

Config path not found here means you did not disable it in OpenClaw, and the Discord reaction action is using the default enabled behavior.

So this is not an OpenClaw config problem now.
It’s almost certainly a Discord permission issue on the other server/channel.

What to fix on the other server

Make sure the bot role has these permissions there:

  • View Channels
  • Read Message History
  • Add Reactions

If you want it to use custom emoji from other servers, also enable:

  • Use External Emojis
#

Also check channel-level overrides

Even if the server role allows reactions, a specific channel can still block them.

In the server where it fails:

  1. Open the channel
  2. Edit Channel
  3. Permissions
  4. Check the bot role
  5. Make sure Add Reactions is allowed

Optional, if you want to force it on explicitly in config too

Not required, but you can set it anyway:

oc config set channels.discord.actions.reactions true --strict-json
#
docker restart openclaw-b8wu-openclaw-1

Short version

  • Server 1396404029680128001 works → OpenClaw can react
  • Other server fails → the other server/channel likely does not give the bot Add Reactions

If you want, I can give you a Discord permission checklist screenshot-style text so you can compare the working server vs the broken server fast.

young perch
#

Add Reaction is already allowed. i don't want her to add reactions whenever I mention her unless I tell her to. Also, do the process step by step.

peak dockBOT
#

Yep, let’s do only the automatic reaction part first, step by step.

Step 1

Run this exact command and paste the output:

oc config get messages.ackReaction

If it says the path is missing, paste that too.

young perch
#

🦞 OpenClaw 2026.4.12 (1c0672b) — I can't fix your code taste, but I can fix your build and your backlog.

Config path not found: messages.ackReaction```
peak dockBOT
#

Perfect, that means it’s falling back to the default reaction.

Step 2

Run this exact command:

oc config set messages.ackReaction '""' --strict-json && oc config get messages.ackReaction

Then paste the output.

young perch
#

🦞 OpenClaw 2026.4.12 (1c0672b) — If you can describe it, I can probably automate it—or at least make it funnier.

Config overwrite: /data/.openclaw/openclaw.json (sha256 f1023d2a7b71e6721781b99fabdb1cdd8e30d1d8bff32b2519befe4f757fe04f -> c43e3496706126a46ad0436a7707bb0dcdc996236df56b854c73c0c8df995250, backup=/data/.openclaw/openclaw.json.bak)
Updated messages.ackReaction. Restart the gateway to apply.

🦞 OpenClaw 2026.4.12 (1c0672b) — One CLI to rule them all, and one more restart because you changed the port.```
peak dockBOT
#

Nice, that part is set now.

Step 3

Restart the container so it actually applies:

docker restart openclaw-b8wu-openclaw-1

Step 4

After it comes back up, mention the bot once in Discord.

Then tell me just one of these:

  • no reaction now
  • still reacts
charred abyssBOT
young perch
#

Alright it's fixed. Explain how it worked.

peak dockBOT
#

Yep. For the reaction part, here’s what happened:

Why she was reacting automatically

OpenClaw has an ack reaction feature.

That reaction is just a little “I saw your message / I’m working on it” emoji.

Because your config did not have:

messages.ackReaction

set at all, OpenClaw used its default fallback reaction instead.

That’s why she kept reacting whenever you mentioned her.

#

What we changed

We set:

oc config set messages.ackReaction '""' --strict-json

That means:

  • messages.ackReaction = ""
  • empty string = disable automatic ack reactions

Why restart was needed

OpenClaw told you:

Restart the gateway to apply.

#

So after:

docker restart openclaw-b8wu-openclaw-1

the container reloaded the updated config, and the automatic reaction stopped.

Important difference

This only disables automatic reactions.

It does not stop her from adding a reaction when you explicitly ask her to.

So now you have the behavior you wanted:

  • no auto reaction on every mention
  • still able to react when you tell her to
#

Glad we got it cleanly fixed. 🎉

If this solved it, please right-click the solution message → Apps → ✅ Mark Solution so Answer Overflow can index it.

young perch
#

Can I forward this whole chat history to my DM or keep a copy of it?

peak dockBOT
#

Yes, but Discord doesn’t really have a clean “forward whole thread to DM” button.

Easiest ways to keep a copy

1) Copy/paste the thread manually

Open the thread, select the messages, and paste them into:

  • Notes
  • Google Docs
  • Obsidian
  • a text file

2) Save the thread link

Right-click the thread or a message in it and Copy Message Link so you can come back later.

3) Ask me for a clean recap

This is probably the best option here. I can turn this whole thread into:

  • a short summary
#
  • a copy-paste command sheet
  • or a step-by-step notes version

Best recommendation

Instead of saving the raw whole thread, I’d make a clean final recap of:

  • your Docker shortcut
  • start/stop/restart commands
  • Discord allowlist setup
  • mention-only config
  • no-auto-reaction fix

If you want, I can do that now in one neat message so you can DM it to yourself or save it.

young perch
#

Do it

peak dockBOT
#

Here’s the clean final recap for your Hostinger Docker + Discord setup.


1) Your Docker shortcut

Save this in ~/.bashrc:

echo 'oc(){ docker exec -it openclaw-b8wu-openclaw-1 openclaw "$@"; }' >> ~/.bashrc && source ~/.bashrc

Then you can use oc ... for OpenClaw commands.


2) Start / stop / restart OpenClaw

#
docker start openclaw-b8wu-openclaw-1
docker stop openclaw-b8wu-openclaw-1
docker restart openclaw-b8wu-openclaw-1
docker logs -f openclaw-b8wu-openclaw-1

3) Basic OpenClaw checks

oc --version
oc status
oc status --all
oc doctor
#
oc config validate

4) Models / API / provider basics

oc models auth add
oc models auth login
oc models auth paste-token
oc models status
oc models list
oc models set <model-id-or-alias>
#

Model aliases

oc models aliases list
oc models aliases add fast openai/gpt-5.4
oc models aliases remove fast

5) Platforms / channels / pairing

oc configure --section channels
oc channels list
oc channels status --probe
oc channels login --channel <channel>
#
oc qr

Pairing

oc pairing list --channel <channel>
oc pairing approve --channel <channel> <code>
oc devices list
oc devices approve <requestId>

6) Your working Discord server setup

Server ID

#
1396404029680128001

Your user ID

1302991150763999302

Working guild allowlist config

This setup means:

  • bot is allowed in that server
  • mention only
  • only your user can trigger replies there
#
oc config set channels.discord.guilds '{"1495157727146545194":{"requireMention":false,"users":["1302991150763999302"]},"1396404029680128001":{"slug":"server-1396404029680128001","requireMention":true,"users":["1302991150763999302"]}}' --strict-json

Explicit Discord group policy

oc config set channels.discord.groupPolicy '"allowlist"' --strict-json

Restart after Discord config changes

docker restart openclaw-b8wu-openclaw-1

7) Stop automatic reactions on mentions

#

This disables the automatic “ack” reaction when you mention the bot, but still lets the bot react when you explicitly ask it to.

oc config set messages.ackReaction '""' --strict-json
docker restart openclaw-b8wu-openclaw-1

Why it worked

  • messages.ackReaction was unset
  • OpenClaw was using the default fallback emoji
  • setting it to "" disabled the automatic reaction
  • restart applied the change

8) If you ever want to inspect Discord config again

#
oc config get channels.discord
oc config get channels.discord.guilds
oc config get messages.ackReaction

9) Key lessons from this thread

  • On Hostinger Docker, use:
    • docker start/stop/restart
    • oc ... for OpenClaw CLI inside the container
  • Your earlier Discord server issue happened because the guild key was accidentally saved with extra quotes
  • The fixed guild entry now matches correctly
  • Automatic reactions and “react when asked” are different things
#

If you want, I can also turn this into an even cleaner “copy into Notes/Obsidian” version with no extra explanation, just commands + labels.

If this solved it, please right-click the solution message → Apps → ✅ Mark Solution so Answer Overflow can index it.

young perch
#

Thanks Krill

peak dockBOT
#

Anytime 🦐 Glad we got it working.

If this fixed it, please right-click the solution message → Apps → ✅ Mark Solution so Answer Overflow can index it for the next person.