codexmate 0.0.27 → 0.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/README.md +421 -421
  2. package/README.zh.md +354 -354
  3. package/cli/agents-files.js +224 -224
  4. package/cli/archive-helpers.js +446 -446
  5. package/cli/auth-profiles.js +375 -375
  6. package/cli/builtin-proxy.js +1620 -1299
  7. package/cli/claude-proxy.js +1022 -1022
  8. package/cli/config-bootstrap.js +384 -384
  9. package/cli/config-health.js +338 -338
  10. package/cli/doctor-core.js +903 -903
  11. package/cli/import-skills-url.js +356 -356
  12. package/cli/openai-bridge.js +1489 -1091
  13. package/cli/openclaw-config.js +629 -629
  14. package/cli/session-convert-args.js +65 -65
  15. package/cli/session-convert-io.js +82 -82
  16. package/cli/session-convert.js +43 -43
  17. package/cli/session-usage.concurrent.js +28 -28
  18. package/cli/session-usage.js +118 -118
  19. package/cli/session-usage.models.js +176 -176
  20. package/cli/skills.js +1141 -1141
  21. package/cli/zip-commands.js +510 -510
  22. package/cli.js +15264 -15251
  23. package/lib/automation.js +404 -404
  24. package/lib/cli-file-utils.js +151 -151
  25. package/lib/cli-models-utils.js +440 -379
  26. package/lib/cli-network-utils.js +190 -190
  27. package/lib/cli-path-utils.js +85 -85
  28. package/lib/cli-session-utils.js +121 -121
  29. package/lib/cli-sessions.js +417 -417
  30. package/lib/cli-utils.js +155 -155
  31. package/lib/download-artifacts.js +92 -92
  32. package/lib/mcp-stdio.js +453 -453
  33. package/lib/task-orchestrator.js +869 -869
  34. package/lib/text-diff.js +303 -303
  35. package/lib/workflow-engine.js +340 -340
  36. package/package.json +3 -1
  37. package/plugins/README.md +20 -20
  38. package/plugins/README.zh-CN.md +20 -20
  39. package/plugins/prompt-templates/comment-polish/index.mjs +25 -25
  40. package/plugins/prompt-templates/computed.mjs +253 -253
  41. package/plugins/prompt-templates/index.mjs +8 -8
  42. package/plugins/prompt-templates/manifest.mjs +15 -15
  43. package/plugins/prompt-templates/methods.mjs +553 -619
  44. package/plugins/prompt-templates/overview.mjs +91 -90
  45. package/plugins/prompt-templates/ownership.mjs +19 -19
  46. package/plugins/prompt-templates/rule-ack/index.mjs +21 -21
  47. package/plugins/prompt-templates/storage.mjs +64 -64
  48. package/plugins/registry.mjs +16 -16
  49. package/web-ui/app.js +625 -634
  50. package/web-ui/index.html +35 -35
  51. package/web-ui/logic.agents-diff.mjs +386 -386
  52. package/web-ui/logic.claude.mjs +168 -168
  53. package/web-ui/logic.codex.mjs +56 -0
  54. package/web-ui/logic.mjs +5 -5
  55. package/web-ui/logic.runtime.mjs +128 -128
  56. package/web-ui/logic.session-convert.mjs +70 -70
  57. package/web-ui/logic.sessions.mjs +765 -765
  58. package/web-ui/modules/api.mjs +90 -90
  59. package/web-ui/modules/app.computed.dashboard.mjs +225 -171
  60. package/web-ui/modules/app.computed.index.mjs +17 -17
  61. package/web-ui/modules/app.computed.main-tabs.mjs +205 -205
  62. package/web-ui/modules/app.computed.session.mjs +994 -994
  63. package/web-ui/modules/app.constants.mjs +15 -15
  64. package/web-ui/modules/app.methods.agents.mjs +632 -632
  65. package/web-ui/modules/app.methods.claude-config.mjs +190 -184
  66. package/web-ui/modules/app.methods.codex-config.mjs +892 -860
  67. package/web-ui/modules/app.methods.index.mjs +92 -92
  68. package/web-ui/modules/app.methods.install.mjs +205 -205
  69. package/web-ui/modules/app.methods.navigation.mjs +743 -743
  70. package/web-ui/modules/app.methods.openclaw-core.mjs +814 -814
  71. package/web-ui/modules/app.methods.openclaw-editing.mjs +372 -372
  72. package/web-ui/modules/app.methods.openclaw-persist.mjs +369 -369
  73. package/web-ui/modules/app.methods.providers.mjs +412 -404
  74. package/web-ui/modules/app.methods.runtime.mjs +345 -345
  75. package/web-ui/modules/app.methods.session-actions.mjs +593 -596
  76. package/web-ui/modules/app.methods.session-browser.mjs +984 -989
  77. package/web-ui/modules/app.methods.session-timeline.mjs +479 -479
  78. package/web-ui/modules/app.methods.session-trash.mjs +439 -439
  79. package/web-ui/modules/app.methods.startup-claude.mjs +533 -526
  80. package/web-ui/modules/app.methods.task-orchestration.mjs +556 -556
  81. package/web-ui/modules/config-mode.computed.mjs +124 -124
  82. package/web-ui/modules/config-template-confirm-pref.mjs +33 -33
  83. package/web-ui/modules/i18n.dict.mjs +2109 -2131
  84. package/web-ui/modules/i18n.mjs +56 -56
  85. package/web-ui/modules/plugins.computed.mjs +3 -3
  86. package/web-ui/modules/plugins.methods.mjs +3 -3
  87. package/web-ui/modules/plugins.storage.mjs +11 -11
  88. package/web-ui/modules/provider-url-display.mjs +17 -0
  89. package/web-ui/modules/sessions-filters-url.mjs +85 -85
  90. package/web-ui/modules/skills.computed.mjs +107 -107
  91. package/web-ui/modules/skills.methods.mjs +481 -481
  92. package/web-ui/partials/index/layout-footer.html +13 -13
  93. package/web-ui/partials/index/layout-header.html +475 -475
  94. package/web-ui/partials/index/modal-config-template-agents.html +174 -174
  95. package/web-ui/partials/index/modal-confirm-toast.html +32 -32
  96. package/web-ui/partials/index/modal-health-check.html +45 -45
  97. package/web-ui/partials/index/modal-openclaw-config.html +280 -280
  98. package/web-ui/partials/index/modal-skills.html +200 -200
  99. package/web-ui/partials/index/modals-basic.html +165 -165
  100. package/web-ui/partials/index/panel-config-claude.html +188 -187
  101. package/web-ui/partials/index/panel-config-codex.html +312 -283
  102. package/web-ui/partials/index/panel-config-openclaw.html +83 -83
  103. package/web-ui/partials/index/panel-dashboard.html +186 -186
  104. package/web-ui/partials/index/panel-docs.html +147 -147
  105. package/web-ui/partials/index/panel-market.html +177 -177
  106. package/web-ui/partials/index/panel-orchestration.html +391 -391
  107. package/web-ui/partials/index/panel-plugins.html +253 -279
  108. package/web-ui/partials/index/panel-sessions.html +316 -326
  109. package/web-ui/partials/index/panel-settings.html +253 -274
  110. package/web-ui/partials/index/panel-usage.html +371 -371
  111. package/web-ui/res/json5.min.js +1 -1
  112. package/web-ui/res/vue.global.prod.js +13 -13
  113. package/web-ui/session-helpers.mjs +576 -576
  114. package/web-ui/source-bundle.cjs +233 -233
  115. package/web-ui/styles/base-theme.css +281 -268
  116. package/web-ui/styles/controls-forms.css +422 -423
  117. package/web-ui/styles/dashboard.css +274 -274
  118. package/web-ui/styles/docs-panel.css +247 -247
  119. package/web-ui/styles/feedback.css +108 -108
  120. package/web-ui/styles/health-check-dialog.css +144 -144
  121. package/web-ui/styles/layout-shell.css +606 -603
  122. package/web-ui/styles/modals-core.css +466 -464
  123. package/web-ui/styles/navigation-panels.css +391 -390
  124. package/web-ui/styles/openclaw-structured.css +266 -266
  125. package/web-ui/styles/plugins-panel.css +523 -523
  126. package/web-ui/styles/responsive.css +454 -454
  127. package/web-ui/styles/sessions-list.css +419 -415
  128. package/web-ui/styles/sessions-preview.css +411 -411
  129. package/web-ui/styles/sessions-toolbar-trash.css +330 -330
  130. package/web-ui/styles/sessions-usage.css +1040 -1040
  131. package/web-ui/styles/settings-panel.css +185 -185
  132. package/web-ui/styles/skills-list.css +303 -303
  133. package/web-ui/styles/skills-market.css +406 -406
  134. package/web-ui/styles/task-orchestration.css +822 -822
  135. package/web-ui/styles/titles-cards.css +472 -408
  136. package/web-ui/styles.css +21 -21
  137. package/web-ui.html +17 -17
