dimcode 0.0.16-beta.2 → 0.0.16

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 (150) hide show
  1. package/README.md +196 -17
  2. package/assets/gui/200.html +12 -0
  3. package/assets/gui/404.html +12 -0
  4. package/assets/gui/_nuxt/B4BeXTM8.js +1 -0
  5. package/assets/gui/_nuxt/BTTJEMKv.js +42 -0
  6. package/assets/gui/_nuxt/CBflTB_3.js +1 -0
  7. package/assets/gui/_nuxt/Cd_MtzEZ.js +957 -0
  8. package/assets/gui/_nuxt/DLcXGJ1M.js +261 -0
  9. package/assets/gui/_nuxt/DTsXV384.js +2 -0
  10. package/assets/gui/_nuxt/DlAUqK2U.js +1 -0
  11. package/assets/gui/_nuxt/DzShUmTH.js +1 -0
  12. package/assets/gui/_nuxt/KaTeX_AMS-Regular.BQhdFMY1.woff2 +0 -0
  13. package/assets/gui/_nuxt/KaTeX_AMS-Regular.DMm9YOAa.woff +0 -0
  14. package/assets/gui/_nuxt/KaTeX_AMS-Regular.DRggAlZN.ttf +0 -0
  15. package/assets/gui/_nuxt/KaTeX_Caligraphic-Bold.ATXxdsX0.ttf +0 -0
  16. package/assets/gui/_nuxt/KaTeX_Caligraphic-Bold.BEiXGLvX.woff +0 -0
  17. package/assets/gui/_nuxt/KaTeX_Caligraphic-Bold.Dq_IR9rO.woff2 +0 -0
  18. package/assets/gui/_nuxt/KaTeX_Caligraphic-Regular.CTRA-rTL.woff +0 -0
  19. package/assets/gui/_nuxt/KaTeX_Caligraphic-Regular.Di6jR-x-.woff2 +0 -0
  20. package/assets/gui/_nuxt/KaTeX_Caligraphic-Regular.wX97UBjC.ttf +0 -0
  21. package/assets/gui/_nuxt/KaTeX_Fraktur-Bold.BdnERNNW.ttf +0 -0
  22. package/assets/gui/_nuxt/KaTeX_Fraktur-Bold.BsDP51OF.woff +0 -0
  23. package/assets/gui/_nuxt/KaTeX_Fraktur-Bold.CL6g_b3V.woff2 +0 -0
  24. package/assets/gui/_nuxt/KaTeX_Fraktur-Regular.CB_wures.ttf +0 -0
  25. package/assets/gui/_nuxt/KaTeX_Fraktur-Regular.CTYiF6lA.woff2 +0 -0
  26. package/assets/gui/_nuxt/KaTeX_Fraktur-Regular.Dxdc4cR9.woff +0 -0
  27. package/assets/gui/_nuxt/KaTeX_Main-Bold.Cx986IdX.woff2 +0 -0
  28. package/assets/gui/_nuxt/KaTeX_Main-Bold.Jm3AIy58.woff +0 -0
  29. package/assets/gui/_nuxt/KaTeX_Main-Bold.waoOVXN0.ttf +0 -0
  30. package/assets/gui/_nuxt/KaTeX_Main-BoldItalic.DxDJ3AOS.woff2 +0 -0
  31. package/assets/gui/_nuxt/KaTeX_Main-BoldItalic.DzxPMmG6.ttf +0 -0
  32. package/assets/gui/_nuxt/KaTeX_Main-BoldItalic.SpSLRI95.woff +0 -0
  33. package/assets/gui/_nuxt/KaTeX_Main-Italic.3WenGoN9.ttf +0 -0
  34. package/assets/gui/_nuxt/KaTeX_Main-Italic.BMLOBm91.woff +0 -0
  35. package/assets/gui/_nuxt/KaTeX_Main-Italic.NWA7e6Wa.woff2 +0 -0
  36. package/assets/gui/_nuxt/KaTeX_Main-Regular.B22Nviop.woff2 +0 -0
  37. package/assets/gui/_nuxt/KaTeX_Main-Regular.Dr94JaBh.woff +0 -0
  38. package/assets/gui/_nuxt/KaTeX_Main-Regular.ypZvNtVU.ttf +0 -0
  39. package/assets/gui/_nuxt/KaTeX_Math-BoldItalic.B3XSjfu4.ttf +0 -0
  40. package/assets/gui/_nuxt/KaTeX_Math-BoldItalic.CZnvNsCZ.woff2 +0 -0
  41. package/assets/gui/_nuxt/KaTeX_Math-BoldItalic.iY-2wyZ7.woff +0 -0
  42. package/assets/gui/_nuxt/KaTeX_Math-Italic.DA0__PXp.woff +0 -0
  43. package/assets/gui/_nuxt/KaTeX_Math-Italic.flOr_0UB.ttf +0 -0
  44. package/assets/gui/_nuxt/KaTeX_Math-Italic.t53AETM-.woff2 +0 -0
  45. package/assets/gui/_nuxt/KaTeX_SansSerif-Bold.CFMepnvq.ttf +0 -0
  46. package/assets/gui/_nuxt/KaTeX_SansSerif-Bold.D1sUS0GD.woff2 +0 -0
  47. package/assets/gui/_nuxt/KaTeX_SansSerif-Bold.DbIhKOiC.woff +0 -0
  48. package/assets/gui/_nuxt/KaTeX_SansSerif-Italic.C3H0VqGB.woff2 +0 -0
  49. package/assets/gui/_nuxt/KaTeX_SansSerif-Italic.DN2j7dab.woff +0 -0
  50. package/assets/gui/_nuxt/KaTeX_SansSerif-Italic.YYjJ1zSn.ttf +0 -0
  51. package/assets/gui/_nuxt/KaTeX_SansSerif-Regular.BNo7hRIc.ttf +0 -0
  52. package/assets/gui/_nuxt/KaTeX_SansSerif-Regular.CS6fqUqJ.woff +0 -0
  53. package/assets/gui/_nuxt/KaTeX_SansSerif-Regular.DDBCnlJ7.woff2 +0 -0
  54. package/assets/gui/_nuxt/KaTeX_Script-Regular.C5JkGWo-.ttf +0 -0
  55. package/assets/gui/_nuxt/KaTeX_Script-Regular.D3wIWfF6.woff2 +0 -0
  56. package/assets/gui/_nuxt/KaTeX_Script-Regular.D5yQViql.woff +0 -0
  57. package/assets/gui/_nuxt/KaTeX_Size1-Regular.C195tn64.woff +0 -0
  58. package/assets/gui/_nuxt/KaTeX_Size1-Regular.Dbsnue_I.ttf +0 -0
  59. package/assets/gui/_nuxt/KaTeX_Size1-Regular.mCD8mA8B.woff2 +0 -0
  60. package/assets/gui/_nuxt/KaTeX_Size2-Regular.B7gKUWhC.ttf +0 -0
  61. package/assets/gui/_nuxt/KaTeX_Size2-Regular.Dy4dx90m.woff2 +0 -0
  62. package/assets/gui/_nuxt/KaTeX_Size2-Regular.oD1tc_U0.woff +0 -0
  63. package/assets/gui/_nuxt/KaTeX_Size3-Regular.CTq5MqoE.woff +0 -0
  64. package/assets/gui/_nuxt/KaTeX_Size3-Regular.DgpXs0kz.ttf +0 -0
  65. package/assets/gui/_nuxt/KaTeX_Size4-Regular.BF-4gkZK.woff +0 -0
  66. package/assets/gui/_nuxt/KaTeX_Size4-Regular.DWFBv043.ttf +0 -0
  67. package/assets/gui/_nuxt/KaTeX_Size4-Regular.Dl5lxZxV.woff2 +0 -0
  68. package/assets/gui/_nuxt/KaTeX_Typewriter-Regular.C0xS9mPB.woff +0 -0
  69. package/assets/gui/_nuxt/KaTeX_Typewriter-Regular.CO6r4hn1.woff2 +0 -0
  70. package/assets/gui/_nuxt/KaTeX_Typewriter-Regular.D3Ib7_Hf.ttf +0 -0
  71. package/assets/gui/_nuxt/ULB_ug-y.js +2511 -0
  72. package/assets/gui/_nuxt/_baseUniq-BP57Elhf.js +1 -0
  73. package/assets/gui/_nuxt/arc-Y1WZXZUo.js +1 -0
  74. package/assets/gui/_nuxt/architectureDiagram-VXUJARFQ-aO7Rb24c.js +36 -0
  75. package/assets/gui/_nuxt/blockDiagram-VD42YOAC-B3uFbaWi.js +122 -0
  76. package/assets/gui/_nuxt/builds/latest.json +1 -0
  77. package/assets/gui/_nuxt/builds/meta/23cb514b-b517-423e-9289-35684b02b352.json +1 -0
  78. package/assets/gui/_nuxt/c4Diagram-YG6GDRKO-DHJl7yiB.js +10 -0
  79. package/assets/gui/_nuxt/channel-DpNic2cF.js +1 -0
  80. package/assets/gui/_nuxt/chunk-4BX2VUAB-CWm83ERH.js +1 -0
  81. package/assets/gui/_nuxt/chunk-55IACEB6-Du_n8jC4.js +1 -0
  82. package/assets/gui/_nuxt/chunk-B4BG7PRW-BTzCu0pf.js +165 -0
  83. package/assets/gui/_nuxt/chunk-DI55MBZ5-DBddr-cr.js +220 -0
  84. package/assets/gui/_nuxt/chunk-FMBD7UC4-8fDVfHv2.js +15 -0
  85. package/assets/gui/_nuxt/chunk-QN33PNHL-CR7hsK0L.js +1 -0
  86. package/assets/gui/_nuxt/chunk-QZHKN3VN-DaFYAnGP.js +1 -0
  87. package/assets/gui/_nuxt/chunk-TZMSLE5B-BjCFOyRb.js +1 -0
  88. package/assets/gui/_nuxt/classDiagram-2ON5EDUG-CqyEtcjO.js +1 -0
  89. package/assets/gui/_nuxt/classDiagram-v2-WZHVMYZB-CqyEtcjO.js +1 -0
  90. package/assets/gui/_nuxt/clone-DCFnqWq9.js +1 -0
  91. package/assets/gui/_nuxt/cose-bilkent-S5V4N54A-CA9LZ8Zj.js +1 -0
  92. package/assets/gui/_nuxt/css.worker-BL6kSyU1.js +93 -0
  93. package/assets/gui/_nuxt/cytoscape.esm-5J0xJHOV.js +321 -0
  94. package/assets/gui/_nuxt/dagre-6UL2VRFP-CBQSftkS.js +4 -0
  95. package/assets/gui/_nuxt/defaultLocale-CCNgq9ws.js +1 -0
  96. package/assets/gui/_nuxt/diagram-PSM6KHXK-DsTyKY6m.js +24 -0
  97. package/assets/gui/_nuxt/diagram-QEK2KX5R-D9APFlGs.js +43 -0
  98. package/assets/gui/_nuxt/diagram-S2PKOQOG-IKVKLS18.js +24 -0
  99. package/assets/gui/_nuxt/editor.worker-BDzEcYpU.js +26 -0
  100. package/assets/gui/_nuxt/entry.CEtVlF9V.css +1 -0
  101. package/assets/gui/_nuxt/erDiagram-Q2GNP2WA-CH15dTWb.js +60 -0
  102. package/assets/gui/_nuxt/error-404.DF6r4GP7.css +1 -0
  103. package/assets/gui/_nuxt/error-500.Bo5pzFPU.css +1 -0
  104. package/assets/gui/_nuxt/flowDiagram-NV44I4VS-zt5vccS4.js +162 -0
  105. package/assets/gui/_nuxt/ganttDiagram-JELNMOA3-DvD26RKf.js +267 -0
  106. package/assets/gui/_nuxt/gitGraphDiagram-NY62KEGX-BEF64eCN.js +65 -0
  107. package/assets/gui/_nuxt/graph-CvZayWR8.js +1 -0
  108. package/assets/gui/_nuxt/html.worker-BJUDQ4P_.js +470 -0
  109. package/assets/gui/_nuxt/index.BGLZpmxK.css +1 -0
  110. package/assets/gui/_nuxt/infoDiagram-WHAUD3N6-BqqPKCej.js +2 -0
  111. package/assets/gui/_nuxt/init-Gi6I4Gst.js +1 -0
  112. package/assets/gui/_nuxt/journeyDiagram-XKPGCS4Q-D37U2RLk.js +139 -0
  113. package/assets/gui/_nuxt/json.worker-CbPvaBPT.js +58 -0
  114. package/assets/gui/_nuxt/kanban-definition-3W4ZIXB7-o0rG_onk.js +89 -0
  115. package/assets/gui/_nuxt/katex-XbL3y5x-.js +261 -0
  116. package/assets/gui/_nuxt/layout-BVt2QQzT.js +1 -0
  117. package/assets/gui/_nuxt/linear-CjtgffNP.js +1 -0
  118. package/assets/gui/_nuxt/min-CuqY3rK3.js +1 -0
  119. package/assets/gui/_nuxt/mindmap-definition-VGOIOE7T-4BDFzlaj.js +68 -0
  120. package/assets/gui/_nuxt/ordinal-Cboi1Yqb.js +1 -0
  121. package/assets/gui/_nuxt/pieDiagram-ADFJNKIX-DOY587kc.js +30 -0
  122. package/assets/gui/_nuxt/quadrantDiagram-AYHSOK5B-C0uhckN3.js +7 -0
  123. package/assets/gui/_nuxt/requirementDiagram-UZGBJVZJ-D0pHyv4t.js +64 -0
  124. package/assets/gui/_nuxt/sankeyDiagram-TZEHDZUN-B9uFH2wG.js +10 -0
  125. package/assets/gui/_nuxt/sequenceDiagram-WL72ISMW-CmLKcFaQ.js +145 -0
  126. package/assets/gui/_nuxt/stateDiagram-FKZM4ZOC-DXLM32ee.js +1 -0
  127. package/assets/gui/_nuxt/stateDiagram-v2-4FDKWEC3-Bwg-9iwU.js +1 -0
  128. package/assets/gui/_nuxt/timeline-definition-IT6M3QCI-Bz55IcKP.js +61 -0
  129. package/assets/gui/_nuxt/treemap-KMMF4GRG-D3QBlffy.js +128 -0
  130. package/assets/gui/_nuxt/ts.worker-BkEcNiLV.js +67718 -0
  131. package/assets/gui/_nuxt/vendor-katex.ltkKqWhd.css +1 -0
  132. package/assets/gui/_nuxt/vendor-markstream.D6yyxftE.css +1 -0
  133. package/assets/gui/_nuxt/xychartDiagram-PRI3JC2R-CPU3Crx9.js +7 -0
  134. package/assets/gui/favicon.ico +0 -0
  135. package/assets/gui/index.html +12 -0
  136. package/assets/gui/robots.txt +2 -0
  137. package/dist/cli.mjs +716 -719
  138. package/dist/google.json +1 -1
  139. package/dist/models/aihubmix.json +1 -1
  140. package/dist/models/openrouter.json +1 -1
  141. package/dist/models/siliconflow-com.json +1 -1
  142. package/dist/models/siliconflow.json +1 -1
  143. package/dist/models/zenmux.json +1 -1
  144. package/dist/openai.json +1 -1
  145. package/dist/xai.json +1 -1
  146. package/dist/zai-coding-plan.json +1 -1
  147. package/dist/zai.json +1 -1
  148. package/dist/zhipuai-coding-plan.json +1 -1
  149. package/dist/zhipuai.json +1 -1
  150. package/package.json +2 -2
