Skip to content

appautomaton/openclaw-monorepo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

openclaw-platform

Monorepo-style OpenClaw workspace for local usage + development (git submodule in openclaw/) with modular JSON5 config and optional Docker sandboxes.

  • English (this file) Β· δΈ­ζ–‡: README.zh-CN.md
  • Run everything via pnpm openclaw ... (wrapper: scripts/openclaw.mjs)
  • Commit-safe config lives in config/openclaw/ (split into modular JSON5 files)
  • Repo-local state lives in bots/ (gitignored; migration notes in bots/README.md)
  • Instead of the default ~/.openclaw/, this repo pins state/config/workspaces under bots/ (e.g. bots/workspaces/<agent>/) so everything stays in one place

Note

You are reading the monorepo branch. If you need the Termux + proot setup and tooling, switch to the proot-debian branch.

Important

config/.env and bots/ contain secrets/state. Keep them out of git.

This repo intentionally tracks only bots/README.md and bots/openclaw.json under bots/.

What this repo gives you

  • A predictable, repo-local OpenClaw setup: config + workspaces + state live together under this repo folder (instead of ~/.openclaw/).
  • Modular JSON5 config you can edit/review in git (secrets stay in config/.env, never in JSON5).
  • Repo-local plugins (custom tools/skills) under plugins/ that live outside the openclaw/ submodule.
  • Optional Docker sandbox images for agents that need extra system dependencies (LibreOffice, OCR, etc.).

Contents

Prerequisites

  • Node.js 24.x (recommended; OpenClaw requires >=22.12.0)
  • corepack enable (for pnpm)
  • Docker (optional; only needed for sandboxed agents)

Quick start

git clone --recurse-submodules https://github.com/appautomaton/openclaw-monorepo.git
cd openclaw-monorepo

git submodule update --init --recursive

corepack enable
pnpm openclaw:install
pnpm openclaw:build
pnpm openclaw:ui:build

cp config/.env.template config/.env
# Edit config/.env (never commit it)
# Optional: set EXA_API_KEY if you want the exa-search plugin/tool.

pnpm openclaw models status   # verify config loads (fails fast if env vars missing)
pnpm openclaw gateway

If you are setting up Termux + proot-distro, switch to the proot-debian branch and follow docs/proot-setup.md there.

How config is wired

{ $include: "../config/openclaw/openclaw.json5" }
  • Modular config lives under config/openclaw/ (JSON5 + $include).
  • Config can reference env vars via ${ENV_VAR} (missing/empty vars fail fast).
  • OPENCLAW_STATE_DIR=bots is supported: scripts/openclaw.mjs treats relative paths as repo-root-relative.
flowchart TD
  A[pnpm openclaw COMMAND] --> B[scripts/openclaw.mjs]
  B --> C[load config/.env]
  B --> D[normalize OPENCLAW_STATE_DIR]
  D --> E[bots/openclaw.json]
  E --> F[config/openclaw/openclaw.json5]
Loading

Repo layout

All paths below are relative to the repo root.

Architecture notes: ARCHITECTURE.md

Project tree (sketch)

.
β”œβ”€ README.md
β”œβ”€ package.json                  # repo wrapper scripts (pnpm openclaw:*)
β”œβ”€ .gitmodules                   # pins the OpenClaw submodule
β”œβ”€ openclaw/                     # OpenClaw submodule (upstream fork)
β”œβ”€ scripts/
β”‚  β”œβ”€ openclaw.mjs               # loads config/.env, normalizes OPENCLAW_STATE_DIR, runs OpenClaw CLI
β”‚  └─ browser-service.sh         # optional helper for the browser sidecar
β”œβ”€ plugins/                      # repo-local OpenClaw plugins (custom tools/skills)
β”‚  β”œβ”€ README.md
β”‚  └─ exa-search/                 # example: Exa Search plugin (tool + skill pack)
β”œβ”€ config/
β”‚  β”œβ”€ .env.template              # copy to config/.env (gitignored) and fill tokens/keys
β”‚  β”œβ”€ README.md                  # config wiring notes
β”‚  └─ openclaw/                  # modular JSON5 config (commit-safe; no secrets)
β”‚     β”œβ”€ openclaw.json5          # root JSON5 (uses $include)
β”‚     └─ agents/                 # agent definitions (defaults + per-agent files)
β”œβ”€ bots/                         # repo-local state dir (gitignored; sensitive)
β”‚  β”œβ”€ README.md                  # migration/bootstrap notes (tracked)
β”‚  └─ openclaw.json              # state config entrypoint (tracked; $include -> config/openclaw/openclaw.json5)
β”œβ”€ dockerfiles/                  # sandbox image build contexts used by sandboxed agents
└─ docs/                         # extra docs for this repo

Docs

  • bots/README.md β€” migrating from an existing ~/.openclaw/ install into repo-local state
  • config/README.md β€” how config/env/state are wired
  • docs/COMMANDS.md β€” command reference for this repo wrapper
  • docs/proot-setup.md β€” Termux + proot-distro setup notes (see proot-debian branch)
  • pnpm docs:check β€” validates onboarding docs against executable repo truth

Common commands

pnpm openclaw models status
pnpm openclaw agents list --bindings
pnpm openclaw channels status --probe
pnpm openclaw hooks list
pnpm openclaw nodes status
pnpm docs:check

Sandboxed agents (Docker)

Only needed if an agent config uses sandbox.docker.image (i.e., you actually enabled Docker sandboxing for that agent). Example: config/openclaw/agents/list/writer.json5 sets "image": "localhost/openclaw-sandbox-writer:bookworm".

docker build -f dockerfiles/writer/Dockerfile -t localhost/openclaw-sandbox-writer:bookworm dockerfiles/writer

See dockerfiles/ and config/openclaw/agents/list/.

About

openclaw / moltbot / clawdbot 🦞 on Android Termux, a more consistent way

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors