Skip to content

feat(kiloclaw): add headless Chromium browser support#951

Merged
St0rmz1 merged 3 commits intomainfrom
feat/kiloclaw-browser-support
Mar 9, 2026
Merged

feat(kiloclaw): add headless Chromium browser support#951
St0rmz1 merged 3 commits intomainfrom
feat/kiloclaw-browser-support

Conversation

@St0rmz1
Copy link
Copy Markdown
Contributor

@St0rmz1 St0rmz1 commented Mar 9, 2026

Summary

  • Install chromium in the Docker image so OpenClaw's built-in browser tool works out of the
    box
  • Configure browser.headless, browser.noSandbox, and browser.enabled in the openclaw.json
    config patch for containerized operation
  • Sync the same browser config to config-writer.ts so config restores don't lose browser
    support

Verification

  • Deploy a fresh kiloclaw instance (destroy + recreate to trigger fresh install path)
  • Verify which chromium returns /usr/bin/chromium on the Fly machine
  • Verify cat /root/.openclaw/openclaw.json | grep -A4 browser shows enabled: true, headless:
    true, noSandbox: true
  • Verify Chromium processes are running (ps -ef | grep chromium)
  • Ask the agent to use the browser tool (e.g. "use the browser tool to open
    https://example.com and take a screenshot") — confirms end-to-end CDP functionality
  • All 505 kiloclaw tests pass

Visual Changes

None — this is backend/infrastructure only.

Before After

Reviewer Notes

  • OpenClaw auto-detects /usr/bin/chromium on Linux and auto-adds --disable-dev-shm-usage, so
    no executablePath config is needed
  • noSandbox: true is required in containers — Chromium's setuid sandbox needs kernel
    namespacing that's unavailable in Docker/Fly
  • The chromium apt package installs to /usr/bin/ which is outside the Fly Volume mount at
    /root, so it survives volume mounts and restarts
  • Image size increases ~200-250 MB due to Chromium and its dependencies
  • Existing instances need tools.profile: "full" to see the browser tool — the "messaging"
    profile (onboard default) doesn't include it. Fresh installs already get "full" via the
    startup script

Install chromium package in the Docker image and configure OpenClaw with headless + noSandbox settings for the containerized environment.

OpenClaw auto-detects /usr/bin/chromium on Linux.
Comment thread kiloclaw/start-openclaw.sh
@kilo-code-bot
Copy link
Copy Markdown
Contributor

kilo-code-bot Bot commented Mar 9, 2026

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (5 files)
  • kiloclaw/Dockerfile
  • kiloclaw/controller/src/config-writer.test.ts
  • kiloclaw/controller/src/config-writer.ts
  • kiloclaw/start-openclaw.sh
  • src/app/(app)/claw/components/changelog-data.ts

  Add browser.enabled, browser.headless, and browser.noSandbox to
  generateBaseConfig() so config restores don't lose browser support.
  Adds test coverage for the browser config assertions.
@St0rmz1 St0rmz1 requested a review from pandemicsyn March 9, 2026 20:41
Copy link
Copy Markdown
Contributor

@pandemicsyn pandemicsyn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm, mind including a change log entry.

@St0rmz1 St0rmz1 merged commit f1a4612 into main Mar 9, 2026
18 checks passed
@St0rmz1 St0rmz1 deleted the feat/kiloclaw-browser-support branch March 9, 2026 23:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants