Skip to content

Commit 7d4bc98

Browse files
GoGoComputerclaude
andcommitted
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>
1 parent e609a47 commit 7d4bc98

8 files changed

Lines changed: 161 additions & 54 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## 📖 목차 / Contents
44

5+
- [v0.2.6 — 2026-05-14](#v026--2026-05-14)
56
- [v0.2.5 — 2026-05-14](#v025--2026-05-14)
67
- [v0.2.4 — 2026-04-25](#v024--2026-04-25)
78
- [v0.2.3 — 2026-04-25](#v023--2026-04-25)
@@ -14,6 +15,19 @@
1415

1516
---
1617

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`.
28+
29+
---
30+
1731
## v0.2.5 — 2026-05-14
1832

1933
### New features

‎README.en.md‎

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -130,17 +130,27 @@ The most visual / approachable path. Safari or Chrome — either works. Do **not
130130
131131
> 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`.
132132
133-
### ② Container CLI
133+
### ② Container CLI (full OpenClaw stack)
134134

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.
136136

137137
```bash
138138
cd ~/DEV/openclaw
139-
docker compose exec openclaw-cli bash
140-
# then, inside the container:
141-
claude
139+
140+
# First time: interactive setup (model / gateway / workspace — once)
141+
docker compose run --rm openclaw-cli onboard
142+
143+
# 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"
142148
```
143149

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+
144154
### ③ Terminal REPL chat
145155

146156
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
479489

480490
### What still **works** under `isolated`
481491
- `./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)
483493
- Workspace file read/write
484494
- Models and code already inside the container
485495

@@ -561,6 +571,29 @@ Easiest: `openclaw models add <name>` (auto-edits `.env` + pulls). To see what y
561571
Just rerun `./openclaw install`. Already-completed steps are marked `[skip]` and only the rest runs. State file: `~/.openclaw-mgr/state`.
562572
</details>
563573

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+
564597
<details>
565598
<summary><b>Web UI (<code>http://127.0.0.1:18789</code>) shows "Safari Can't Connect" even though containers are healthy</b></summary>
566599

@@ -581,7 +614,7 @@ open http://127.0.0.1:18789
581614
./openclaw network isolated --restart
582615
```
583616

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.
585618
</details>
586619

587620
<details>

‎README.md‎

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
|---|---|---|---|
6464
| 1 | **설치** (Install) | `git clone … && ./openclaw install` | [표준 설치](#표준--스크립트-설치-권장) · [완전 수동](docs/GUIDE-MANUAL-INSTALL.md) · [처음부터](docs/GUIDE-FROM-ZERO.md) |
6565
| 2 | **진단** (Doctor) | `./openclaw doctor` | [진단 항목별 가이드](#-진단--doctor-항목별-가이드) · [TROUBLESHOOTING](docs/TROUBLESHOOTING.md) |
66-
| 3 | **사용** (Use) | `./openclaw start` · `./openclaw chat` · `docker compose exec openclaw-cli bash` · `surf "…"` · `creative run "…"` · `shorts run "…"` | **▶ [설치 후 첫 사용 가이드](docs/GUIDE-FIRST-USE.md)** · [GUIDE-OPENCLAW](docs/GUIDE-OPENCLAW.md) · [자동화 3종](#-자동화-3종--한눈-카탈로그) · [GUIDE-WEB-FETCH](docs/GUIDE-WEB-FETCH.md) · [GUIDE-CREATIVE-PIPELINE](docs/GUIDE-CREATIVE-PIPELINE.md) · [GUIDE-SHORTS-PIPELINE](docs/GUIDE-SHORTS-PIPELINE.md) |
66+
| 3 | **사용** (Use) | `./openclaw start` · `./openclaw chat` · `docker compose run --rm openclaw-cli tui` · `surf "…"` · `creative run "…"` · `shorts run "…"` | **▶ [설치 후 첫 사용 가이드](docs/GUIDE-FIRST-USE.md)** · [GUIDE-OPENCLAW](docs/GUIDE-OPENCLAW.md) · [자동화 3종](#-자동화-3종--한눈-카탈로그) · [GUIDE-WEB-FETCH](docs/GUIDE-WEB-FETCH.md) · [GUIDE-CREATIVE-PIPELINE](docs/GUIDE-CREATIVE-PIPELINE.md) · [GUIDE-SHORTS-PIPELINE](docs/GUIDE-SHORTS-PIPELINE.md) |
6767
| 4 | **유지보수** (Maintain) | `./openclaw logs` · `./openclaw clean` · `./openclaw backup` · `./openclaw restore` | [명령 카탈로그](#-명령-카탈로그) · [정리](#-메모리디스크-정리-비개발자용) |
6868
| 5 | **설정 변경** (Configure) | `.env` 편집 · `./openclaw models …` · `./openclaw network …` | [.env 설정](#️-설정-env) · [모델 관리](#-모델-관리--내-로컬-ollama-모델-그대로-쓰기) · [네트워크 격리](#-네트워크-격리-모드-명시적-외부-차단-토글) |
6969
| 6 | **업데이트** (Update) | `./openclaw update` · `./openclaw self-update` · `./openclaw schedule enable` | [업데이트 흐름](#-업데이트-흐름) |
@@ -224,17 +224,27 @@ open http://127.0.0.1:18789
224224
225225
> **"Safari can't connect" 이 여전히** 뜨면 `./openclaw doctor` 로 게이트웨이 상태 확인. `docker ps` 로 포트가 `127.0.0.1:18789->18789/tcp` 형태로 publish 됐는지 확인 (단순히 `18789/tcp` 만 보이면 isolated 상태).
226226
227-
### ② 컨테이너 CLI
227+
### ② 컨테이너 CLI (본체 OpenClaw 사용)
228228

229-
가장 안정적. 컨테이너 안 격리 환경에서 직접 `claude` 실행.
229+
컨테이너 안 격리 환경에서 OpenClaw 본체 CLI 사용. 채널 연동(WhatsApp·Telegram)·플러그인·세션 관리 등 풀 기능.
230230

231231
```bash
232232
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 "안녕"
236242
```
237243

244+
> ⚠️ **`exec` 가 아니라 `run --rm`** — `openclaw-cli` 컨테이너의 entrypoint 가 `node dist/index.js` 라서 인자 없이 뜨면 help 출력 후 즉시 종료합니다 (`docker ps -a` 에서 `Exited (1)` 상태). 그래서 `docker compose exec` 는 거의 항상 실패. 매번 새 컨테이너로 띄우는 `docker compose run --rm` 이 올바른 사용 패턴입니다.
245+
>
246+
> 컨테이너 셸이 필요하면: `docker compose run --rm --entrypoint bash openclaw-cli`
247+
238248
### ③ 터미널 REPL 채팅
239249

240250
호스트 Ollama 와 직접 대화 — 컨테이너·웹 UI 없이도 워크스페이스의 인격 파일(`IDENTITY.md` · `SOUL.md` · `USER.md` 등)을 자동 system prompt 로 로드.
@@ -670,7 +680,7 @@ Docker 와 Ollama 는 시간이 갈수록 디스크와 메모리를 많이 차
670680

671681
### 🔒 isolated 에서도 **되는** 것
672682
- `./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)
674684
- 워크스페이스 파일 읽기·쓰기
675685
- 컨테이너에 이미 설치된 모델·코드 사용
676686

@@ -753,6 +763,29 @@ brew services restart ollama
753763
`./openclaw install` 을 다시 실행하세요. 이미 끝난 단계는 `[skip]` 로 표시되고 남은 단계만 진행합니다. (상태 파일: `~/.openclaw-mgr/state`)
754764
</details>
755765

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+
756789
<details>
757790
<summary><b>웹UI(<code>http://127.0.0.1:18789</code>) 가 "Safari Can't Connect" 로 뜨는데 컨테이너는 떠 있어요</b></summary>
758791

@@ -773,7 +806,7 @@ open http://127.0.0.1:18789
773806
./openclaw network isolated --restart
774807
```
775808

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 와 무관하게 동작합니다.
777810
</details>
778811

779812
<details>

‎docs/GUIDE-FIRST-USE.md‎

Lines changed: 49 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -96,32 +96,39 @@ http://127.0.0.1:18789
9696

9797
> 💡 OpenClaw 본체 버전에 따라 UI 가 내장되어 있을 수도, API 만 있을 수도 있습니다. UI 가 없으면 방식 B 를 쓰세요.
9898
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`** 이 올바른 패턴.
100102
101103
```bash
102104
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 "안녕. 너는 어떤 모델이야?"
104114
```
105115

106-
컨테이너 셸 안에서 (`node@xxxxxx:/workspace$` 같은 프롬프트):
116+
**컨테이너 안 셸이 필요하면** (드물게):
107117
```bash
108-
claude # OpenClaw / Claude CLI 시작
118+
docker compose run --rm --entrypoint bash openclaw-cli
119+
# 셸 안에서: openclaw <subcommand> (예: openclaw tui)
109120
```
110121

111-
대화 화면이 뜨면 **첫 프롬프트 예시**:
122+
**첫 프롬프트 예시** (`tui` 안에서):
112123
```
113-
> 안녕. 너는 어떤 모델이야?
114-
> /workspace 안에 hello.py 라는 파일을 만들고 "Hello from OpenClaw" 를 출력하게 해줘
115-
> 방금 만든 파일을 실행해서 결과를 보여줘
124+
안녕. 너는 어떤 모델이야?
125+
~/.openclaw/workspace 안에 hello.py 라는 파일을 만들고 "Hello from OpenClaw" 를 출력하게 해줘
126+
방금 만든 파일을 실행해서 결과를 보여줘
116127
```
117128

118-
빠져나오기:
119-
```
120-
Ctrl+D 또는 exit # CLI 종료
121-
exit # 컨테이너 셸 종료 (컨테이너 자체는 계속 실행)
122-
```
129+
빠져나오기: `Ctrl+D` 또는 `/exit` (TUI 안에서). `run --rm` 이라 종료 시 컨테이너 자동 삭제 — 다음에 또 `docker compose run --rm openclaw-cli tui` 로 띄우면 됩니다.
123130

124-
> 🔒 컨테이너 안에서 일어나는 모든 일은 격리 — 호스트 (`~/Documents`, `~/.ssh` 등) 에는 접근 불가. 파일을 호스트와 공유하려면 `/workspace` 에 만드세요 (자동으로 `~/DEV/openclawAgent` 에 동기화).
131+
> 🔒 컨테이너 안에서 일어나는 모든 일은 격리 — 호스트 (`~/Documents`, `~/.ssh` 등) 에는 접근 불가. 파일을 호스트와 공유하려면 `~/.openclaw/workspace` (컨테이너 안) 에 만드세요 (호스트의 `~/DEV/openclawAgent` 와 자동 동기화).
125132
126133
### 방식 C — `./openclaw` 대화형 메뉴
127134

@@ -172,15 +179,15 @@ nano ~/DEV/openclawAgent/openclaw-workspace/openclaw-mgr/.env
172179
## 📂 4단계 — 작업 파일은 어디?
173180

174181
```
175-
컨테이너 안 ←→ 호스트 (Finder 에서 보임)
176-
/workspace ←→ ~/DEV/openclawAgent
177-
/home/node/.openclaw ←→ ~/.openclaw (설정·세션·토큰 — 직접 편집 X)
182+
컨테이너 안 ←→ 호스트 (Finder 에서 보임)
183+
/home/node/.openclaw/workspace ←→ ~/DEV/openclawAgent
184+
/home/node/.openclaw ←→ ~/.openclaw (설정·세션·토큰 — 직접 편집 X)
178185
```
179186

180187
### 확인하기
181188
```bash
182-
# 컨테이너에서 파일 만들기
183-
docker compose exec openclaw-cli bash -c 'echo "test" > /workspace/hello.txt'
189+
# 컨테이너에서 파일 만들기 (cli 컨테이너가 죽어 있으므로 exec 가 아니라 run --rm)
190+
docker compose run --rm --entrypoint sh openclaw-cli -c 'echo "test" > /home/node/.openclaw/workspace/hello.txt'
184191

185192
# 호스트에서 즉시 보임
186193
ls ~/DEV/openclawAgent/hello.txt
@@ -191,7 +198,7 @@ cat ~/DEV/openclawAgent/hello.txt
191198
open ~/DEV/openclawAgent
192199
```
193200

194-
> 🔒 **컨테이너는 `/workspace` 밖으로 못 나갑니다** — 에이전트가 `~/Desktop` 이나 `~/Documents` 를 건드릴 수 없도록 마운트 자체가 안 되어 있습니다. 추가 폴더를 공유하고 싶으면 `~/DEV/openclawAgent` 안에 심볼릭 링크나 하위 폴더를 만드세요.
201+
> 🔒 **컨테이너는 `~/.openclaw/workspace` 밖으로 못 나갑니다** — 에이전트가 `~/Desktop` 이나 `~/Documents` 를 건드릴 수 없도록 마운트 자체가 안 되어 있습니다. 추가 폴더를 공유하고 싶으면 `~/DEV/openclawAgent` 안에 심볼릭 링크나 하위 폴더를 만드세요.
195202
196203
---
197204

@@ -305,23 +312,37 @@ docker ps --format 'table {{.Names}}\t{{.Status}}' | grep openclaw
305312

306313
**Option A — Browser UI**
307314
```bash
315+
# Right after install the network is in 'isolated' — port publishing is off.
316+
./openclaw network online --restart
308317
open http://127.0.0.1:18789
309318
```
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.
311320

312-
**Option B — In-container CLI (most reliable)**
321+
**Option B — In-container CLI (full OpenClaw stack)**
313322
```bash
314323
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
318330
# > 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"
320332
# > 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)**
339+
```bash
340+
cd ~/DEV/openclawAgent/openclaw-workspace/openclaw-mgr
341+
./openclaw chat
322342
```
343+
Talks directly to host Ollama, auto-loads workspace personality files (`IDENTITY.md` / `SOUL.md` / `USER.md`). No setup, no container, no API key.
323344

324-
**Option C — `./openclaw` interactive menu**
345+
**Option D — `./openclaw` interactive menu**
325346
```bash
326347
cd ~/DEV/openclawAgent/openclaw-workspace/openclaw-mgr
327348
./openclaw

‎docs/GUIDE-MANUAL-INSTALL.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2114,7 +2114,7 @@ lsof -nP -iTCP:11434 -sTCP:LISTEN # Ollama
21142114
| 잠깐 멈춤 (보존) | — | `docker compose stop` |
21152115
| 재개 (보존된 것) | — | `docker compose start` |
21162116
| 로그 보기 | `./openclaw logs` | `docker compose logs -f` |
2117-
| 컨테이너 안 들어가기 | — | `docker compose exec openclaw-cli bash` |
2117+
| 컨테이너 CLI 실행 | — | `docker compose run --rm openclaw-cli tui` (또는 `onboard`/`agent`). `exec`는 cli 가 즉시 종료형이라 실패 |
21182118
| Docker 데몬 끄기 | (없음) | `osascript -e 'quit app "Docker"'` |
21192119
| Docker 데몬 켜기 | (없음 — install 이 자동) | `open -a Docker` |
21202120
| 부팅 시 자동 | Settings → "Start Docker Desktop when you sign in" 체크 | 동일 |

0 commit comments

Comments
 (0)