package/README.md CHANGED
@@ -2,11 +2,15 @@
2
2
 
3
3
  # Dimcode CLI
4
4
 
5
- > A powerful AI agent CLI with a beautiful interactive terminal UI (TUI)
5
+ > An AI coding agent CLI and terminal coding assistant with a beautiful interactive TUI
6
6
 
7
7
  [![npm version](https://badge.fury.io/js/dimcode.svg)](https://badge.fury.io/js/dimcode)
8
8
 
9
- Dimcode is a command-line interface for AI-powered coding assistance. It helps you move fast with:
9
+ Dimcode is an AI coding CLI for terminal-first developers who want fast code generation, refactoring, repo search, code review, and agent-style workflows directly in the shell.
10
+
11
+ If you are searching for a CLI coding tool similar to Claude Code, Codex, OpenCode, or Cursor's terminal workflow, Dimcode is built for the same terminal-native use case while adding a polished multi-session TUI, tool approvals, MCP support, and flexible provider setup.
12
+
13
+ Dimcode helps you move fast with:
10
14
 
11
15
  - 🎨 **Beautiful TUI** - Modern terminal interface built with Vue 3
12
16
 
@@ -25,6 +29,18 @@ Dimcode is a command-line interface for AI-powered coding assistance. It helps y
25
29
  | Weekly downloads | [![npm downloads (week)](https://img.shields.io/npm/dw/dimcode)](https://www.npmjs.com/package/dimcode) |
26
30
  | Total downloads | [![npm downloads (total)](https://img.shields.io/npm/dt/dimcode)](https://www.npmjs.com/package/dimcode) |
27
31
 
32
+ ## Why Developers Search for Dimcode
33
+
34
+ Dimcode is designed for developers looking for:
35
+
36
+ - An **AI coding CLI** for daily programming tasks
37
+ - A **terminal coding assistant** for large codebases
38
+ - A **Claude Code alternative** with a richer TUI
39
+ - A **Codex CLI alternative** for multi-session work
40
+ - An **OpenCode alternative** with built-in tool approvals
41
+ - A **Cursor alternative for terminal users** who prefer staying in the shell
42
+ - A **CLI AI agent** for refactors, debugging, repo Q&A, and web research
43
+
28
44
  ## ⚡ Get Started in 30 Seconds
29
45
 
30
46
  1. Install the CLI
@@ -47,6 +63,8 @@ Create a React component for a todo list
47
63
 
48
64
  ## 📦 Installation
49
65
 
66
+ Install Dimcode as your AI coding assistant CLI:
67
+
50
68
  ### Global Installation (Recommended)
51
69
 
52
70
  ```bash
@@ -146,29 +164,45 @@ Type slash commands directly in the input field:
146
164
  - `Tab` moves focus to the next input field; `Shift+Tab` moves to the previous
147
165
  - The CLI is mouse-friendly for selection, scrolling, and clicking buttons/controls
148
166
 
167
+ ## Dimcode vs Other AI Coding Tools
168
+
169
+ If you are comparing Dimcode with Claude Code, Codex, OpenCode, or Cursor, the main difference is that Dimcode focuses on a terminal-first agent experience with:
170
+
171
+ - **Interactive TUI workflows** instead of a minimal chat-only shell
172
+ - **Multi-session conversation management** for parallel coding tasks
173
+ - **Tool approvals and built-in tools** for safer repo operations
174
+ - **Flexible provider and model configuration** for custom setups
175
+ - **ACP / MCP connectivity** for editor and tool integrations
176
+
177
+ That makes it a good fit for developers who want an AI code assistant in the terminal, but need more control and visibility than a basic CLI chat loop.
178
+
149
179
  ## ⚙️ Configuration
150
180
 
151
- ### Environment Variables
181
+ ### Connect a Provider
152
182
 
153
- Create a `.env` file in your working directory or set environment variables:
183
+ Use one of these flows:
184
+
185
+ 1. Launch the CLI:
154
186
 
155
187
  ```bash
156
- # OpenAI Configuration
157
- OPENAI_API_KEY=your_api_key_here
158
- OPENAI_BASE_URL=https://api.openai.com/v1 # Optional
159
- DIMCODE_MODEL=deepseek-v3.1 # Default model
188
+ dim
189
+ ```
190
+
191
+ 2. Open provider setup:
192
+
193
+ ```text
194
+ /connect
195
+ ```
160
196
 
161
- # Serper API for web search (optional)
162
- SERPER_API_KEY=your_serper_key_here
197
+ 3. Choose your provider and model, then start chatting.
163
198
 
164
- # Custom home directory (optional)
165
- DIMCODE_HOME=~/.dimcode
199
+ You can also open settings any time with:
166
200
 
167
- # Debug mode (optional)
168
- DIMCODE_DEBUG=1
201
+ ```text
202
+ /settings
169
203
  ```
170
204
 
171
- **Note**: For backward compatibility, `GOATCHAIN_` prefix is also supported (e.g., `GOATCHAIN_MODEL`, `GOATCHAIN_DEBUG`).
205
+ or press `Ctrl+K`.
172
206
 
173
207
  ### First-time Setup
174
208
 
@@ -178,7 +212,145 @@ On first launch, Dimcode will guide you through:
178
212
  2. **Model Selection** - Choose your preferred AI model
179
213
  3. **Tool Approvals** - Configure which tools can run automatically
180
214
 
181
- Settings are stored in `~/.dimcode/dimcode/` directory by default (can be customized via `DIMCODE_HOME` environment variable).
215
+ ### Codex OAuth
216
+
217
+ If you want to use Codex OAuth, you can sign in from the CLI:
218
+
219
+ ```bash
220
+ dim auth codex
221
+ ```
222
+
223
+ Inside the app, `/codexlogin` opens the same login flow.
224
+
225
+ ### Common CLI Setup Tasks
226
+
227
+ - Use `/connect` to add or switch a provider
228
+ - Use `/settings` to manage custom provider settings
229
+ - Use `/models` to change the active model
230
+ - Use `/approvals` to control tool execution permissions
231
+ - Use `/tool-settings` to configure tool-specific settings such as WebSearch
232
+ - Use `/mcp` to manage MCP integrations
233
+
234
+ Settings and local session data are stored in `~/.dimcode/dimcode/` by default.
235
+
236
+ ### Skills Directory
237
+
238
+ Dimcode automatically discovers skills from both global and project-local directories:
239
+
240
+ - Global: `~/.agents/skills/`
241
+ - Project-local: `<your-project>/.agents/skills/`
242
+ - Compatibility paths also supported: `~/.claude/skills/` and `<your-project>/.claude/skills/`
243
+
244
+ Each skill should live in its own folder with a `SKILL.md` file:
245
+
246
+ ```text
247
+ ~/.agents/skills/my-skill/SKILL.md
248
+ <your-project>/.agents/skills/my-skill/SKILL.md
249
+ ```
250
+
251
+ If the same skill name exists in multiple places, project-local skills override global skills, and `.agents/skills` takes priority over `.claude/skills`.
252
+
253
+ ### Web Search Key
254
+
255
+ To enable web search in the CLI, open:
256
+
257
+ ```text
258
+ /tool-settings
259
+ ```
260
+
261
+ Then paste your WebSearch / Serper API key into the `WebSearch API Key` field and save.
262
+
263
+ By default, Dimcode stores tool settings in:
264
+
265
+ ```text
266
+ ~/.dimcode/tools.json
267
+ ```
268
+
269
+ If you prefer environment variables for advanced setups, Dimcode also checks:
270
+
271
+ - `DIMCODE_WEBSEARCH_KEY`
272
+ - `SERPER_API_KEY`
273
+
274
+ ### MCP Configuration
275
+
276
+ To configure MCP servers from the CLI, open:
277
+
278
+ ```text
279
+ /mcp
280
+ ```
281
+
282
+ Paste MCP JSON into the editor, then use the built-in format / test actions before saving. Example:
283
+
284
+ ```json
285
+ {
286
+ "mcpServers": {
287
+ "context7": {
288
+ "url": "https://mcp.context7.com/mcp",
289
+ "headers": {
290
+ "CONTEXT7_API_KEY": "YOUR_API_KEY"
291
+ }
292
+ }
293
+ }
294
+ }
295
+ ```
296
+
297
+ For Context7, this is the recommended hosted HTTP setup. If your MCP client supports MCP OAuth, Context7's official OAuth endpoint is:
298
+
299
+ ```text
300
+ https://mcp.context7.com/mcp/oauth
301
+ ```
302
+
303
+ In Dimcode, use the standard remote HTTP endpoint plus auth headers unless native MCP OAuth support is added for remote servers.
304
+
305
+ CLI MCP settings are stored locally in:
306
+
307
+ ```text
308
+ ~/.dimcode/tools.json
309
+ ```
310
+
311
+ If you use `DIMCODE_HOME`, replace `~/.dimcode` with that directory.
312
+
313
+ You can also skip `/mcp` and edit that file directly. The file format is:
314
+
315
+ ```json
316
+ {
317
+ "version": 1,
318
+ "updatedAt": 1735689600000,
319
+ "settings": {
320
+ "mcpServers": [
321
+ {
322
+ "id": "mcp_context7",
323
+ "name": "context7",
324
+ "transport": "http",
325
+ "url": "https://mcp.context7.com/mcp",
326
+ "headers": {
327
+ "CONTEXT7_API_KEY": "YOUR_API_KEY"
328
+ }
329
+ }
330
+ ]
331
+ }
332
+ }
333
+ ```
334
+
335
+ Use `/mcp` when you want the friendlier editor and connection test UI. Edit `~/.dimcode/tools.json` directly when you want to script, sync, or manage MCP config as a file.
336
+
337
+ ## ACP Server
338
+
339
+ Dimcode can run as an ACP server for editors and tools such as Zed or OpenClaw `acpx`.
340
+
341
+ Preferred commands:
342
+
343
+ ```bash
344
+ dim acp
345
+ ```
346
+
347
+ ```bash
348
+ node /absolute/path/to/repo/scripts/acpx-agent.mjs
349
+ ```
350
+
351
+ For GUI launchers, prefer absolute paths instead of relying on shell `PATH`.
352
+ Do not configure `bun run acp-server` in `acpx` or editor settings; it only works when the cwd is the repository root.
353
+ If you use Codex OAuth, run `dim auth codex` once first. If you use a custom provider, make sure `~/.dimcode/config.json` already contains a valid provider setup.
182
354
 
183
355
  ## 🔧 Built-in Tools
184
356
 
@@ -211,7 +383,7 @@ Dimcode comes with powerful built-in tools:
211
383
 
212
384
  ### Skills
213
385
 
214
- Skills are specialized capabilities that can be activated to extend DimCode's functionality. Built-in skills include:
386
+ Skills are specialized capabilities that can be activated to extend Dimcode's functionality. Built-in skills include:
215
387
 
216
388
  - **skill-installer** - Install Codex skills from curated list or GitHub repos
217
389
  - **skill-creator** - Guide for creating effective skills
@@ -239,6 +411,13 @@ dim
239
411
  # Then type: "Search for the latest best practices in TypeScript 5.3"
240
412
  ```
241
413
 
414
+ ### Compare CLI Coding Agents
415
+
416
+ ```bash
417
+ dim
418
+ # Then type: "Compare Dimcode with Claude Code, Codex, OpenCode, and Cursor for terminal-first development"
419
+ ```
420
+
242
421
  ## 🔐 Security & Privacy
243
422
 
244
423
  - **Tool Approvals**: By default, sensitive operations (file writes, shell commands) require user approval
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>GoatChain GUI</title><script type="text/javascript">
2
+ (function() {
3
+ try {
4
+ const savedTheme = localStorage.getItem('goatchain-theme');
5
+ const prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
6
+ const shouldUseDark = savedTheme === 'dark' || (!savedTheme && prefersDark);
7
+ if (shouldUseDark) {
8
+ document.documentElement.classList.add('dark');
9
+ }
10
+ } catch (e) {}
11
+ })();
12
+ </script><link rel="stylesheet" href="/_nuxt/entry.CEtVlF9V.css" crossorigin><link rel="stylesheet" href="/_nuxt/vendor-markstream.D6yyxftE.css" crossorigin><link rel="stylesheet" href="/_nuxt/vendor-katex.ltkKqWhd.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DTsXV384.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Cd_MtzEZ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DLcXGJ1M.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/ULB_ug-y.js"><script type="module" src="/_nuxt/DTsXV384.js" crossorigin></script><meta name="description" content="GoatChain GUI - shared event stream viewer and query console."><script id="unhead:payload" type="application/json">{"title":"GoatChain GUI"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"23cb514b-b517-423e-9289-35684b02b352",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1771915830058,false]</script></body></html>
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>GoatChain GUI</title><script type="text/javascript">
2
+ (function() {
3
+ try {
4
+ const savedTheme = localStorage.getItem('goatchain-theme');
5
+ const prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
6
+ const shouldUseDark = savedTheme === 'dark' || (!savedTheme && prefersDark);
7
+ if (shouldUseDark) {
8
+ document.documentElement.classList.add('dark');
9
+ }
10
+ } catch (e) {}
11
+ })();
12
+ </script><link rel="stylesheet" href="/_nuxt/entry.CEtVlF9V.css" crossorigin><link rel="stylesheet" href="/_nuxt/vendor-markstream.D6yyxftE.css" crossorigin><link rel="stylesheet" href="/_nuxt/vendor-katex.ltkKqWhd.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DTsXV384.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Cd_MtzEZ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DLcXGJ1M.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/ULB_ug-y.js"><script type="module" src="/_nuxt/DTsXV384.js" crossorigin></script><meta name="description" content="GoatChain GUI - shared event stream viewer and query console."><script id="unhead:payload" type="application/json">{"title":"GoatChain GUI"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"23cb514b-b517-423e-9289-35684b02b352",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1771915830059,false]</script></body></html>
@@ -0,0 +1 @@
1
+ import{u as s,c as a,o as i,a as t,t as n,b as u,w as c,d as l,e as d}from"./Cd_MtzEZ.js";import{_ as f}from"./DlAUqK2U.js";const p={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},m={class:"max-w-520px text-center"},h=["textContent"],b=["textContent"],x=["textContent"],g={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:404},statusText:{type:String,default:"Page not found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(e){const r=e;return s({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,w)=>{const o=d;return i(),a("div",p,[t("div",m,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:n(e.status)},null,8,h),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:n(e.statusText)},null,8,b),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:n(e.description)},null,8,x),t("div",g,[u(o,{to:"/",class:"font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"},{default:c(()=>[l(n(e.backHome),1)]),_:1})])])])}}},N=f(y,[["__scopeId","data-v-c8d5998f"]]);export{N as default};