{"id":51217838,"url":"https://github.com/appautomaton/openclaw-monorepo","last_synced_at":"2026-06-28T05:03:35.155Z","repository":{"id":335320624,"uuid":"1145237178","full_name":"appautomaton/openclaw-monorepo","owner":"appautomaton","description":"Repo-local OpenClaw workspace with modular JSON5 config, plugins, and Docker sandboxes — runs coding-agent CLIs on desktop or Android Termux.","archived":false,"fork":false,"pushed_at":"2026-05-25T17:30:43.000Z","size":161,"stargazers_count":24,"open_issues_count":0,"forks_count":9,"subscribers_count":0,"default_branch":"monorepo","last_synced_at":"2026-05-25T18:25:48.660Z","etag":null,"topics":["agentic-workflows","ai-agents","ai-coding-assistant","cli-tool","monorepo","openclaw","pnpm","termux"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/appautomaton.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-01-29T15:34:55.000Z","updated_at":"2026-05-25T17:30:46.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/appautomaton/openclaw-monorepo","commit_stats":null,"previous_names":["appautomaton/moltbot-proot-kit","appautomaton/openclaw-monorepo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/appautomaton/openclaw-monorepo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appautomaton%2Fopenclaw-monorepo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appautomaton%2Fopenclaw-monorepo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appautomaton%2Fopenclaw-monorepo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appautomaton%2Fopenclaw-monorepo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/appautomaton","download_url":"https://codeload.github.com/appautomaton/openclaw-monorepo/tar.gz/refs/heads/monorepo","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appautomaton%2Fopenclaw-monorepo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34877472,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic-workflows","ai-agents","ai-coding-assistant","cli-tool","monorepo","openclaw","pnpm","termux"],"created_at":"2026-06-28T05:03:34.177Z","updated_at":"2026-06-28T05:03:35.151Z","avatar_url":"https://github.com/appautomaton.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# openclaw-platform\n\nMonorepo-style **OpenClaw** workspace for local usage + development (git submodule in `openclaw/`) with modular JSON5 config and optional Docker sandboxes.\n\n- **English** (this file) · **中文**: [`README.zh-CN.md`](README.zh-CN.md)\n- Run everything via `pnpm openclaw ...` (wrapper: [`scripts/openclaw.mjs`](scripts/openclaw.mjs))\n- Commit-safe config lives in [`config/openclaw/`](config/openclaw/) (split into modular JSON5 files)\n- Repo-local state lives in `bots/` (gitignored; migration notes in [`bots/README.md`](bots/README.md))\n- Instead of the default `~/.openclaw/`, this repo pins state/config/workspaces under `bots/` (e.g. `bots/workspaces/\u003cagent\u003e/`) so everything stays in one place\n\n\u003e [!NOTE]\n\u003e You are reading the `monorepo` branch.\n\u003e If you need the Termux + proot setup and tooling, switch to the `proot-debian` branch.\n\n\u003e [!IMPORTANT]\n\u003e `config/.env` and `bots/` contain secrets/state. Keep them out of git.\n\u003e\n\u003e This repo intentionally tracks only `bots/README.md` and `bots/openclaw.json` under `bots/`.\n\n## What this repo gives you\n\n- A predictable, repo-local OpenClaw setup: config + workspaces + state live together under this repo folder (instead of `~/.openclaw/`).\n- Modular JSON5 config you can edit/review in git (secrets stay in `config/.env`, never in JSON5).\n- Repo-local plugins (custom tools/skills) under `plugins/` that live outside the `openclaw/` submodule.\n- Optional Docker sandbox images for agents that need extra system dependencies (LibreOffice, OCR, etc.).\n\n## Contents\n\n- [Prerequisites](#prerequisites)\n- [Quick start](#quick-start)\n- [How config is wired](#how-config-is-wired)\n- [Repo layout](#repo-layout)\n- [Project tree (sketch)](#project-tree-sketch)\n- [Docs](#docs)\n- [Common commands](#common-commands)\n- [Sandboxed agents (Docker)](#sandboxed-agents-docker)\n\n## Prerequisites\n\n- Node.js **24.x** (recommended; OpenClaw requires `\u003e=22.12.0`)\n- `corepack enable` (for `pnpm`)\n- Docker (optional; only needed for sandboxed agents)\n\n## Quick start\n\n```bash\ngit clone --recurse-submodules https://github.com/appautomaton/openclaw-monorepo.git\ncd openclaw-monorepo\n\ngit submodule update --init --recursive\n\ncorepack enable\npnpm openclaw:install\npnpm openclaw:build\npnpm openclaw:ui:build\n\ncp config/.env.template config/.env\n# Edit config/.env (never commit it)\n# Optional: set EXA_API_KEY if you want the exa-search plugin/tool.\n\npnpm openclaw models status   # verify config loads (fails fast if env vars missing)\npnpm openclaw gateway\n```\n\nIf you are setting up **Termux + proot-distro**, switch to the `proot-debian` branch and follow `docs/proot-setup.md` there.\n\n## How config is wired\n\n- Secrets live in `config/.env` (gitignored; copy from [`config/.env.template`](config/.env.template)).\n- Source config entrypoint is [`bots/openclaw.json`](bots/openclaw.json):\n\n```json5\n{ $include: \"../config/openclaw/openclaw.json5\" }\n```\n\n- Modular source config lives under [`config/openclaw/`](config/openclaw/) (JSON5 + `$include`).\n- The wrapper renders that source tree into `bots/.runtime/openclaw.runtime.json5` before launch, so OpenClaw writes back to disposable runtime state instead of the tracked source fragments.\n- Config can reference env vars via `${ENV_VAR}` (missing/empty vars fail fast).\n- `OPENCLAW_STATE_DIR=bots` is supported: [`scripts/openclaw.mjs`](scripts/openclaw.mjs) treats relative paths as repo-root-relative.\n\n```mermaid\nflowchart TD\n  A[pnpm openclaw COMMAND] --\u003e B[scripts/openclaw.mjs]\n  B --\u003e C[load config/.env]\n  B --\u003e D[normalize OPENCLAW_STATE_DIR]\n  D --\u003e E[config/openclaw/openclaw.json5]\n  E --\u003e F[bots/.runtime/openclaw.runtime.json5]\n```\n\n## Repo layout\n\nAll paths below are relative to the repo root.\n\n- [`openclaw/`](openclaw/) — OpenClaw submodule (pnpm workspace; build output in `openclaw/dist/`)\n- [`scripts/`](scripts/) — wrapper entrypoint (see [`scripts/README.md`](scripts/README.md))\n- [`config/`](config/) — versioned config (commit-safe) + `config/.env.template`\n- [`plugins/`](plugins/) — repo-local OpenClaw plugins (custom tools/skills; see [`plugins/README.md`](plugins/README.md))\n- `bots/` — repo-local OpenClaw state dir (gitignored; see [`bots/README.md`](bots/README.md))\n- [`dockerfiles/`](dockerfiles/) — Docker build contexts for sandbox images (see [`dockerfiles/README.md`](dockerfiles/README.md))\n- [`docs/`](docs/) — extra docs for this repo\n\nArchitecture notes: [`ARCHITECTURE.md`](ARCHITECTURE.md)\n\n## Project tree (sketch)\n\n```text\n.\n├─ README.md\n├─ package.json                  # repo wrapper scripts (pnpm openclaw:*)\n├─ .gitmodules                   # pins the OpenClaw submodule\n├─ openclaw/                     # OpenClaw submodule (upstream fork)\n├─ scripts/\n│  ├─ openclaw.mjs               # loads config/.env, normalizes OPENCLAW_STATE_DIR, runs OpenClaw CLI\n│  └─ browser-service.sh         # optional helper for the browser sidecar\n├─ plugins/                      # repo-local OpenClaw plugins (custom tools/skills)\n│  ├─ README.md\n│  └─ exa-search/                 # example: Exa Search plugin (tool + skill pack)\n├─ config/\n│  ├─ .env.template              # copy to config/.env (gitignored) and fill tokens/keys\n│  ├─ README.md                  # config wiring notes\n│  └─ openclaw/                  # modular JSON5 config (commit-safe; no secrets)\n│     ├─ openclaw.json5          # source root JSON5 (uses $include)\n│     └─ agents/                 # agent definitions (defaults + per-agent files)\n├─ bots/                         # repo-local state dir (gitignored; sensitive)\n│  ├─ README.md                  # migration/bootstrap notes (tracked)\n│  └─ openclaw.json              # compatibility entrypoint (tracked; source config reference)\n├─ dockerfiles/                  # sandbox image build contexts used by sandboxed agents\n└─ docs/                         # extra docs for this repo\n```\n\n## Docs\n\n- [`bots/README.md`](bots/README.md) — migrating from an existing `~/.openclaw/` install into repo-local state\n- [`config/README.md`](config/README.md) — how config/env/state are wired\n- [`docs/COMMANDS.md`](docs/COMMANDS.md) — command reference for this repo wrapper\n- [`docs/proot-setup.md`](docs/proot-setup.md) — Termux + proot-distro setup notes (see `proot-debian` branch)\n- `pnpm docs:check` — validates onboarding docs against executable repo truth\n\n## Common commands\n\n```bash\npnpm openclaw models status\npnpm openclaw agents list --bindings\npnpm openclaw channels status --probe\npnpm openclaw hooks list\npnpm openclaw nodes status\npnpm docs:check\n```\n\n## Sandboxed agents (Docker)\n\nOnly needed if an agent config uses `sandbox.docker.image` (i.e., you actually enabled Docker sandboxing for that agent).\nExample: `config/openclaw/agents/list/writer.json5` sets `\"image\": \"localhost/openclaw-sandbox-writer:bookworm\"`.\n\n```bash\ndocker build -f dockerfiles/writer/Dockerfile -t localhost/openclaw-sandbox-writer:bookworm dockerfiles/writer\n```\n\nSee [`dockerfiles/`](dockerfiles/) and [`config/openclaw/agents/list/`](config/openclaw/agents/list/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappautomaton%2Fopenclaw-monorepo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappautomaton%2Fopenclaw-monorepo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappautomaton%2Fopenclaw-monorepo/lists"}