package/README.md CHANGED
@@ -1,421 +1,421 @@
1
- <div align="center">
2
-
3
- <img src="site/.vitepress/public/images/logo.png" alt="Codex Mate logo" width="180" />
4
-
5
- # Codex Mate
6
-
7
- **Local-first CLI + Web UI that edits your AI tool configs and sessions directly on disk, with built-in usage analytics and safe rollback.**
8
-
9
- [![Build](https://img.shields.io/github/actions/workflow/status/SakuraByteCore/codexmate/release.yml?label=build&style=flat)](https://github.com/SakuraByteCore/codexmate/actions/workflows/release.yml)
10
- [![Version](https://img.shields.io/npm/v/codexmate?label=version&style=flat)](https://www.npmjs.com/package/codexmate)
11
- [![Downloads](https://img.shields.io/npm/dt/codexmate?label=downloads&style=flat)](https://www.npmjs.com/package/codexmate)
12
- [![Node](https://img.shields.io/node/v/codexmate?label=Node.js&style=flat&logo=node.js&logoColor=white)](https://nodejs.org/)
13
- [![License](https://img.shields.io/npm/l/codexmate?label=license&style=flat)](LICENSE)
14
- [![Stars](https://img.shields.io/github/stars/SakuraByteCore/codexmate?label=stars&style=flat)](https://github.com/SakuraByteCore/codexmate/stargazers)
15
- [![Issues](https://img.shields.io/github/issues/SakuraByteCore/codexmate?label=issues&style=flat)](https://github.com/SakuraByteCore/codexmate/issues)
16
-
17
- [Docs](https://sakurabytecore.github.io/codexmate/) · [Quick Start](#quick-start) · [Commands](#command-reference) · [Web UI](#web-ui) · [MCP](#mcp) · [中文](README.zh.md)
18
-
19
- <br />
20
- <img src="site/.vitepress/public/images/readme-hero.png" alt="Codex Mate screenshot" width="960" />
21
-
22
- </div>
23
-
24
- ---
25
-
26
- ## What Is This?
27
-
28
- Codex Mate is a local-first CLI + Web UI for unified management of:
29
-
30
- - Codex provider/model switching and config writes
31
- - OpenAI-compatible bridge mode for Codex Responses API conversion
32
- - Claude Code profiles (writes to `~/.claude/settings.json`)
33
- - Claude Code `CLAUDE.md` editing (writes to `~/.claude/CLAUDE.md`)
34
- - OpenClaw JSON5 profiles and workspace `AGENTS.md`
35
- - Local skills market for Codex / Claude Code (target switching, local skills management, cross-app import, ZIP distribution)
36
- - Local Codex/Claude/Gemini CLI/CodeBuddy Code sessions (list/filter/export/delete) with Usage analytics overview
37
- - Plugins (Prompt templates): reusable templates with variables and one-click copy
38
- - Task orchestration: plan/queue/run/review local tasks
39
-
40
- It works on local files directly and does not require cloud hosting. The skills market is also local-first: it operates on local directories and does not depend on a remote marketplace.
41
-
42
- ## Comparison
43
-
44
- | Dimension | Codex Mate | Manual File Editing |
45
- | --- | --- | --- |
46
- | Multi-tool management | Codex + Claude Code + OpenClaw in one entry | Different files and folders per tool |
47
- | Operation mode | CLI + local Web UI | Manual TOML/JSON/JSON5 edits |
48
- | Session handling | Browse/filter/Usage analytics/export/batch cleanup | Manual file location and processing |
49
- | Skills reuse | Local skills market + cross-app import + ZIP distribution | Manual folder copy and reconciliation |
50
- | Operational visibility | Unified view of config, sessions, and Usage summaries | Depends on manual file inspection and scattered commands |
51
- | Rollback readiness | Backup before first takeover | Easy to overwrite by mistake |
52
- | Automation integration | MCP stdio (read-only by default) | Requires custom scripting |
53
-
54
- ## Core Features
55
-
56
- **Configuration**
57
- - Provider/model switching (`switch`, `use`)
58
- - Codex `config.toml` template confirmation before write
59
- - OpenAI bridge providers: write Codex to a local `/bridge/openai/<provider>/v1` endpoint and normalize Responses API requests for OpenAI-compatible upstreams
60
- - Claude Code profile management and apply
61
- - Claude Code `CLAUDE.md` editing (writes to `~/.claude/CLAUDE.md`)
62
- - OpenClaw JSON5 profile management
63
-
64
- **Session Management**
65
- - Unified Codex + Claude + Gemini CLI + CodeBuddy Code session list
66
- - Session locations (local-first, configurable):
67
- - Codex: `~/.codex/sessions/*.jsonl` (or `$CODEX_HOME/sessions`, `$XDG_CONFIG_HOME/codex/sessions`)
68
- - Claude: `~/.claude/projects/**/**/*.jsonl` (or `$CLAUDE_HOME/projects`, `$XDG_CONFIG_HOME/claude/projects`)
69
- - Gemini: `~/.gemini/tmp/*/chats/*.json` (or `$GEMINI_HOME/tmp`, `$XDG_CONFIG_HOME/gemini/tmp`)
70
- - CodeBuddy: `~/.codebuddy/projects/**/**/*.jsonl` (or `$CODEBUDDY_CODE_HOME_DIR/projects`)
71
- - Local session pinning with persistent pinned state and pinned-first ordering
72
- - Keyword/source/cwd/role/time filters, plus shareable filter links
73
- - Copy resume command (Codex/Gemini/CodeBuddy): `codex resume <sessionId>` / `gemini -r <sessionId>` / `codebuddy -r <sessionId>`
74
- - Fast search UX: short-lived query result caching to avoid rescanning on each keystroke
75
- - Usage subview with 7d / 30d session trends, message trends, source share, and top paths
76
- - Markdown export (Web UI + `codexmate export-session`, supports `--session-id` or `--file`)
77
- - Session-level and message-level delete (supports batch), with a local recycle bin for restore/purge
78
- - Large-session preview optimization (fast tail preview path)
79
-
80
- **Skills Market**
81
- - Switch the skills install target between Codex and Claude Code
82
- - Inspect local installed skills, root paths, and status
83
- - Scan importable sources from `Codex` / `Claude Code` / `Agents`
84
- - Support cross-app import, ZIP import/export, and batch delete
85
-
86
- **Plugins**
87
- - Prompt templates: save, edit, and reuse prompts with variables
88
- - Compose + copy workflow for fast prompt iteration (stored locally in browser storage)
89
-
90
- **Engineering Utilities**
91
- - MCP stdio domains (`tools`, `resources`, `prompts`)
92
- - Automation hooks (`/hooks/*`) + outbound webhook notifiers
93
- - Built-in proxy controls (`proxy`)
94
- - OpenAI bridge conversion for Codex `/v1/responses` requests, including upstream `/responses` preference, `/chat/completions` fallback, and function-tool normalization
95
- - Auth profile management (`auth`)
96
- - Zip/unzip utilities
97
-
98
- ## Automation (signal → action)
99
-
100
- When running `codexmate run`, you can accept external webhooks and convert them into queued tasks:
101
-
102
- - Webhook entry: `POST /hooks/<source>` (currently `github`, `gitlab`)
103
- - Rule config: `~/.codex/codexmate-automation.json`
104
- - Supported action: `task.queue.add` (optionally `startQueue: true`)
105
- - Notifications: `notifiers[]` supports `type: "webhook"` for Slack/Feishu-style incoming webhooks
106
-
107
- ## Architecture
108
-
109
- ### At a glance (what it does → what you get)
110
-
111
- ```mermaid
112
- flowchart LR
113
- subgraph You["You"]
114
- CLI["CLI"]
115
- WEB["Web UI"]
116
- MCP["MCP (stdio)"]
117
- end
118
-
119
- subgraph Mate["Codex Mate (local control panel)"]
120
- API["Local HTTP API"]
121
- CFG["Config management"]
122
- SESS["Sessions & Usage"]
123
- SKL["Skills management"]
124
- PLG["Plugins: Prompt templates"]
125
- end
126
-
127
- subgraph Files["Local files only (auditable & reversible)"]
128
- CODEX["~/.codex/*"]
129
- CLAUDE["~/.claude/settings.json + CLAUDE.md"]
130
- OPENCLAW["~/.openclaw/*.json5 + ~/.openclaw/openclaw.json + workspace/AGENTS.md"]
131
- SKILLS["~/.{codex,claude,agents}/skills"]
132
- STATE["sessions / usage / trash / runs"]
133
- BROWSER["Browser storage (templates)"]
134
- end
135
-
136
- CLI --> API
137
- WEB --> API
138
- MCP --> API
139
- WEB --> PLG
140
-
141
- API --> CFG
142
- API --> SESS
143
- API --> SKL
144
- PLG --> BROWSER
145
-
146
- CFG --> CODEX
147
- CFG --> CLAUDE
148
- CFG --> OPENCLAW
149
- SKL --> SKILLS
150
- SESS --> STATE
151
- ```
152
-
153
- ### Capability → Local target → Outcome
154
-
155
- | Capability | Local target | What you get |
156
- | --- | --- | --- |
157
- | Config management (Codex / Claude / OpenClaw) | `~/.codex/*`, `~/.claude/settings.json`, `~/.claude/CLAUDE.md`, `~/.openclaw/*` | Faster provider/model switching, multi-profile management, safer writes with backups |
158
- | Sessions & Usage | sessions / usage aggregates / trash | Quickly locate sessions, filter/export, batch cleanup, and view trends |
159
- | Skills market | `~/.{codex,claude,agents}/skills` | Local install/import/export (ZIP), cross-app reuse |
160
- | Plugins (Prompt templates) | Browser storage | Reusable prompt templates with variables and one-click copy |
161
- | MCP (stdio) | local API + file operations | Integrate with external tools under controllable permissions (read-only by default) |
162
-
163
- ## Quick Start
164
-
165
- ### Install from npm
166
-
167
- ```bash
168
- npm install -g codexmate
169
- codexmate setup
170
- codexmate status
171
- codexmate run
172
- ```
173
-
174
- Default listen address is `0.0.0.0:3737` for LAN access, and browser auto-open is enabled by default.
175
-
176
- > Safety note: the unauthenticated management UI is exposed to your current LAN by default. Use trusted networks only; for local-only access, set `CODEXMATE_HOST=127.0.0.1` or pass `--host 127.0.0.1`.
177
-
178
- ### Install Codex CLI / Claude Code CLI (optional)
179
-
180
- Codex Mate can pass through to the official CLIs (e.g. `codexmate codex ...`). Install them first:
181
-
182
- ```bash
183
- # Codex CLI (default)
184
- npm install -g @openai/codex
185
-
186
- # Codex CLI on Termux (Android)
187
- npm install -g @mmmbuto/codex-cli-termux@latest
188
-
189
- # Claude Code
190
- npm install -g @anthropic-ai/claude-code
191
-
192
- # Gemini CLI
193
- npm install -g @google/gemini-cli
194
-
195
- # CodeBuddy Code
196
- npm install -g @tencent-ai/codebuddy-code
197
- ```
198
-
199
- ### Run from source
200
-
201
- ```bash
202
- git clone https://github.com/SakuraByteCore/codexmate.git
203
- cd codexmate
204
- npm install
205
- npm start run
206
- ```
207
-
208
- ### Tests / CI (service only)
209
-
210
- ```bash
211
- npm start run --no-browser
212
- ```
213
-
214
- > Convention: automated tests validate service and API behavior only, without opening browser pages.
215
-
216
- ### Developer helper scripts
217
-
218
- ```bash
219
- npm run reset
220
- npm run reset 79
221
- ```
222
-
223
- - `npm run reset`: reset to default `origin/main`
224
- - `npm run reset 79`: sync directly to the latest head snapshot of PR `#79`
225
- - The script also handles local branch switching, workspace cleanup, untracked file cleanup, and final state validation
226
-
227
- ## Command Reference
228
-
229
- | Command | Description |
230
- | --- | --- |
231
- | `codexmate status` | Show current config status |
232
- | `codexmate setup` | Interactive setup |
233
- | `codexmate list` / `codexmate models` | List providers / models |
234
- | `codexmate switch <provider>` / `codexmate use <model>` | Switch provider / model |
235
- | `codexmate add <name> <URL> [API_KEY] [--bridge openai]` | Add provider; `--bridge openai` creates a local Codex Responses-compatible bridge for OpenAI-style upstreams |
236
- | `codexmate delete <name>` | Delete provider |
237
- | `codexmate claude <BaseURL> <API_KEY> [model]` | Write Claude Code config |
238
- | `codexmate auth <list\|import\|switch\|delete\|status>` | Auth profile management |
239
- | `codexmate workflow <list\|get\|validate\|run\|runs>` | MCP workflow management |
240
- | `codexmate codex [args...] [--follow-up <text> repeatable]` | Codex CLI passthrough entrypoint (auto-adds `--yolo`, supports queued follow-up appends) |
241
- | `codexmate qwen [args...]` | Qwen CLI passthrough entrypoint |
242
- | `codexmate run [--host <HOST>] [--no-browser]` | Start Web UI |
243
- | `codexmate mcp serve [--read-only\|--allow-write]` | Start MCP stdio server |
244
- | `codexmate export-session --source <codex\|claude\|gemini\|codebuddy> ...` | Export session to Markdown |
245
- | `codexmate zip <path> [--max:0-9]` / `codexmate unzip <zip> [out]` | Zip / unzip |
246
- | `codexmate unzip-ext <zip-dir> [out] [--ext:suffix[,suffix...]] [--no-recursive]` | Extract files with target suffixes from ZIP files in a directory (default `.json`, recursive by default) |
247
-
248
- ### Codex Follow-up Append (Optional)
249
-
250
- ```bash
251
- codexmate codex --follow-up "scan repository first" --follow-up "then fix failing tests"
252
- codexmate codex --model gpt-5.3-codex --follow-up "step1" --follow-up "step2"
253
- ```
254
-
255
- > Note: both `--follow-up` and `--queued-follow-up` are accepted and repeatable.
256
-
257
- ## Web UI
258
-
259
- ### Codex Mode
260
- - Provider/model switching
261
- - Model list management
262
- - OpenAI bridge providers for Codex Responses API conversion to OpenAI-compatible upstreams
263
- - `~/.codex/AGENTS.md` editing
264
-
265
- ### Claude Code Mode
266
- - Multi-profile management
267
- - Default write to `~/.claude/settings.json`
268
- - `~/.claude/CLAUDE.md` editing
269
- - Shareable import command copy
270
-
271
- ### OpenClaw Mode
272
- - JSON5 multi-profile management
273
- - Apply to `~/.openclaw/openclaw.json`
274
- - Manage `~/.openclaw/workspace/AGENTS.md`
275
-
276
- ### Plugins Mode (Prompt Templates)
277
- - Entry: switch to **Plugins** → **Prompt Templates**
278
- - Manage custom templates (JSON import/export)
279
- - Variables: in **Manage**, you can “Add variable” (inserts `{{var}}`) and fill variable values in the Variables panel
280
- - Generate & copy: after filling variables, copy the final rendered prompt from **Preview**
281
- - Built-in template: ships a single read-only template for light code-comment polishing
282
-
283
- ### Sessions Mode
284
- - Unified Codex + Claude sessions
285
- - Browser / Usage subview switching
286
- - Local pin/unpin with persistent storage and pinned-first ordering
287
- - Search, filter, export, delete, batch cleanup
288
- - Usage view includes 7d / 30d session trends, message trends, source share, and top paths
289
-
290
- ### Skills Market Tab
291
- - Switch the skills install target between `Codex` and `Claude Code`
292
- - Show the current local skills root, installed items, and importable items
293
- - Scan importable sources under `Codex` / `Claude Code` / `Agents`
294
- - Support cross-app import, ZIP import/export, and batch delete
295
-
296
- ## MCP
297
-
298
- > Transport: `stdio`
299
-
300
- - Default: read-only tools
301
- - Enable writes: `--allow-write` or `CODEXMATE_MCP_ALLOW_WRITE=1`
302
- - Domains: `tools`, `resources`, `prompts`
303
-
304
- Examples:
305
-
306
- ```bash
307
- codexmate mcp serve --read-only
308
- codexmate mcp serve --allow-write
309
- ```
310
-
311
- ## Config Files
312
-
313
- - `~/.codex/config.toml`
314
- - `~/.codex/auth.json`
315
- - `~/.codex/models.json`
316
- - `~/.codex/provider-current-models.json`
317
- - `~/.codex/codexmate-openai-bridge.json`
318
- - `~/.claude/settings.json`
319
- - `~/.claude/CLAUDE.md`
320
- - `~/.openclaw/openclaw.json`
321
- - `~/.openclaw/workspace/AGENTS.md`
322
-
323
- ## Environment Variables
324
-
325
- | Variable | Default | Description |
326
- | --- | --- | --- |
327
- | `CODEXMATE_PORT` | `3737` | Web server port |
328
- | `CODEXMATE_HOST` | `0.0.0.0` | Web listen host (set `127.0.0.1` for local-only access) |
329
- | `CODEXMATE_NO_BROWSER` | unset | Set `1` to disable browser auto-open |
330
- | `CODEXMATE_MCP_ALLOW_WRITE` | unset | Set `1` to allow MCP write tools by default |
331
- | `CODEXMATE_FORCE_RESET_EXISTING_CONFIG` | `0` | Set `1` to force bootstrap reset of existing config |
332
-
333
- ## Tech Stack
334
-
335
- - Node.js
336
- - Vue.js 3 (Web UI)
337
- - Native HTTP server
338
- - `@iarna/toml`, `json5`
339
-
340
- ## Contributing
341
-
342
- Issues and pull requests are accepted.
343
-
344
- ## License
345
-
346
- Apache-2.0
347
-
348
- ### Claude Code Mode
349
- - Multi-profile management
350
- - Default write to `~/.claude/settings.json`
351
- - `~/.claude/CLAUDE.md` editing
352
- - Shareable import command copy
353
-
354
- ### OpenClaw Mode
355
- - JSON5 multi-profile management
356
- - Apply to `~/.openclaw/openclaw.json`
357
- - Manage `~/.openclaw/workspace/AGENTS.md`
358
-
359
- ### Sessions Mode
360
- - Unified Codex + Claude sessions
361
- - Browser / Usage subview switching
362
- - Local pin/unpin with persistent storage and pinned-first ordering
363
- - Search, filter, export, delete, batch cleanup
364
- - Usage view includes 7d / 30d session trends, message trends, source share, and top paths
365
-
366
- ### Skills Market Tab
367
- - Switch the skills install target between `Codex` and `Claude Code`
368
- - Show the current local skills root, installed items, and importable items
369
- - Scan importable sources under `Codex` / `Claude Code` / `Agents`
370
- - Support cross-app import, ZIP import/export, and batch delete
371
-
372
- ## MCP
373
-
374
- > Transport: `stdio`
375
-
376
- - Default: read-only tools
377
- - Enable writes: `--allow-write` or `CODEXMATE_MCP_ALLOW_WRITE=1`
378
- - Domains: `tools`, `resources`, `prompts`
379
-
380
- Examples:
381
-
382
- ```bash
383
- codexmate mcp serve --read-only
384
- codexmate mcp serve --allow-write
385
- ```
386
-
387
- ## Config Files
388
-
389
- - `~/.codex/config.toml`
390
- - `~/.codex/auth.json`
391
- - `~/.codex/models.json`
392
- - `~/.codex/provider-current-models.json`
393
- - `~/.claude/settings.json`
394
- - `~/.claude/CLAUDE.md`
395
- - `~/.openclaw/openclaw.json`
396
- - `~/.openclaw/workspace/AGENTS.md`
397
-
398
- ## Environment Variables
399
-
400
- | Variable | Default | Description |
401
- | --- | --- | --- |
402
- | `CODEXMATE_PORT` | `3737` | Web server port |
403
- | `CODEXMATE_HOST` | `0.0.0.0` | Web listen host (set `127.0.0.1` for local-only access) |
404
- | `CODEXMATE_NO_BROWSER` | unset | Set `1` to disable browser auto-open |
405
- | `CODEXMATE_MCP_ALLOW_WRITE` | unset | Set `1` to allow MCP write tools by default |
406
- | `CODEXMATE_FORCE_RESET_EXISTING_CONFIG` | `0` | Set `1` to force bootstrap reset of existing config |
407
-
408
- ## Tech Stack
409
-
410
- - Node.js
411
- - Vue.js 3 (Web UI)
412
- - Native HTTP server
413
- - `@iarna/toml`, `json5`
414
-
415
- ## Contributing
416
-
417
- Issues and pull requests are accepted.
418
-
419
- ## License
420
-
421
- Apache-2.0
1
+ <div align="center">
2
+
3
+ <img src="site/.vitepress/public/images/logo.png" alt="Codex Mate logo" width="180" />
4
+
5
+ # Codex Mate
6
+
7
+ **One dashboard for all your local AI coding tools switch providers, manage sessions, edit configs, and orchestrate tasks across Codex, Claude Code, and OpenClaw. Built-in OpenAI-compatible bridge, usage analytics, and prompt templates. Zero cloud, zero setup.**
8
+
9
+ [![Build](https://img.shields.io/github/actions/workflow/status/SakuraByteCore/codexmate/release.yml?label=build&style=flat)](https://github.com/SakuraByteCore/codexmate/actions/workflows/release.yml)
10
+ [![Version](https://img.shields.io/npm/v/codexmate?label=version&style=flat)](https://www.npmjs.com/package/codexmate)
11
+ [![Downloads](https://img.shields.io/npm/dt/codexmate?label=downloads&style=flat)](https://www.npmjs.com/package/codexmate)
12
+ [![Node](https://img.shields.io/node/v/codexmate?label=Node.js&style=flat&logo=node.js&logoColor=white)](https://nodejs.org/)
13
+ [![License](https://img.shields.io/npm/l/codexmate?label=license&style=flat)](LICENSE)
14
+ [![Stars](https://img.shields.io/github/stars/SakuraByteCore/codexmate?label=stars&style=flat)](https://github.com/SakuraByteCore/codexmate/stargazers)
15
+ [![Issues](https://img.shields.io/github/issues/SakuraByteCore/codexmate?label=issues&style=flat)](https://github.com/SakuraByteCore/codexmate/issues)
16
+
17
+ [Docs](https://sakurabytecore.github.io/codexmate/) · [Quick Start](#quick-start) · [Commands](#command-reference) · [Web UI](#web-ui) · [MCP](#mcp) · [中文](README.zh.md)
18
+
19
+ <br />
20
+ <img src="site/.vitepress/public/images/readme-hero.png" alt="Codex Mate screenshot" width="960" />
21
+
22
+ </div>
23
+
24
+ ---
25
+
26
+ ## What Is This?
27
+
28
+ Codex Mate is a local-first CLI + Web UI for unified management of:
29
+
30
+ - Codex provider/model switching and config writes
31
+ - OpenAI-compatible bridge mode for Codex Responses API conversion
32
+ - Claude Code profiles (writes to `~/.claude/settings.json`)
33
+ - Claude Code `CLAUDE.md` editing (writes to `~/.claude/CLAUDE.md`)
34
+ - OpenClaw JSON5 profiles and workspace `AGENTS.md`
35
+ - Local skills market for Codex / Claude Code (target switching, local skills management, cross-app import, ZIP distribution)
36
+ - Local Codex/Claude/Gemini CLI/CodeBuddy Code sessions (list/filter/export/delete) with Usage analytics overview
37
+ - Plugins (Prompt templates): reusable templates with variables and one-click copy
38
+ - Task orchestration: plan/queue/run/review local tasks
39
+
40
+ It works on local files directly and does not require cloud hosting. The skills market is also local-first: it operates on local directories and does not depend on a remote marketplace.
41
+
42
+ ## Comparison
43
+
44
+ | Dimension | Codex Mate | Manual File Editing |
45
+ | --- | --- | --- |
46
+ | Multi-tool management | Codex + Claude Code + OpenClaw in one entry | Different files and folders per tool |
47
+ | Operation mode | CLI + local Web UI | Manual TOML/JSON/JSON5 edits |
48
+ | Session handling | Browse/filter/Usage analytics/export/batch cleanup | Manual file location and processing |
49
+ | Skills reuse | Local skills market + cross-app import + ZIP distribution | Manual folder copy and reconciliation |
50
+ | Operational visibility | Unified view of config, sessions, and Usage summaries | Depends on manual file inspection and scattered commands |
51
+ | Rollback readiness | Backup before first takeover | Easy to overwrite by mistake |
52
+ | Automation integration | MCP stdio (read-only by default) | Requires custom scripting |
53
+
54
+ ## Core Features
55
+
56
+ **Configuration**
57
+ - Provider/model switching (`switch`, `use`)
58
+ - Codex `config.toml` template confirmation before write
59
+ - OpenAI bridge providers: write Codex to a local `/bridge/openai/<provider>/v1` endpoint and normalize Responses API requests for OpenAI-compatible upstreams
60
+ - Claude Code profile management and apply
61
+ - Claude Code `CLAUDE.md` editing (writes to `~/.claude/CLAUDE.md`)
62
+ - OpenClaw JSON5 profile management
63
+
64
+ **Session Management**
65
+ - Unified Codex + Claude + Gemini CLI + CodeBuddy Code session list
66
+ - Session locations (local-first, configurable):
67
+ - Codex: `~/.codex/sessions/*.jsonl` (or `$CODEX_HOME/sessions`, `$XDG_CONFIG_HOME/codex/sessions`)
68
+ - Claude: `~/.claude/projects/**/**/*.jsonl` (or `$CLAUDE_HOME/projects`, `$XDG_CONFIG_HOME/claude/projects`)
69
+ - Gemini: `~/.gemini/tmp/*/chats/*.json` (or `$GEMINI_HOME/tmp`, `$XDG_CONFIG_HOME/gemini/tmp`)
70
+ - CodeBuddy: `~/.codebuddy/projects/**/**/*.jsonl` (or `$CODEBUDDY_CODE_HOME_DIR/projects`)
71
+ - Local session pinning with persistent pinned state and pinned-first ordering
72
+ - Keyword/source/cwd/role/time filters, plus shareable filter links
73
+ - Copy resume command (Codex/Gemini/CodeBuddy): `codex resume <sessionId>` / `gemini -r <sessionId>` / `codebuddy -r <sessionId>`
74
+ - Fast search UX: short-lived query result caching to avoid rescanning on each keystroke
75
+ - Usage subview with 7d / 30d session trends, message trends, source share, and top paths
76
+ - Markdown export (Web UI + `codexmate export-session`, supports `--session-id` or `--file`)
77
+ - Session-level and message-level delete (supports batch), with a local recycle bin for restore/purge
78
+ - Large-session preview optimization (fast tail preview path)
79
+
80
+ **Skills Market**
81
+ - Switch the skills install target between Codex and Claude Code
82
+ - Inspect local installed skills, root paths, and status
83
+ - Scan importable sources from `Codex` / `Claude Code` / `Agents`
84
+ - Support cross-app import, ZIP import/export, and batch delete
85
+
86
+ **Plugins**
87
+ - Prompt templates: save, edit, and reuse prompts with variables
88
+ - Compose + copy workflow for fast prompt iteration (stored locally in browser storage)
89
+
90
+ **Engineering Utilities**
91
+ - MCP stdio domains (`tools`, `resources`, `prompts`)
92
+ - Automation hooks (`/hooks/*`) + outbound webhook notifiers
93
+ - Built-in proxy controls (`proxy`)
94
+ - OpenAI bridge conversion for Codex `/v1/responses` requests, including upstream `/responses` preference, `/chat/completions` fallback, and function-tool normalization
95
+ - Auth profile management (`auth`)
96
+ - Zip/unzip utilities
97
+
98
+ ## Automation (signal → action)
99
+
100
+ When running `codexmate run`, you can accept external webhooks and convert them into queued tasks:
101
+
102
+ - Webhook entry: `POST /hooks/<source>` (currently `github`, `gitlab`)
103
+ - Rule config: `~/.codex/codexmate-automation.json`
104
+ - Supported action: `task.queue.add` (optionally `startQueue: true`)
105
+ - Notifications: `notifiers[]` supports `type: "webhook"` for Slack/Feishu-style incoming webhooks
106
+
107
+ ## Architecture
108
+
109
+ ### At a glance (what it does → what you get)
110
+
111
+ ```mermaid
112
+ flowchart LR
113
+ subgraph You["You"]
114
+ CLI["CLI"]
115
+ WEB["Web UI"]
116
+ MCP["MCP (stdio)"]
117
+ end
118
+
119
+ subgraph Mate["Codex Mate (local control panel)"]
120
+ API["Local HTTP API"]
121
+ CFG["Config management"]
122
+ SESS["Sessions & Usage"]
123
+ SKL["Skills management"]
124
+ PLG["Plugins: Prompt templates"]
125
+ end
126
+
127
+ subgraph Files["Local files only (auditable & reversible)"]
128
+ CODEX["~/.codex/*"]
129
+ CLAUDE["~/.claude/settings.json + CLAUDE.md"]
130
+ OPENCLAW["~/.openclaw/*.json5 + ~/.openclaw/openclaw.json + workspace/AGENTS.md"]
131
+ SKILLS["~/.{codex,claude,agents}/skills"]
132
+ STATE["sessions / usage / trash / runs"]
133
+ BROWSER["Browser storage (templates)"]
134
+ end
135
+
136
+ CLI --> API
137
+ WEB --> API
138
+ MCP --> API
139
+ WEB --> PLG
140
+
141
+ API --> CFG
142
+ API --> SESS
143
+ API --> SKL
144
+ PLG --> BROWSER
145
+
146
+ CFG --> CODEX
147
+ CFG --> CLAUDE
148
+ CFG --> OPENCLAW
149
+ SKL --> SKILLS
150
+ SESS --> STATE
151
+ ```
152
+
153
+ ### Capability → Local target → Outcome
154
+
155
+ | Capability | Local target | What you get |
156
+ | --- | --- | --- |
157
+ | Config management (Codex / Claude / OpenClaw) | `~/.codex/*`, `~/.claude/settings.json`, `~/.claude/CLAUDE.md`, `~/.openclaw/*` | Faster provider/model switching, multi-profile management, safer writes with backups |
158
+ | Sessions & Usage | sessions / usage aggregates / trash | Quickly locate sessions, filter/export, batch cleanup, and view trends |
159
+ | Skills market | `~/.{codex,claude,agents}/skills` | Local install/import/export (ZIP), cross-app reuse |
160
+ | Plugins (Prompt templates) | Browser storage | Reusable prompt templates with variables and one-click copy |
161
+ | MCP (stdio) | local API + file operations | Integrate with external tools under controllable permissions (read-only by default) |
162
+
163
+ ## Quick Start
164
+
165
+ ### Install from npm
166
+
167
+ ```bash
168
+ npm install -g codexmate
169
+ codexmate setup
170
+ codexmate status
171
+ codexmate run
172
+ ```
173
+
174
+ Default listen address is `0.0.0.0:3737` for LAN access, and browser auto-open is enabled by default.
175
+
176
+ > Safety note: the unauthenticated management UI is exposed to your current LAN by default. Use trusted networks only; for local-only access, set `CODEXMATE_HOST=127.0.0.1` or pass `--host 127.0.0.1`.
177
+
178
+ ### Install Codex CLI / Claude Code CLI (optional)
179
+
180
+ Codex Mate can pass through to the official CLIs (e.g. `codexmate codex ...`). Install them first:
181
+
182
+ ```bash
183
+ # Codex CLI (default)
184
+ npm install -g @openai/codex
185
+
186
+ # Codex CLI on Termux (Android)
187
+ npm install -g @mmmbuto/codex-cli-termux@latest
188
+
189
+ # Claude Code
190
+ npm install -g @anthropic-ai/claude-code
191
+
192
+ # Gemini CLI
193
+ npm install -g @google/gemini-cli
194
+
195
+ # CodeBuddy Code
196
+ npm install -g @tencent-ai/codebuddy-code
197
+ ```
198
+
199
+ ### Run from source
200
+
201
+ ```bash
202
+ git clone https://github.com/SakuraByteCore/codexmate.git
203
+ cd codexmate
204
+ npm install
205
+ npm start run
206
+ ```
207
+
208
+ ### Tests / CI (service only)
209
+
210
+ ```bash
211
+ npm start run --no-browser
212
+ ```
213
+
214
+ > Convention: automated tests validate service and API behavior only, without opening browser pages.
215
+
216
+ ### Developer helper scripts
217
+
218
+ ```bash
219
+ npm run reset
220
+ npm run reset 79
221
+ ```
222
+
223
+ - `npm run reset`: reset to default `origin/main`
224
+ - `npm run reset 79`: sync directly to the latest head snapshot of PR `#79`
225
+ - The script also handles local branch switching, workspace cleanup, untracked file cleanup, and final state validation
226
+
227
+ ## Command Reference
228
+
229
+ | Command | Description |
230
+ | --- | --- |
231
+ | `codexmate status` | Show current config status |
232
+ | `codexmate setup` | Interactive setup |
233
+ | `codexmate list` / `codexmate models` | List providers / models |
234
+ | `codexmate switch <provider>` / `codexmate use <model>` | Switch provider / model |
235
+ | `codexmate add <name> <URL> [API_KEY] [--bridge openai]` | Add provider; `--bridge openai` creates a local Codex Responses-compatible bridge for OpenAI-style upstreams |
236
+ | `codexmate delete <name>` | Delete provider |
237
+ | `codexmate claude <BaseURL> <API_KEY> [model]` | Write Claude Code config |
238
+ | `codexmate auth <list\|import\|switch\|delete\|status>` | Auth profile management |
239
+ | `codexmate workflow <list\|get\|validate\|run\|runs>` | MCP workflow management |
240
+ | `codexmate codex [args...] [--follow-up <text> repeatable]` | Codex CLI passthrough entrypoint (auto-adds `--yolo`, supports queued follow-up appends) |
241
+ | `codexmate qwen [args...]` | Qwen CLI passthrough entrypoint |
242
+ | `codexmate run [--host <HOST>] [--no-browser]` | Start Web UI |
243
+ | `codexmate mcp serve [--read-only\|--allow-write]` | Start MCP stdio server |
244
+ | `codexmate export-session --source <codex\|claude\|gemini\|codebuddy> ...` | Export session to Markdown |
245
+ | `codexmate zip <path> [--max:0-9]` / `codexmate unzip <zip> [out]` | Zip / unzip |
246
+ | `codexmate unzip-ext <zip-dir> [out] [--ext:suffix[,suffix...]] [--no-recursive]` | Extract files with target suffixes from ZIP files in a directory (default `.json`, recursive by default) |
247
+
248
+ ### Codex Follow-up Append (Optional)
249
+
250
+ ```bash
251
+ codexmate codex --follow-up "scan repository first" --follow-up "then fix failing tests"
252
+ codexmate codex --model gpt-5.3-codex --follow-up "step1" --follow-up "step2"
253
+ ```
254
+
255
+ > Note: both `--follow-up` and `--queued-follow-up` are accepted and repeatable.
256
+
257
+ ## Web UI
258
+
259
+ ### Codex Mode
260
+ - Provider/model switching
261
+ - Model list management
262
+ - OpenAI bridge providers for Codex Responses API conversion to OpenAI-compatible upstreams
263
+ - `~/.codex/AGENTS.md` editing
264
+
265
+ ### Claude Code Mode
266
+ - Multi-profile management
267
+ - Default write to `~/.claude/settings.json`
268
+ - `~/.claude/CLAUDE.md` editing
269
+ - Shareable import command copy
270
+
271
+ ### OpenClaw Mode
272
+ - JSON5 multi-profile management
273
+ - Apply to `~/.openclaw/openclaw.json`
274
+ - Manage `~/.openclaw/workspace/AGENTS.md`
275
+
276
+ ### Plugins Mode (Prompt Templates)
277
+ - Entry: switch to **Plugins** → **Prompt Templates**
278
+ - Manage custom templates (JSON import/export)
279
+ - Variables: in **Manage**, you can “Add variable” (inserts `{{var}}`) and fill variable values in the Variables panel
280
+ - Generate & copy: after filling variables, copy the final rendered prompt from **Preview**
281
+ - Built-in template: ships a single read-only template for light code-comment polishing
282
+
283
+ ### Sessions Mode
284
+ - Unified Codex + Claude sessions
285
+ - Browser / Usage subview switching
286
+ - Local pin/unpin with persistent storage and pinned-first ordering
287
+ - Search, filter, export, delete, batch cleanup
288
+ - Usage view includes 7d / 30d session trends, message trends, source share, and top paths
289
+
290
+ ### Skills Market Tab
291
+ - Switch the skills install target between `Codex` and `Claude Code`
292
+ - Show the current local skills root, installed items, and importable items
293
+ - Scan importable sources under `Codex` / `Claude Code` / `Agents`
294
+ - Support cross-app import, ZIP import/export, and batch delete
295
+
296
+ ## MCP
297
+
298
+ > Transport: `stdio`
299
+
300
+ - Default: read-only tools
301
+ - Enable writes: `--allow-write` or `CODEXMATE_MCP_ALLOW_WRITE=1`
302
+ - Domains: `tools`, `resources`, `prompts`
303
+
304
+ Examples:
305
+
306
+ ```bash
307
+ codexmate mcp serve --read-only
308
+ codexmate mcp serve --allow-write
309
+ ```
310
+
311
+ ## Config Files
312
+
313
+ - `~/.codex/config.toml`
314
+ - `~/.codex/auth.json`
315
+ - `~/.codex/models.json`
316
+ - `~/.codex/provider-current-models.json`
317
+ - `~/.codex/codexmate-openai-bridge.json`
318
+ - `~/.claude/settings.json`
319
+ - `~/.claude/CLAUDE.md`
320
+ - `~/.openclaw/openclaw.json`
321
+ - `~/.openclaw/workspace/AGENTS.md`
322
+
323
+ ## Environment Variables
324
+
325
+ | Variable | Default | Description |
326
+ | --- | --- | --- |
327
+ | `CODEXMATE_PORT` | `3737` | Web server port |
328
+ | `CODEXMATE_HOST` | `0.0.0.0` | Web listen host (set `127.0.0.1` for local-only access) |
329
+ | `CODEXMATE_NO_BROWSER` | unset | Set `1` to disable browser auto-open |
330
+ | `CODEXMATE_MCP_ALLOW_WRITE` | unset | Set `1` to allow MCP write tools by default |
331
+ | `CODEXMATE_FORCE_RESET_EXISTING_CONFIG` | `0` | Set `1` to force bootstrap reset of existing config |
332
+
333
+ ## Tech Stack
334
+
335
+ - Node.js
336
+ - Vue.js 3 (Web UI)
337
+ - Native HTTP server
338
+ - `@iarna/toml`, `json5`
339
+
340
+ ## Contributing
341
+
342
+ Issues and pull requests are accepted.
343
+
344
+ ## License
345
+
346
+ Apache-2.0
347
+
348
+ ### Claude Code Mode
349
+ - Multi-profile management
350
+ - Default write to `~/.claude/settings.json`
351
+ - `~/.claude/CLAUDE.md` editing
352
+ - Shareable import command copy
353
+
354
+ ### OpenClaw Mode
355
+ - JSON5 multi-profile management
356
+ - Apply to `~/.openclaw/openclaw.json`
357
+ - Manage `~/.openclaw/workspace/AGENTS.md`
358
+
359
+ ### Sessions Mode
360
+ - Unified Codex + Claude sessions
361
+ - Browser / Usage subview switching
362
+ - Local pin/unpin with persistent storage and pinned-first ordering
363
+ - Search, filter, export, delete, batch cleanup
364
+ - Usage view includes 7d / 30d session trends, message trends, source share, and top paths
365
+
366
+ ### Skills Market Tab
367
+ - Switch the skills install target between `Codex` and `Claude Code`
368
+ - Show the current local skills root, installed items, and importable items
369
+ - Scan importable sources under `Codex` / `Claude Code` / `Agents`
370
+ - Support cross-app import, ZIP import/export, and batch delete
371
+
372
+ ## MCP
373
+
374
+ > Transport: `stdio`
375
+
376
+ - Default: read-only tools
377
+ - Enable writes: `--allow-write` or `CODEXMATE_MCP_ALLOW_WRITE=1`
378
+ - Domains: `tools`, `resources`, `prompts`
379
+
380
+ Examples:
381
+
382
+ ```bash
383
+ codexmate mcp serve --read-only
384
+ codexmate mcp serve --allow-write
385
+ ```
386
+
387
+ ## Config Files
388
+
389
+ - `~/.codex/config.toml`
390
+ - `~/.codex/auth.json`
391
+ - `~/.codex/models.json`
392
+ - `~/.codex/provider-current-models.json`
393
+ - `~/.claude/settings.json`
394
+ - `~/.claude/CLAUDE.md`
395
+ - `~/.openclaw/openclaw.json`
396
+ - `~/.openclaw/workspace/AGENTS.md`
397
+
398
+ ## Environment Variables
399
+
400
+ | Variable | Default | Description |
401
+ | --- | --- | --- |
402
+ | `CODEXMATE_PORT` | `3737` | Web server port |
403
+ | `CODEXMATE_HOST` | `0.0.0.0` | Web listen host (set `127.0.0.1` for local-only access) |
404
+ | `CODEXMATE_NO_BROWSER` | unset | Set `1` to disable browser auto-open |
405
+ | `CODEXMATE_MCP_ALLOW_WRITE` | unset | Set `1` to allow MCP write tools by default |
406
+ | `CODEXMATE_FORCE_RESET_EXISTING_CONFIG` | `0` | Set `1` to force bootstrap reset of existing config |
407
+
408
+ ## Tech Stack
409
+
410
+ - Node.js
411
+ - Vue.js 3 (Web UI)
412
+ - Native HTTP server
413
+ - `@iarna/toml`, `json5`
414
+
415
+ ## Contributing
416
+
417
+ Issues and pull requests are accepted.
418
+
419
+ ## License
420
+
421
+ Apache-2.0