You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 7d4bc98
Browse filesBrowse the repository at this point in the historyBrowse files
docs+install: web UI is admin-only · use 'run --rm' not 'exec' · 'openclaw' not 'claude'
Three doc inaccuracies were sending first-time users into dead ends:
1) The web UI at 127.0.0.1:18789 is described as a chat surface, but
this build ships only the OpenClaw Control admin panel. The page
loads as a black/empty SPA with no chat input. GUIDE-FIRST-USE.md
already hedges ("UI may be embedded or API-only"), but the README
and the install completion banner did not surface this.
2) 'docker compose exec openclaw-cli bash' is the documented entry
to the in-container CLI, but the cli container's entrypoint is
'node dist/index.js', which prints help and exits immediately
when invoked with no args. The container ends up as Exited (1),
making 'exec' fail by design. The correct pattern is
'docker compose run --rm openclaw-cli <subcommand>', which spins
up a fresh container per invocation.
3) The doc told users to run 'claude' inside that shell, but no
'claude' binary exists in the container — the CLI is 'openclaw'
(/usr/local/bin/openclaw -> /app/openclaw.mjs). The right
commands are 'openclaw onboard' (first-time setup), 'openclaw
tui' (interactive UI), 'openclaw agent --message ...' (one-shot).
Changes:
- README (KO + EN) command catalog / pipeline table / 'first use'
section / 'still works under isolated' bullets / FAQ: replace
exec+claude with 'docker compose run --rm openclaw-cli onboard|
tui|agent', explain why exec fails, and how to get a raw shell
if needed ('--entrypoint bash')
- README (KO + EN) FAQ: new entry 'web UI page loads but body is
black/empty' explaining the Control Panel vs chat distinction and
pointing to the three working chat paths
- docs/GUIDE-FIRST-USE.md: rewrite '방식 B / Option B' with the
proper run --rm flow + warning callout; add Option C 'openclaw
chat' (the new terminal REPL); fix in-container workspace path
/workspace -> /home/node/.openclaw/workspace; mirror in EN
- docs/GUIDE-OPENCLAW.md, docs/GUIDE-MANUAL-INSTALL.md: same
exec -> run --rm fix in passing references
- install.sh post-install banner: option ② now shows onboard+tui
via run --rm with an explicit "not exec" note; ③ chat clarified
as setup-free; matches the corrected docs
- CHANGELOG: v0.2.6 with the three corrections
- VERSION bump 0.2.5 -> 0.2.6
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+14Lines changed: 14 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,7 @@
2
2
3
3
## 📖 목차 / Contents
4
4
5
+
-[v0.2.6 — 2026-05-14](#v026--2026-05-14)
5
6
-[v0.2.5 — 2026-05-14](#v025--2026-05-14)
6
7
-[v0.2.4 — 2026-04-25](#v024--2026-04-25)
7
8
-[v0.2.3 — 2026-04-25](#v023--2026-04-25)
@@ -14,6 +15,19 @@
14
15
15
16
---
16
17
18
+
## v0.2.6 — 2026-05-14
19
+
20
+
### Documentation correctness
21
+
-**`docker compose exec openclaw-cli bash` → `docker compose run --rm openclaw-cli <subcommand>`** everywhere. The cli container's entrypoint is `node dist/index.js`, which prints help and exits when invoked with no args — so the container is in `Exited (1)` state and `exec` always fails. The correct pattern is `run --rm` per invocation. (README KO + EN, GUIDE-FIRST-USE.md, install.sh post-install banner.)
22
+
-**`claude` → `openclaw tui` / `openclaw onboard` / `openclaw agent`**. The actual CLI binary inside the container is `openclaw` (`/usr/local/bin/openclaw` → `/app/openclaw.mjs`); `claude` does not exist on PATH. The previous instructions sent users into a dead end.
23
+
-**In-container workspace path**: `/workspace` → `/home/node/.openclaw/workspace` (matches `OPENCLAW_WORKSPACE_DIR` env in `docker-compose.yml` and the actual mount).
24
+
25
+
### Web UI honesty
26
+
-**Isolated mode blocks web UI** — Docker's `internal: true` network also disables host → container port publishing (no docker-proxy spawned). Empirically confirmed via `docker inspect` showing requested but unrealized port bindings. The network-mode table now reports `isolated.WebUI` as ✗ with a callout; both README and `install.sh` post-install banner now lead with `./openclaw network online --restart` for browser access.
27
+
-**Empty/black Control Panel page is normal** — this OpenClaw build's web UI is the admin Control Panel, not a chat interface. Added FAQ entries (KO + EN) directing users to `./openclaw chat`, `docker compose run --rm openclaw-cli tui`, or one-shot `agent`.
Copy file name to clipboardExpand all lines: README.en.md
+40-7Lines changed: 40 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -130,17 +130,27 @@ The most visual / approachable path. Safari or Chrome — either works. Do **not
130
130
131
131
> Still "Safari can't connect"? Run `./openclaw doctor` and check `docker ps`. Ports should show `127.0.0.1:18789->18789/tcp`. If you see just `18789/tcp` (no `host:port->` prefix), you're still in `isolated`.
132
132
133
-
### ② Container CLI
133
+
### ② Container CLI (full OpenClaw stack)
134
134
135
-
The most stable path. Drop into the isolated container shell and run `claude` directly.
135
+
Use the OpenClaw CLI inside an isolated container. Full feature set — channel integrations (WhatsApp / Telegram), plugins, session management.
# Then: terminal UI chat (attaches to the gateway)
144
+
docker compose run --rm openclaw-cli tui
145
+
146
+
# Or one-shot:
147
+
docker compose run --rm openclaw-cli agent --message "hello"
142
148
```
143
149
150
+
> ⚠️ **`run --rm`, not `exec`** — the `openclaw-cli` container's entrypoint is `node dist/index.js`, which prints help and exits immediately when invoked with no args (`docker ps -a` shows it as `Exited (1)`). That's why `docker compose exec openclaw-cli bash` almost always fails. The right pattern is `docker compose run --rm openclaw-cli <subcommand>`, which spins up a fresh container per invocation.
151
+
>
152
+
> Need a raw shell inside the container? `docker compose run --rm --entrypoint bash openclaw-cli`.
153
+
144
154
### ③ Terminal REPL chat
145
155
146
156
Talk to the agent through host Ollama directly — no container, no web UI. The workspace personality files (`IDENTITY.md` · `SOUL.md` · `USER.md`, …) get auto-loaded into the system prompt.
@@ -479,7 +489,7 @@ Docker and Ollama accumulate caches and unused images over time. One command to
479
489
480
490
### What still **works** under `isolated`
481
491
-`./openclaw chat` — talks to host Ollama directly (bypasses the container)
482
-
-`docker compose exec openclaw-cli bash` → `claude` — CLI inside the container (independent of port publishing)
492
+
-`docker compose run --rm openclaw-cli tui` — CLI inside the container (independent of port publishing)
483
493
- Workspace file read/write
484
494
- Models and code already inside the container
485
495
@@ -561,6 +571,29 @@ Easiest: `openclaw models add <name>` (auto-edits `.env` + pulls). To see what y
561
571
Just rerun `./openclaw install`. Already-completed steps are marked `[skip]` and only the rest runs. State file: `~/.openclaw-mgr/state`.
562
572
</details>
563
573
574
+
<details>
575
+
<summary><b>Web UI page loads but the body is a black/empty screen — no chat panel</b></summary>
576
+
577
+
If `http://127.0.0.1:18789` loads and the browser tab says `OpenClaw Control` but the page body is just a black empty screen — **this is not a bug**. This build's web UI is the **admin Control Panel**; it may not bundle a chat interface at all. GUIDE-FIRST-USE.md notes: "Depending on the OpenClaw build, the UI may be embedded or it may be API-only".
578
+
579
+
**Three ways to actually chat:**
580
+
581
+
```bash
582
+
# ① Fastest — talks to host Ollama directly, no setup required
583
+
./openclaw chat
584
+
585
+
# ② Full OpenClaw stack — TUI chat after one-time onboard
586
+
cd~/DEV/openclaw
587
+
docker compose run --rm openclaw-cli onboard # one-time
588
+
docker compose run --rm openclaw-cli tui # every time
589
+
590
+
# ③ One-shot
591
+
docker compose run --rm openclaw-cli agent --message "hi"
592
+
```
593
+
594
+
⚠️ **`docker compose exec openclaw-cli bash` does not work** — the container's entrypoint (`node dist/index.js`) prints help and exits immediately, so `exec`'s target is never alive (`docker ps -a` shows `Exited (1)`). Always use **`run --rm`**.
595
+
</details>
596
+
564
597
<details>
565
598
<summary><b>Web UI (<code>http://127.0.0.1:18789</code>) shows "Safari Can't Connect" even though containers are healthy</b></summary>
566
599
@@ -581,7 +614,7 @@ open http://127.0.0.1:18789
581
614
./openclaw network isolated --restart
582
615
```
583
616
584
-
Don't need the web UI? Then `isolated` is fine — `./openclaw chat` and `docker compose exec openclaw-cli bash → claude` both work regardless of port publishing.
617
+
Don't need the web UI? Then `isolated` is fine — `./openclaw chat` and `docker compose run --rm openclaw-cli tui` both work regardless of port publishing.
> **"Safari can't connect" 이 여전히** 뜨면 `./openclaw doctor` 로 게이트웨이 상태 확인. `docker ps` 로 포트가 `127.0.0.1:18789->18789/tcp` 형태로 publish 됐는지 확인 (단순히 `18789/tcp` 만 보이면 isolated 상태).
226
226
227
-
### ② 컨테이너 CLI
227
+
### ② 컨테이너 CLI (본체 OpenClaw 사용)
228
228
229
-
가장 안정적. 컨테이너 안 격리 환경에서 직접 `claude` 실행.
229
+
컨테이너 안 격리 환경에서 OpenClaw 본체 CLI 사용. 채널 연동(WhatsApp·Telegram)·플러그인·세션 관리 등 풀 기능.
230
230
231
231
```bash
232
232
cd~/DEV/openclaw
233
-
docker compose exec openclaw-cli bash
234
-
# 컨테이너 셸이 뜨면:
235
-
claude
233
+
234
+
# 첫 실행: 대화형 설정 (모델·게이트웨이·워크스페이스 한 번만)
235
+
docker compose run --rm openclaw-cli onboard
236
+
237
+
# 이후: 터미널 UI 로 채팅 (gateway 에 붙음)
238
+
docker compose run --rm openclaw-cli tui
239
+
240
+
# 또는 한 줄 명령
241
+
docker compose run --rm openclaw-cli agent --message "안녕"
236
242
```
237
243
244
+
> ⚠️ **`exec` 가 아니라 `run --rm`** — `openclaw-cli` 컨테이너의 entrypoint 가 `node dist/index.js` 라서 인자 없이 뜨면 help 출력 후 즉시 종료합니다 (`docker ps -a` 에서 `Exited (1)` 상태). 그래서 `docker compose exec` 는 거의 항상 실패. 매번 새 컨테이너로 띄우는 `docker compose run --rm` 이 올바른 사용 패턴입니다.
호스트 Ollama 와 직접 대화 — 컨테이너·웹 UI 없이도 워크스페이스의 인격 파일(`IDENTITY.md` · `SOUL.md` · `USER.md` 등)을 자동 system prompt 로 로드.
@@ -670,7 +680,7 @@ Docker 와 Ollama 는 시간이 갈수록 디스크와 메모리를 많이 차
670
680
671
681
### 🔒 isolated 에서도 **되는** 것
672
682
-`./openclaw chat` — 호스트 Ollama 직접 사용 (컨테이너 우회)
673
-
-`docker compose exec openclaw-cli bash` → `claude` — 컨테이너 안에서 직접 CLI (네트워크 무관하게 STDIN/STDOUT)
683
+
-`docker compose run --rm openclaw-cli tui` — 컨테이너 안에서 직접 CLI (네트워크 무관하게 STDIN/STDOUT)
674
684
- 워크스페이스 파일 읽기·쓰기
675
685
- 컨테이너에 이미 설치된 모델·코드 사용
676
686
@@ -753,6 +763,29 @@ brew services restart ollama
753
763
`./openclaw install` 을 다시 실행하세요. 이미 끝난 단계는 `[skip]` 로 표시되고 남은 단계만 진행합니다. (상태 파일: `~/.openclaw-mgr/state`)
754
764
</details>
755
765
766
+
<details>
767
+
<summary><b>웹UI 페이지는 떴는데 본문이 까만 빈 화면이에요 — 채팅창이 안 보여요</b></summary>
768
+
769
+
`http://127.0.0.1:18789` 가 열렸고 탭 제목이 `OpenClaw Control` 인데 본문이 검은 빈 화면이라면 — **버그 아니라 정상**입니다. 이 빌드의 웹 UI 는 **관리 콘솔(Control Panel)** 이고 채팅 인터페이스는 들어있지 않을 수 있어요. GUIDE-FIRST-USE.md 도 "OpenClaw 본체 버전에 따라 UI 가 내장되어 있을 수도, API 만 있을 수도 있음" 이라고 명시.
770
+
771
+
**채팅을 시작하는 세 가지 방법:**
772
+
773
+
```bash
774
+
# ① 가장 빠름 — 호스트 Ollama 직접, 설정 불필요
775
+
./openclaw chat
776
+
777
+
# ② 본체 OpenClaw 풀 기능 — 첫 설정 후 TUI 채팅
778
+
cd~/DEV/openclaw
779
+
docker compose run --rm openclaw-cli onboard # 한 번만
780
+
docker compose run --rm openclaw-cli tui # 매번
781
+
782
+
# ③ 한 줄 명령
783
+
docker compose run --rm openclaw-cli agent --message "안녕"
784
+
```
785
+
786
+
⚠️ **`docker compose exec openclaw-cli bash` 는 작동하지 않습니다** — 이 컨테이너의 entrypoint 가 즉시 종료형(`node dist/index.js` → help 출력 후 `Exited (1)`)이라 `exec` 대상이 살아있지 않아요. 항상 **`run --rm`** 을 쓰세요.
787
+
</details>
788
+
756
789
<details>
757
790
<summary><b>웹UI(<code>http://127.0.0.1:18789</code>) 가 "Safari Can't Connect" 로 뜨는데 컨테이너는 떠 있어요</b></summary>
758
791
@@ -773,7 +806,7 @@ open http://127.0.0.1:18789
773
806
./openclaw network isolated --restart
774
807
```
775
808
776
-
웹UI 가 필요 없고 터미널만 쓰면 `isolated` 그대로 가능 — `./openclaw chat` 또는 `docker compose exec openclaw-cli bash → claude` 는 네트워크 publish 와 무관하게 동작합니다.
809
+
웹UI 가 필요 없고 터미널만 쓰면 `isolated` 그대로 가능 — `./openclaw chat` 또는 `docker compose run --rm openclaw-cli tui` 는 네트워크 publish 와 무관하게 동작합니다.
Copy file name to clipboardExpand all lines: docs/GUIDE-FIRST-USE.md
+49-28Lines changed: 49 additions & 28 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -96,32 +96,39 @@ http://127.0.0.1:18789
96
96
97
97
> 💡 OpenClaw 본체 버전에 따라 UI 가 내장되어 있을 수도, API 만 있을 수도 있습니다. UI 가 없으면 방식 B 를 쓰세요.
98
98
99
-
### 방식 B — 컨테이너 안 CLI (가장 안정적)
99
+
### 방식 B — 컨테이너 안 CLI (본체 OpenClaw 풀 기능)
100
+
101
+
> ⚠️ `openclaw-cli` 컨테이너는 entrypoint 가 `node dist/index.js` 라서 인자 없이 뜨면 help 출력 후 **즉시 종료**합니다 (`docker ps -a` 에서 `Exited (1)`). 그래서 `docker compose exec openclaw-cli bash` 는 거의 항상 실패해요. 매번 새 일회용 컨테이너를 띄우는 **`docker compose run --rm`** 이 올바른 패턴.
100
102
101
103
```bash
102
104
cd~/DEV/openclaw
103
-
docker compose exec openclaw-cli bash
105
+
106
+
# 첫 실행: 대화형 설정 (모델 · gateway · workspace — 한 번만)
107
+
docker compose run --rm openclaw-cli onboard
108
+
109
+
# 이후: 터미널 UI 채팅 (gateway 에 연결)
110
+
docker compose run --rm openclaw-cli tui
111
+
112
+
# 한 줄 명령으로 직접 대화
113
+
docker compose run --rm openclaw-cli agent --message "안녕. 너는 어떤 모델이야?"
104
114
```
105
115
106
-
컨테이너 셸 안에서 (`node@xxxxxx:/workspace$` 같은 프롬프트):
116
+
**컨테이너 안 셸이 필요하면** (드물게):
107
117
```bash
108
-
claude # OpenClaw / Claude CLI 시작
118
+
docker compose run --rm --entrypoint bash openclaw-cli
119
+
# 셸 안에서: openclaw <subcommand> (예: openclaw tui)
109
120
```
110
121
111
-
대화 화면이 뜨면 **첫 프롬프트 예시**:
122
+
**첫 프롬프트 예시** (`tui` 안에서):
112
123
```
113
-
> 안녕. 너는 어떤 모델이야?
114
-
> /workspace 안에 hello.py 라는 파일을 만들고 "Hello from OpenClaw" 를 출력하게 해줘
115
-
> 방금 만든 파일을 실행해서 결과를 보여줘
124
+
안녕. 너는 어떤 모델이야?
125
+
~/.openclaw/workspace 안에 hello.py 라는 파일을 만들고 "Hello from OpenClaw" 를 출력하게 해줘
126
+
방금 만든 파일을 실행해서 결과를 보여줘
116
127
```
117
128
118
-
빠져나오기:
119
-
```
120
-
Ctrl+D 또는 exit # CLI 종료
121
-
exit # 컨테이너 셸 종료 (컨테이너 자체는 계속 실행)
122
-
```
129
+
빠져나오기: `Ctrl+D` 또는 `/exit` (TUI 안에서). `run --rm` 이라 종료 시 컨테이너 자동 삭제 — 다음에 또 `docker compose run --rm openclaw-cli tui` 로 띄우면 됩니다.
123
130
124
-
> 🔒 컨테이너 안에서 일어나는 모든 일은 격리 — 호스트 (`~/Documents`, `~/.ssh` 등) 에는 접근 불가. 파일을 호스트와 공유하려면 `/workspace` 에 만드세요 (자동으로`~/DEV/openclawAgent`에 동기화).
131
+
> 🔒 컨테이너 안에서 일어나는 모든 일은 격리 — 호스트 (`~/Documents`, `~/.ssh` 등) 에는 접근 불가. 파일을 호스트와 공유하려면 `~/.openclaw/workspace`(컨테이너 안) 에 만드세요 (호스트의`~/DEV/openclawAgent`와 자동 동기화).
> 🔒 **컨테이너는 `/workspace` 밖으로 못 나갑니다** — 에이전트가 `~/Desktop` 이나 `~/Documents` 를 건드릴 수 없도록 마운트 자체가 안 되어 있습니다. 추가 폴더를 공유하고 싶으면 `~/DEV/openclawAgent` 안에 심볼릭 링크나 하위 폴더를 만드세요.
201
+
> 🔒 **컨테이너는 `~/.openclaw/workspace` 밖으로 못 나갑니다** — 에이전트가 `~/Desktop` 이나 `~/Documents` 를 건드릴 수 없도록 마운트 자체가 안 되어 있습니다. 추가 폴더를 공유하고 싶으면 `~/DEV/openclawAgent` 안에 심볼릭 링크나 하위 폴더를 만드세요.
# Right after install the network is in 'isolated' — port publishing is off.
316
+
./openclaw network online --restart
308
317
open http://127.0.0.1:18789
309
318
```
310
-
If the page is empty / 404 → the OpenClaw build you have is headless; use Option B.
319
+
If the page is empty / black / "Safari Can't Connect" → this OpenClaw build's web UI is admin-only (Control Panel) and the chat lives in the CLI. Use Option B.
311
320
312
-
**Option B — In-container CLI (most reliable)**
321
+
**Option B — In-container CLI (full OpenClaw stack)**
313
322
```bash
314
323
cd~/DEV/openclaw
315
-
docker compose exec openclaw-cli bash
316
-
# inside the container:
317
-
claude
324
+
325
+
# First time: interactive setup (one-time)
326
+
docker compose run --rm openclaw-cli onboard
327
+
328
+
# Then: terminal UI chat
329
+
docker compose run --rm openclaw-cli tui
318
330
# > Hi. Which model are you?
319
-
# > Create /workspace/hello.py that prints "Hello from OpenClaw"
331
+
# > Create ~/.openclaw/workspace/hello.py that prints "Hello from OpenClaw"
320
332
# > Run it and show the output
321
-
# Ctrl+D to exit CLI, `exit` to leave the container shell
333
+
# Ctrl+D / /exit to leave; the container is removed on exit (run --rm)
334
+
```
335
+
336
+
> ⚠️ Use `run --rm`, not `exec`. The `openclaw-cli` container's entrypoint is `node dist/index.js`, which prints help and exits when invoked with no args (`docker ps -a` shows it as `Exited (1)`). `docker compose run --rm` spins up a fresh container per invocation, which is the correct pattern.
337
+
338
+
**Option C — Terminal REPL chat (skip OpenClaw entirely)**
0 commit comments