Skip to content

Instantly share code, notes, and snippets.

@winse
Last active March 15, 2026 02:08
Show Gist options
  • Select an option

  • Save winse/78bd72b3eb1fa04622f749e897a54db2 to your computer and use it in GitHub Desktop.

Select an option

Save winse/78bd72b3eb1fa04622f749e897a54db2 to your computer and use it in GitHub Desktop.
re-install openclaw on pi-4
# Re-install openclaw on pi-4
Welcome to Ubuntu 24.04.4 LTS (GNU/Linux 6.8.0-1047-raspi aarch64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of Sun Mar 1 11:26:23 UTC 2026
System load: 0.3 Temperature: 41.4 C
Usage of /: 15.4% of 14.11GB Processes: 159
Memory usage: 6% Users logged in: 0
Swap usage: 0% IPv4 address for wlan0: 192.168.123.47
The list of available updates is more than a week old.
To check for new updates run: sudo apt update
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
ubuntu@ubuntu:~$
ubuntu@ubuntu:~$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 379M 3.2M 376M 1% /run
/dev/sda2 15G 2.2G 12G 17% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda1 505M 94M 411M 19% /boot/firmware
tmpfs 379M 12K 379M 1% /run/user/1000
ubuntu@ubuntu:~$
ubuntu@ubuntu:~$ sudo adduser openclaw
info: Adding user `openclaw' ...
info: Selecting UID/GID from range 1000 to 59999 ...
info: Adding new group `openclaw' (1001) ...
info: Adding new user `openclaw' (1001) with group `openclaw (1001)' ...
info: Creating home directory `/home/openclaw' ...
info: Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for openclaw
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
info: Adding new user `openclaw' to supplemental / extra groups `users' ...
info: Adding user `openclaw' to group `users' ...
ubuntu@ubuntu:~$
ubuntu@ubuntu:~$ sudo usermod -aG sudo openclaw
ubuntu@ubuntu:~$
openclaw@ubuntu:~$ loginctl user-status $(whoami)
openclaw (1001)
Since: Sun 2026-03-01 11:34:04 UTC; 20s ago
State: active
Sessions: *4
Linger: no
Unit: user-1001.slice
├─session-4.scope
│ ├─1661 "sshd: openclaw [priv]"
│ ├─1734 "sshd: openclaw@pts/1"
│ ├─1735 -bash
│ ├─1749 loginctl user-status openclaw
│ └─1750 pager
└─user@1001.service
└─init.scope
├─1665 /usr/lib/systemd/systemd --user
└─1667 "(sd-pam)"
Mar 01 11:34:06 ubuntu systemd[1665]: Listening on gpg-agent.socket - GnuPG cryptographic agent and passphrase cache.
Mar 01 11:34:06 ubuntu systemd[1665]: Listening on keyboxd.socket - GnuPG public key management service.
Mar 01 11:34:06 ubuntu systemd[1665]: Listening on pk-debconf-helper.socket - debconf communication socket.
Mar 01 11:34:06 ubuntu systemd[1665]: Listening on snapd.session-agent.socket - REST API socket for snapd user session agent.
Mar 01 11:34:06 ubuntu systemd[1665]: Listening on dbus.socket - D-Bus User Message Bus Socket.
Mar 01 11:34:06 ubuntu systemd[1665]: Listening on gpg-agent-ssh.socket - GnuPG cryptographic agent (ssh-agent emulation).
Mar 01 11:34:06 ubuntu systemd[1665]: Reached target sockets.target - Sockets.
Mar 01 11:34:06 ubuntu systemd[1665]: Reached target basic.target - Basic System.
Mar 01 11:34:06 ubuntu systemd[1665]: Reached target default.target - Main User Target.
Mar 01 11:34:06 ubuntu systemd[1665]: Startup finished in 1.101s.
openclaw@ubuntu:~$
openclaw@ubuntu:~$ export HTTP_PROXY=http://192.168.123.165:23333
openclaw@ubuntu:~$ export HTTPS_PROXY=http://192.168.123.165:23333
openclaw@ubuntu:~$
openclaw@ubuntu:~$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
==> Checking for `sudo` access (which may request your password)...
[sudo] password for openclaw:
==> This script will install:
/home/linuxbrew/.linuxbrew/bin/brew
/home/linuxbrew/.linuxbrew/share/doc/homebrew
/home/linuxbrew/.linuxbrew/share/man/man1/brew.1
/home/linuxbrew/.linuxbrew/share/zsh/site-functions/_brew
/home/linuxbrew/.linuxbrew/etc/bash_completion.d/brew
/home/linuxbrew/.linuxbrew/Homebrew
==> The following new directories will be created:
/home/linuxbrew/.linuxbrew/bin
/home/linuxbrew/.linuxbrew/etc
/home/linuxbrew/.linuxbrew/include
/home/linuxbrew/.linuxbrew/lib
/home/linuxbrew/.linuxbrew/sbin
/home/linuxbrew/.linuxbrew/share
/home/linuxbrew/.linuxbrew/var
/home/linuxbrew/.linuxbrew/opt
/home/linuxbrew/.linuxbrew/share/zsh
/home/linuxbrew/.linuxbrew/share/zsh/site-functions
/home/linuxbrew/.linuxbrew/var/homebrew
/home/linuxbrew/.linuxbrew/var/homebrew/linked
/home/linuxbrew/.linuxbrew/Cellar
/home/linuxbrew/.linuxbrew/Caskroom
/home/linuxbrew/.linuxbrew/Frameworks
Press RETURN/ENTER to continue or any other key to abort:
==> /usr/bin/sudo /usr/bin/install -d -o openclaw -g openclaw -m 0755 /home/linuxbrew/.linuxbrew
==> /usr/bin/sudo /bin/mkdir -p /home/linuxbrew/.linuxbrew/bin /home/linuxbrew/.linuxbrew/etc /home/linuxbrew/.linuxbrew/include /home/linuxbrew/.linuxbrew/lib /home/linuxbrew/.linuxbrew/sbin /home/linuxbrew/.linuxbrew/share /home/linuxbrew/.linuxbrew/var /home/linuxbrew/.linuxbrew/opt /home/linuxbrew/.linuxbrew/share/zsh /home/linuxbrew/.linuxbrew/share/zsh/site-functions /home/linuxbrew/.linuxbrew/var/homebrew /home/linuxbrew/.linuxbrew/var/homebrew/linked /home/linuxbrew/.linuxbrew/Cellar /home/linuxbrew/.linuxbrew/Caskroom /home/linuxbrew/.linuxbrew/Frameworks
==> /usr/bin/sudo /bin/chmod ug=rwx /home/linuxbrew/.linuxbrew/bin /home/linuxbrew/.linuxbrew/etc /home/linuxbrew/.linuxbrew/include /home/linuxbrew/.linuxbrew/lib /home/linuxbrew/.linuxbrew/sbin /home/linuxbrew/.linuxbrew/share /home/linuxbrew/.linuxbrew/var /home/linuxbrew/.linuxbrew/opt /home/linuxbrew/.linuxbrew/share/zsh /home/linuxbrew/.linuxbrew/share/zsh/site-functions /home/linuxbrew/.linuxbrew/var/homebrew /home/linuxbrew/.linuxbrew/var/homebrew/linked /home/linuxbrew/.linuxbrew/Cellar /home/linuxbrew/.linuxbrew/Caskroom /home/linuxbrew/.linuxbrew/Frameworks
==> /usr/bin/sudo /bin/chmod go-w /home/linuxbrew/.linuxbrew/share/zsh /home/linuxbrew/.linuxbrew/share/zsh/site-functions
==> /usr/bin/sudo /bin/chown openclaw /home/linuxbrew/.linuxbrew/bin /home/linuxbrew/.linuxbrew/etc /home/linuxbrew/.linuxbrew/include /home/linuxbrew/.linuxbrew/lib /home/linuxbrew/.linuxbrew/sbin /home/linuxbrew/.linuxbrew/share /home/linuxbrew/.linuxbrew/var /home/linuxbrew/.linuxbrew/opt /home/linuxbrew/.linuxbrew/share/zsh /home/linuxbrew/.linuxbrew/share/zsh/site-functions /home/linuxbrew/.linuxbrew/var/homebrew /home/linuxbrew/.linuxbrew/var/homebrew/linked /home/linuxbrew/.linuxbrew/Cellar /home/linuxbrew/.linuxbrew/Caskroom /home/linuxbrew/.linuxbrew/Frameworks
==> /usr/bin/sudo /bin/chgrp openclaw /home/linuxbrew/.linuxbrew/bin /home/linuxbrew/.linuxbrew/etc /home/linuxbrew/.linuxbrew/include /home/linuxbrew/.linuxbrew/lib /home/linuxbrew/.linuxbrew/sbin /home/linuxbrew/.linuxbrew/share /home/linuxbrew/.linuxbrew/var /home/linuxbrew/.linuxbrew/opt /home/linuxbrew/.linuxbrew/share/zsh /home/linuxbrew/.linuxbrew/share/zsh/site-functions /home/linuxbrew/.linuxbrew/var/homebrew /home/linuxbrew/.linuxbrew/var/homebrew/linked /home/linuxbrew/.linuxbrew/Cellar /home/linuxbrew/.linuxbrew/Caskroom /home/linuxbrew/.linuxbrew/Frameworks
==> /usr/bin/sudo /bin/mkdir -p /home/linuxbrew/.linuxbrew/Homebrew
==> /usr/bin/sudo /bin/chown -R openclaw:openclaw /home/linuxbrew/.linuxbrew/Homebrew
==> Downloading and installing Homebrew...
remote: Enumerating objects: 322255, done.
remote: Counting objects: 100% (380/380), done.
remote: Compressing objects: 100% (181/181), done.
remote: Total 322255 (delta 264), reused 244 (delta 199), pack-reused 321875 (from 2)
remote: Enumerating objects: 55, done.
remote: Counting objects: 100% (33/33), done.
remote: Total 55 (delta 33), reused 33 (delta 33), pack-reused 22 (from 1)
==> Updating Homebrew...
==> Downloading https://ghcr.io/v2/homebrew/core/portable-ruby/blobs/sha256:56b0017d634509e49272a6eccd88f888dd4031404e230f9defb3b21707781310
######################################################################## 100.0%
==> Pouring portable-ruby-3.4.8.arm64_linux.bottle.tar.gz
Warning: /home/linuxbrew/.linuxbrew/bin is not in your PATH.
Instructions on how to configure your shell for Homebrew
can be found in the 'Next steps' section below.
==> Installation successful!
==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
https://docs.brew.sh/Analytics
No analytics data has been sent yet (nor will any be during this install run).
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
https://github.com/Homebrew/brew#donations
==> Next steps:
- Run these commands in your terminal to add Homebrew to your PATH:
echo >> /home/openclaw/.bashrc
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv bash)"' >> /home/openclaw/.bashrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv bash)"
- Install Homebrew's dependencies if you have sudo access:
sudo apt-get install build-essential
For more information, see:
https://docs.brew.sh/Homebrew-on-Linux
- We recommend that you install GCC:
brew install gcc
- Run brew help to get started
- Further documentation:
https://docs.brew.sh
openclaw@ubuntu:~$
openclaw@ubuntu:~$ echo >> /home/openclaw/.bashrc
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv bash)"' >> /home/openclaw/.bashrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv bash)"
openclaw@ubuntu:~$
openclaw@ubuntu:~$
openclaw@ubuntu:~$ echo >> /home/openclaw/.bashrc
echo 'export HOMEBREW_INSTALL_FROM_API=1' >> /home/openclaw/.bashrc
echo 'export HOMEBREW_API_DOMAIN="https://mirrors.aliyun.com/homebrew-bottles/api"' >> /home/openclaw/.bashrc
echo 'export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.aliyun.com/homebrew/brew.git"' >> /home/openclaw/.bashrc
echo 'export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.aliyun.com/homebrew/homebrew-core.git"' >> /home/openclaw/.bashrc
echo 'export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.aliyun.com/homebrew/homebrew-bottles"' >> /home/openclaw/.bashrc
openclaw@ubuntu:~$
openclaw@ubuntu:~$
openclaw@ubuntu:~$ source .bashrc
openclaw@ubuntu:~$
openclaw@ubuntu:~$ brew update
HOMEBREW_BREW_GIT_REMOTE set: using https://mirrors.aliyun.com/homebrew/brew.git as the Homebrew/brew Git remote.
Already up-to-date.
openclaw@ubuntu:~$ brew install gcc
==> Installing gcc
==> Pouring gcc--15.2.0_1.arm64_linux.bottle.tar.gz
Warning: The post-install step did not complete successfully
You can try again using:
brew postinstall gcc
==> Summary
🍺 /home/linuxbrew/.linuxbrew/Cellar/gcc/15.2.0_1: 2,036 files, 401.9MB
==> Running `brew cleanup gcc`...
Disable this behaviour by setting `HOMEBREW_NO_INSTALL_CLEANUP=1`.
Hide these hints with `HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).
openclaw@ubuntu:~$
openclaw@ubuntu:~$ sudo apt install build-essential unzip
openclaw@ubuntu:~$
openclaw@ubuntu:~$ brew cleanup --prune=all
openclaw@ubuntu:~$ sudo reboot
openclaw@ubuntu:~$ export HTTP_PROXY=http://192.168.123.165:23333
openclaw@ubuntu:~$ export HTTPS_PROXY=http://192.168.123.165:23333
openclaw@ubuntu:~$ sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak
openclaw@ubuntu:~$ sudo sed -i 's|http://ports.ubuntu.com/|https://mirrors.aliyun.com/|g' /etc/apt/sources.list.d/ubuntu.sources
openclaw@ubuntu:~$ sudo sed -i 's|http://ports.ubuntu.com/|https://mirrors.aliyun.com/|g' /etc/apt/sources.list.d/ubuntu.sources
openclaw@ubuntu:~$ sudo apt install tmpreaper
openclaw@ubuntu:~$ sudo tmpreaper 1h /var/tmp
# vnc, chrome,font,tools
#openclaw@ubuntu:~$ sudo apt curl jq xfce4 tightvncserver chromium-browser chromium-codecs-ffmpeg-extra xdg-utils fonts-wqy-microhei imagemagick scrot fonts-noto-color-emoji ristretto gedit
#openclaw@ubuntu:~$ sudo apt sudo fc-cache -fv
openclaw@ubuntu:~$
openclaw@ubuntu:~$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 16774 100 16774 0 0 71417 0 --:--:-- --:--:-- --:--:-- 71683
=> Downloading nvm from git to '/home/openclaw/.nvm'
=> Cloning into '/home/openclaw/.nvm'...
remote: Enumerating objects: 403, done.
remote: Counting objects: 100% (403/403), done.
remote: Compressing objects: 100% (332/332), done.
remote: Total 403 (delta 56), reused 168 (delta 43), pack-reused 0 (from 0)
Receiving objects: 100% (403/403), 404.32 KiB | 2.59 MiB/s, done.
Resolving deltas: 100% (56/56), done.
* (HEAD detached at FETCH_HEAD)
master
=> Compressing and cleaning up git repository
=> Appending nvm source string to /home/openclaw/.bashrc
=> Appending bash_completion source string to /home/openclaw/.bashrc
=> Close and reopen your terminal to start using nvm or run the following to use it now:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
openclaw@ubuntu:~$
openclaw@ubuntu:~$ source .bashrc
openclaw@ubuntu:~$
openclaw@ubuntu:~$ nvm install 22
Downloading and installing node v22.22.0...
Downloading https://nodejs.org/dist/v22.22.0/node-v22.22.0-linux-arm64.tar.xz...
##################################################################################################################################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v22.22.0 (npm v10.9.4)
Creating default alias: default -> 22 (-> v22.22.0 *)
openclaw@ubuntu:~$
openclaw@ubuntu:~$ npm config set registry https://registry.npmmirror.com
openclaw@ubuntu:~$
openclaw@ubuntu:~$
openclaw@ubuntu:~$ curl -fsSL https://openclaw.ai/install.sh | bash
🦞 OpenClaw Installer
It's not "failing," it's "discovering new ways to configure the same thing wrong."
✓ Detected: linux
Install plan
OS: linux
Install method: npm
Requested version: latest
[1/3] Preparing environment
✓ Node.js v22.22.0 found
· Active Node.js: v22.22.0 (/home/openclaw/.nvm/versions/node/v22.22.0/bin/node)
· Active npm: 10.9.4 (/home/openclaw/.nvm/versions/node/v22.22.0/bin/npm)
[2/3] Installing OpenClaw
✓ Git already installed
· Installing OpenClaw v2026.2.26
✓ OpenClaw npm package installed
✓ OpenClaw installed
[3/3] Finalizing setup
🦞 OpenClaw installed successfully (2026.2.26)!
cracks claws Alright, what are we building?
· Starting setup
🦞 OpenClaw 2026.2.26 (bc50708) — I speak fluent bash, mild sarcasm, and aggressive tab-completion energy.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
🦞 OPENCLAW 🦞
┌ OpenClaw onboarding
◇ Security ─────────────────────────────────────────────────────────────────────────────────╮
│ │
│ Security warning — please read. │
│ │
│ OpenClaw is a hobby project and still in beta. Expect sharp edges. │
│ By default, OpenClaw is a personal agent: one trusted operator boundary. │
│ This bot can read files and run actions if tools are enabled. │
│ A bad prompt can trick it into doing unsafe things. │
│ │
│ OpenClaw is not a hostile multi-tenant boundary by default. │
│ If multiple users can message one tool-enabled agent, they share that delegated tool │
│ authority. │
│ │
│ If you’re not comfortable with security hardening and access control, don’t run │
│ OpenClaw. │
│ Ask someone experienced to help before enabling tools or exposing it to the internet. │
│ │
│ Recommended baseline: │
│ - Pairing/allowlists + mention gating. │
│ - Multi-user/shared inbox: split trust boundaries (separate gateway/credentials, ideally │
│ separate OS users/hosts). │
│ - Sandbox + least-privilege tools. │
│ - Shared inboxes: isolate DM sessions (`session.dmScope: per-channel-peer`) and keep │
│ tool access minimal. │
│ - Keep secrets out of the agent’s reachable filesystem. │
│ - Use the strongest available model for any bot with tools or untrusted inboxes. │
│ │
│ Run regularly: │
│ openclaw security audit --deep │
│ openclaw security audit --fix │
│ │
│ Must read: https://docs.openclaw.ai/gateway/security │
│ │
├────────────────────────────────────────────────────────────────────────────────────────────╯
◇ I understand this is personal-by-default and shared/multi-user use requires lock-down. Continue?
│ Yes
◇ Onboarding mode
│ QuickStart
◇ QuickStart ─────────────────────────╮
│ │
│ Gateway port: 18789 │
│ Gateway bind: Loopback (127.0.0.1) │
│ Gateway auth: Token (default) │
│ Tailscale exposure: Off │
│ Direct to chat channels. │
│ │
├──────────────────────────────────────╯
◇ Model/auth provider
│ Skip for now
◇ Filter models by provider
│ All providers
◇ Default model
│ Enter model manually
◇ Default model
│ anthropic/claude-opus-4-6
◇ Model check ───────────────────────────────────────────────────────────────────────────╮
│ │
│ No auth configured for provider "anthropic". The agent may fail until credentials are │
│ added. │
│ │
├─────────────────────────────────────────────────────────────────────────────────────────╯
◇ Channel status ────────────────────────────╮
│ │
│ Telegram: needs token │
│ WhatsApp (default): not linked │
│ Discord: needs token │
│ Slack: needs tokens │
│ Signal: needs setup │
│ signal-cli: missing (signal-cli) │
│ iMessage: needs setup │
│ imsg: missing (imsg) │
│ IRC: not configured │
│ Google Chat: not configured │
│ Feishu: install plugin to enable │
│ Google Chat: install plugin to enable │
│ Nostr: install plugin to enable │
│ Microsoft Teams: install plugin to enable │
│ Mattermost: install plugin to enable │
│ Nextcloud Talk: install plugin to enable │
│ Matrix: install plugin to enable │
│ BlueBubbles: install plugin to enable │
│ LINE: install plugin to enable │
│ Zalo: install plugin to enable │
│ Zalo Personal: install plugin to enable │
│ Synology Chat: install plugin to enable │
│ Tlon: install plugin to enable │
│ │
├─────────────────────────────────────────────╯
◇ How channels work ───────────────────────────────────────────────────────────────────────╮
│ │
│ DM security: default is pairing; unknown DMs get a pairing code. │
│ Approve with: openclaw pairing approve <channel> <code> │
│ Public DMs require dmPolicy="open" + allowFrom=["*"]. │
│ Multi-user DMs: run: openclaw config set session.dmScope "per-channel-peer" (or │
│ "per-account-channel-peer" for multi-account channels) to isolate sessions. │
│ Docs: channels/pairing │
│ │
│ Telegram: simplest way to get started — register a bot with @BotFather and get going. │
│ WhatsApp: works with your own number; recommend a separate phone + eSIM. │
│ Discord: very well supported right now. │
│ IRC: classic IRC networks with DM/channel routing and pairing controls. │
│ Google Chat: Google Workspace Chat app with HTTP webhook. │
│ Slack: supported (Socket Mode). │
│ Signal: signal-cli linked device; more setup (David Reagans: "Hop on Discord."). │
│ iMessage: this is still a work in progress. │
│ Feishu: 飞书/Lark enterprise messaging with doc/wiki/drive tools. │
│ Nostr: Decentralized protocol; encrypted DMs via NIP-04. │
│ Microsoft Teams: Bot Framework; enterprise support. │
│ Mattermost: self-hosted Slack-style chat; install the plugin to enable. │
│ Nextcloud Talk: Self-hosted chat via Nextcloud Talk webhook bots. │
│ Matrix: open protocol; install the plugin to enable. │
│ BlueBubbles: iMessage via the BlueBubbles mac app + REST API. │
│ LINE: LINE Messaging API bot for Japan/Taiwan/Thailand markets. │
│ Zalo: Vietnam-focused messaging platform with Bot API. │
│ Zalo Personal: Zalo personal account via QR code login. │
│ Synology Chat: Connect your Synology NAS Chat to OpenClaw with full agent capabilities. │
│ Tlon: decentralized messaging on Urbit; install the plugin to enable. │
│ │
├───────────────────────────────────────────────────────────────────────────────────────────╯
◇ Select channel (QuickStart)
│ Skip for now
Updated ~/.openclaw/openclaw.json
Workspace OK: ~/.openclaw/workspace
Sessions OK: ~/.openclaw/agents/main/sessions
◇ Skills status ─────────────╮
│ │
│ Eligible: 4 │
│ Missing requirements: 40 │
│ Unsupported on this OS: 7 │
│ Blocked by allowlist: 0 │
│ │
├─────────────────────────────╯
◇ Configure skills now? (recommended)
│ Yes
◇ Install missing skill dependencies
│ 🔐 1password, 📰 blogwatcher, 📸 camsnap, 🧩 clawhub, 🧲 gifgrep, 🐙 github, 📧 himalaya, 📦 mcporter, 📄 nano-pdf, 💎 obsidian, 🎙️ openai-whisper, 🧾 summarize, 🎞️
│ video-frames, 𝕏 xurl
◇ Preferred node manager for skill installs
│ npm
^^^^^^^^
◇ Set GOOGLE_PLACES_API_KEY for goplaces?
│ No
◇ Set GEMINI_API_KEY for nano-banana-pro?
│ No
◇ Set NOTION_API_KEY for notion?
│ No
◇ Set OPENAI_API_KEY for openai-image-gen?
│ No
◇ Set OPENAI_API_KEY for openai-whisper-api?
│ No
◇ Set ELEVENLABS_API_KEY for sag?
│ No
◇ Hooks ──────────────────────────────────────────────────────────────────╮
│ │
│ Hooks let you automate actions when agent commands are issued. │
│ Example: Save session context to memory when you issue /new or /reset. │
│ │
│ Learn more: https://docs.openclaw.ai/automation/hooks │
│ │
├──────────────────────────────────────────────────────────────────────────╯
◇ Enable hooks?
│ 🚀 boot-md, 📎 bootstrap-extra-files, 📝 command-logger, 💾 session-memory
◇ Hooks Configured ────────────────────────────────────────────────────────────────╮
│ │
│ Enabled 4 hooks: boot-md, bootstrap-extra-files, command-logger, session-memory │
│ │
│ You can manage hooks later with: │
│ openclaw hooks list │
│ openclaw hooks enable <name> │
│ openclaw hooks disable <name> │
│ │
├───────────────────────────────────────────────────────────────────────────────────╯
Config overwrite: /home/openclaw/.openclaw/openclaw.json (sha256 f7cc0a14bbe6f49951e8f1d1ed3b368b420d974ef4d6d94f8b98ec8e2473c980 -> 42dd08d7bd5077831a7f2cf115cea32118024d3b2b7acf303174d91cfe9913cb, backup=/home/openclaw/.openclaw/openclaw.json.bak)
◇ Systemd ────────────────────────────────────────────────────────────────────────────────╮
│ │
│ Linux installs use a systemd user service by default. Without lingering, systemd stops │
│ the user session on logout/idle and kills the Gateway. │
│ Enabling lingering now (may require sudo; writes /var/lib/systemd/linger). │
│ │
├──────────────────────────────────────────────────────────────────────────────────────────╯
◇ Systemd ─────────────────────────────────╮
│ │
│ Enabled systemd lingering for openclaw. │
│ │
├───────────────────────────────────────────╯
◇ Gateway service runtime ────────────────────────────────────────────╮
│ │
│ QuickStart uses Node for the Gateway service (stable + supported). │
│ │
├──────────────────────────────────────────────────────────────────────╯
◑ Installing Gateway service…...
Installed systemd service: /home/openclaw/.config/systemd/user/openclaw-gateway.service
◇ Gateway service installed.
Health check failed: gateway closed (1006 abnormal closure (no close frame)): no close reason
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /home/openclaw/.openclaw/openclaw.json
Bind: loopback
◇ Health check help ────────────────────────────────╮
│ │
│ Docs: │
│ https://docs.openclaw.ai/gateway/health │
│ https://docs.openclaw.ai/gateway/troubleshooting │
│ │
├────────────────────────────────────────────────────╯
◇ Optional apps ────────────────────────╮
│ │
│ Add nodes for extra features: │
│ - macOS app (system + notifications) │
│ - iOS app (camera/canvas) │
│ - Android app (camera/canvas) │
│ │
├────────────────────────────────────────╯
◇ Control UI ───────────────────────────────────────────────────────────────────────────────╮
│ │
│ Web UI: http://127.0.0.1:18789/ │
│ Web UI (with token): │
│ http://127.0.0.1:18789/#token=1e908d58a5f7b4b3fc98dde1a3150b793da473d9bbc8a4b5 │
│ Gateway WS: ws://127.0.0.1:18789 │
│ Gateway: not detected (gateway closed (1006 abnormal closure (no close frame)): no close │
│ reason) │
│ Docs: https://docs.openclaw.ai/web/control-ui │
│ │
├────────────────────────────────────────────────────────────────────────────────────────────╯
◇ Workspace backup ────────────────────────────────────────╮
│ │
│ Back up your agent workspace. │
│ Docs: https://docs.openclaw.ai/concepts/agent-workspace │
│ │
├───────────────────────────────────────────────────────────╯
◇ Security ──────────────────────────────────────────────────────╮
│ │
│ Running agents on your computer is risky — harden your setup: │
│ https://docs.openclaw.ai/security │
│ │
├─────────────────────────────────────────────────────────────────╯
◇ Shell completion ────────────────────────────────────────────────────────╮
│ │
│ Shell completion installed. Restart your shell or run: source ~/.bashrc │
│ │
├───────────────────────────────────────────────────────────────────────────╯
◇ Dashboard ready ────────────────────────────────────────────────────────────────╮
│ │
│ Dashboard link (with token): │
│ http://127.0.0.1:18789/#token=1e908d58a5f7b4b3fc98dde1a3150b793da473d9bbc8a4b5 │
│ Copy/paste this URL in a browser on this machine to control OpenClaw. │
│ No GUI detected. Open from your computer: │
│ ssh -N -L 18789:127.0.0.1:18789 openclaw@192.168.123.47 │
│ Then open: │
│ http://localhost:18789/ │
│ http://localhost:18789/#token=1e908d58a5f7b4b3fc98dde1a3150b793da473d9bbc8a4b5 │
│ Docs: │
│ https://docs.openclaw.ai/gateway/remote │
│ https://docs.openclaw.ai/web/control-ui │
│ │
├──────────────────────────────────────────────────────────────────────────────────╯
◇ Web search (optional) ─────────────────────────────────────────────────────────────────╮
│ │
│ If you want your agent to be able to search the web, you’ll need an API key. │
│ │
│ OpenClaw uses Brave Search for the `web_search` tool. Without a Brave Search API key, │
│ web search won’t work. │
│ │
│ Set it up interactively: │
│ - Run: openclaw configure --section web │
│ - Enable web_search and paste your Brave Search API key │
│ │
│ Alternative: set BRAVE_API_KEY in the Gateway environment (no config changes). │
│ Docs: https://docs.openclaw.ai/tools/web │
│ │
├─────────────────────────────────────────────────────────────────────────────────────────╯
◇ What now ─────────────────────────────────────────────────────────────╮
│ │
│ What now: https://openclaw.ai/showcase ("What People Are Building"). │
│ │
├────────────────────────────────────────────────────────────────────────╯
└ Onboarding complete. Use the dashboard link above to control OpenClaw.
openclaw@ubuntu:~$
openclaw@ubuntu:~$ openclaw pairing approve feishu YR8JM7ZV
13:49:50 [plugins] feishu_doc: Registered feishu_doc, feishu_app_scopes
13:49:50 [plugins] feishu_wiki: Registered feishu_wiki tool
13:49:50 [plugins] feishu_drive: Registered feishu_drive tool
13:49:50 [plugins] feishu_bitable: Registered bitable tools
🦞 OpenClaw 2026.2.26 (bc50708) — I'm not saying your workflow is chaotic... I'm just bringing a linter and a helmet.
◇ Doctor changes ─────────────────────────────────────────────╮
│ │
│ Moved channels.feishu single-account top-level values into │
│ channels.feishu.accounts.default. │
│ │
├──────────────────────────────────────────────────────────────╯
◇ Doctor ──────────────────────────────────────────────╮
│ │
│ Run "openclaw doctor --fix" to apply these changes. │
│ │
├───────────────────────────────────────────────────────╯
Approved feishu sender ou_49868892e9b303a0170464a9898b1524.
openclaw@ubuntu:~$ openclaw doctor --fix
🦞 OpenClaw 2026.2.26 (bc50708) — I don't judge, but your missing API keys are absolutely judging you.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
🦞 OPENCLAW 🦞
┌ OpenClaw doctor
◇ Doctor changes ─────────────────────────────────────────────╮
│ │
│ Moved channels.feishu single-account top-level values into │
│ channels.feishu.accounts.default. │
│ │
├──────────────────────────────────────────────────────────────╯
◇ State integrity ─────────────────────────────────────────────────────────────────────────╮
│ │
│ - Config file is group/world readable (~/.openclaw/openclaw.json). Recommend chmod 600. │
│ │
├───────────────────────────────────────────────────────────────────────────────────────────╯
◇ Doctor changes ──────────────────────────────────────────────╮
│ │
│ - Tightened permissions on ~/.openclaw/openclaw.json to 600 │
│ │
├───────────────────────────────────────────────────────────────╯
◇ Gateway runtime ───────────────────────────────────────────────────────────────────────╮
│ │
│ System Node 22+ not found. Install via Homebrew/apt/choco and rerun doctor to migrate │
│ off Bun/version managers. │
│ │
├─────────────────────────────────────────────────────────────────────────────────────────╯
◇ Gateway service config ───────────────────────────────────────────────────────────────╮
│ │
│ - Gateway service uses Node from a version manager; it can break after upgrades. │
│ (/home/openclaw/.nvm/versions/node/v22.22.0/bin/node) │
│ - System Node 22+ not found; install it before migrating away from version managers. │
│ │
├────────────────────────────────────────────────────────────────────────────────────────╯
Installed systemd service: /home/openclaw/.config/systemd/user/openclaw-gateway.service
Previous unit backed up to: /home/openclaw/.config/systemd/user/openclaw-gateway.service.bak
◇ Security ─────────────────────────────────╮
│ │
│ - No channel security warnings detected. │
│ - Run: openclaw security audit --deep │
│ │
├────────────────────────────────────────────╯
◇ Skills status ────────────╮
│ │
│ Eligible: 19 │
│ Missing requirements: 36 │
│ Blocked by allowlist: 0 │
│ │
├────────────────────────────╯
◇ Plugins ──────╮
│ │
│ Loaded: 5 │
│ Disabled: 32 │
│ Errors: 0 │
│ │
├────────────────╯
◇ Gateway ──────────────╮
│ │
│ Gateway not running. │
│ │
├────────────────────────╯
◇ Gateway connection ─────────────────────────────╮
│ │
│ Gateway target: ws://127.0.0.1:18789 │
│ Source: local loopback │
│ Config: /home/openclaw/.openclaw/openclaw.json │
│ Bind: loopback │
│ │
├──────────────────────────────────────────────────╯
◇ Memory search ───────────────────────────────────────────────────────────────────────────╮
│ │
│ Memory search is enabled but no embedding provider is configured. │
│ Semantic recall will not work without an embedding provider. │
│ │
│ │
│ Fix (pick one): │
│ - Set OPENAI_API_KEY, GEMINI_API_KEY, VOYAGE_API_KEY, or MISTRAL_API_KEY in your │
│ environment │
│ - Configure credentials: openclaw configure --section model │
│ - For local embeddings: configure agents.defaults.memorySearch.provider and local model │
│ path │
│ - To disable: openclaw config set agents.defaults.memorySearch.enabled false │
│ │
│ Verify: openclaw memory status --deep │
│ │
├───────────────────────────────────────────────────────────────────────────────────────────╯
◇ Gateway ────────────────────────────────────────────────────────────────────────╮
│ │
│ Runtime: running (pid 47697, state active, sub running, last exit 0, reason 0) │
│ │
├──────────────────────────────────────────────────────────────────────────────────╯
Restarted systemd service: openclaw-gateway.service
◇ Gateway ──────────────╮
│ │
│ Gateway not running. │
│ │
├────────────────────────╯
◇ Gateway connection ─────────────────────────────╮
│ │
│ Gateway target: ws://127.0.0.1:18789 │
│ Source: local loopback │
│ Config: /home/openclaw/.openclaw/openclaw.json │
│ Bind: loopback │
│ │
├──────────────────────────────────────────────────╯
Config overwrite: /home/openclaw/.openclaw/openclaw.json (sha256 7782e02766596cafa7d4b1b65c06087485a40534d497dc589977fed4098316c6 -> e6b960d73aaa3b409b927d7fc4a9882062a49c671a1ce31f6878b25a8476e6d8, backup=/home/openclaw/.openclaw/openclaw.json.bak)
Updated ~/.openclaw/openclaw.json
Backup: ~/.openclaw/openclaw.json.bak
└ Doctor complete.
openclaw@ubuntu:~$ vi .openclaw/openclaw.json
openclaw@ubuntu:~$ systemctl --user restart openclaw-gateway
openclaw@ubuntu:~$ journalctl --user -u openclaw-gateway -n 100 -f
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment