@maincode-ai/matilda-code 0.21.13 → 0.22.0-nightly.20261102.db95a17c4
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.
- package/chunks/agent-4GIFJO5G.js +3 -0
- package/chunks/agent-headless-DXJESNI4.js +3 -0
- package/chunks/{askUserQuestion-BNSWGD26.js → askUserQuestion-7PM7G5YF.js} +3 -3
- package/chunks/ca-JKEHLTNL.js +23 -0
- package/chunks/chunk-225CZWD7.js +89 -0
- package/chunks/chunk-2QIC3OCV.js +9 -0
- package/chunks/chunk-33UVJMVE.js +120 -0
- package/chunks/chunk-35BBGAHD.js +2604 -0
- package/chunks/{chunk-DHDD5YJC.js → chunk-4KS2KEXK.js} +69 -69
- package/chunks/chunk-4MLFC664.js +3 -0
- package/chunks/{chunk-RNKDFE2S.js → chunk-5B2QERWR.js} +1 -1
- package/chunks/chunk-66WJUORA.js +8 -0
- package/chunks/chunk-6U5VOTWB.js +56 -0
- package/chunks/chunk-7MUWF4DK.js +80 -0
- package/chunks/{chunk-6M5G5FBH.js → chunk-BVTXZTL3.js} +1 -1
- package/chunks/chunk-CVGGYRNK.js +31 -0
- package/chunks/chunk-DUB7JMQV.js +13 -0
- package/chunks/chunk-ESNPNLMQ.js +8 -0
- package/chunks/chunk-GT6MSEK4.js +3 -0
- package/chunks/chunk-HEJO7OBH.js +3 -0
- package/chunks/chunk-JNHB73E3.js +9 -0
- package/chunks/chunk-JR5CSCG4.js +8 -0
- package/chunks/{chunk-EZDV7A76.js → chunk-KRVXBQRC.js} +1 -1
- package/chunks/{chunk-AOOZREGV.js → chunk-LBQNFSZ2.js} +1 -1
- package/chunks/{chunk-MEV5XQI2.js → chunk-QBXL5UBB.js} +1 -1
- package/chunks/{chunk-P5TG5CON.js → chunk-QDWS3VZT.js} +1 -1
- package/chunks/{chunk-QZI2ZGZY.js → chunk-QMZREVY3.js} +1 -1
- package/chunks/chunk-QUYQBKDE.js +8 -0
- package/chunks/chunk-QXSBPCBA.js +8 -0
- package/chunks/chunk-S2E5ZRPH.js +14 -0
- package/chunks/chunk-TUKNB5CQ.js +33 -0
- package/chunks/chunk-UM6CLO7D.js +7 -0
- package/chunks/{chunk-6T2GIM76.js → chunk-VVUY7VKR.js} +1 -1
- package/chunks/{chunk-5OHGYMKP.js → chunk-WENVHSCJ.js} +1 -1
- package/chunks/{chunk-27Q5KW3A.js → chunk-ZABH4QIL.js} +10 -10
- package/chunks/chunk-ZSGBDQXU.js +11 -0
- package/chunks/{computer-use-J4GAM4M6.js → computer-use-IZGLKENV.js} +1 -1
- package/chunks/{cron-create-IDWSZENI.js → cron-create-BTSJUVNT.js} +1 -1
- package/chunks/cron-delete-PTE3RC2W.js +3 -0
- package/chunks/cron-list-SINKHOIZ.js +5 -0
- package/chunks/de-GMGNR5CZ.js +23 -0
- package/chunks/{devtools-XRQ4YJ5S.js → devtools-7YNCRYZV.js} +1 -1
- package/chunks/{chunk-OOEH6ZSV.js → dist-UWUWLWTO.js} +2 -2
- package/chunks/{edit-X2S2ZXRN.js → edit-MDQEZ7BA.js} +1 -1
- package/chunks/en-3NQMLVKW.js +23 -0
- package/chunks/{enter-worktree-TUCGNCLO.js → enter-worktree-SZK65VXF.js} +1 -1
- package/chunks/enterPlanMode-5VWIIVHI.js +18 -0
- package/chunks/{exit-worktree-7FLITFZI.js → exit-worktree-OBHUK4TF.js} +1 -1
- package/chunks/{exitPlanMode-O5UUJ3GM.js → exitPlanMode-SXFQC4G2.js} +2 -2
- package/chunks/fr-WS3EBB36.js +23 -0
- package/chunks/{getMachineId-bsd-ZYBNK2JG.js → getMachineId-bsd-ETKQTB6C.js} +1 -1
- package/chunks/{getMachineId-darwin-CM2MQGUI.js → getMachineId-darwin-AKNRWOWB.js} +1 -1
- package/chunks/{getMachineId-linux-SYE2KMCW.js → getMachineId-linux-2QSD7FTP.js} +1 -1
- package/chunks/{getMachineId-unsupported-6IHVG2XO.js → getMachineId-unsupported-UXSV7I24.js} +1 -1
- package/chunks/{getMachineId-win-S3J3JSUM.js → getMachineId-win-4MTFXGP3.js} +1 -1
- package/chunks/glob-JKIZ3ZJQ.js +22 -0
- package/chunks/{goal-tools-YQOA6OKU.js → goal-tools-YJMECZYD.js} +3 -3
- package/chunks/{grep-VAB2VSXM.js → grep-Q4T5AE6K.js} +1 -1
- package/chunks/ja-GBCDQ43R.js +23 -0
- package/chunks/keychain-token-storage-4PY5J6U6.js +3 -0
- package/chunks/ls-BQCCCPIX.js +15 -0
- package/chunks/{lsp-NGLDRHZU.js → lsp-MHJJJ7K3.js} +1 -1
- package/chunks/mcp-client-CSF5QZEY.js +3 -0
- package/chunks/monitor-JUAVWVLY.js +32 -0
- package/chunks/{multipart-parser-JI75T2O5.js → multipart-parser-FKHYAVGR.js} +1 -1
- package/chunks/notebook-edit-NNOMEUER.js +17 -0
- package/chunks/openaiContentGenerator-DTKOYRBL.js +47 -0
- package/chunks/pt-VID6J2CM.js +23 -0
- package/chunks/read-file-4EX4B3TB.js +3 -0
- package/chunks/ripGrep-JL6UDNCR.js +3 -0
- package/chunks/ru-EB6V6EAN.js +23 -0
- package/chunks/scheduler-GCGZAI7D.js +8 -0
- package/chunks/send-message-S4P5QKSW.js +8 -0
- package/chunks/shell-J7EX7B57.js +3 -0
- package/chunks/{skill-ETQM5NI3.js → skill-V6NTJ4O4.js} +1 -1
- package/chunks/src-LZEU4AYF.js +5 -0
- package/chunks/symbol-search-5QJNW7PY.js +19 -0
- package/chunks/{syntheticOutput-WZDPECYS.js → syntheticOutput-3XIAIUIR.js} +1 -1
- package/chunks/task-create-KGPY7O4J.js +3 -0
- package/chunks/{task-detach-TBAVUOTC.js → task-detach-ZD3A7225.js} +1 -1
- package/chunks/task-list-P7GQWYAD.js +9 -0
- package/chunks/{task-stop-HDSARSJ6.js → task-stop-VFJRBA6P.js} +1 -1
- package/chunks/{task-update-MW2VT2XV.js → task-update-OOMH4WRA.js} +1 -1
- package/chunks/{team-create-VMYNLZCC.js → team-create-POMZOM44.js} +2 -2
- package/chunks/team-delete-ZJBEQDPE.js +8 -0
- package/chunks/todoWrite-EWYRFK7W.js +3 -0
- package/chunks/{tool-search-WX6FOE35.js → tool-search-5Z7MO565.js} +1 -1
- package/chunks/{web-fetch-CKYBHGLF.js → web-fetch-M4TUYAFG.js} +17 -17
- package/chunks/web-search-CBKF36JM.js +26 -0
- package/chunks/{workflow-WBSRQG3N.js → workflow-F57TWWPS.js} +2 -2
- package/chunks/write-file-UK4BVL3M.js +15 -0
- package/cli.js +642 -678
- package/examples/starter/README.md +0 -3
- package/locales/ca.js +3 -87
- package/locales/de.js +3 -91
- package/locales/en.js +3 -91
- package/locales/fr.js +3 -88
- package/locales/ja.js +3 -92
- package/locales/pt.js +3 -92
- package/locales/ru.js +3 -91
- package/package.json +2 -2
- package/sandbox-macos-permissive-proxied.sb +1 -1
- package/sandbox-macos-restrictive-closed.sb +14 -1
- package/sandbox-macos-restrictive-open.sb +14 -1
- package/sandbox-macos-restrictive-proxied.sb +15 -2
- package/bundled/mainy/SKILL.md +0 -157
- package/bundled/mainy/docs/_meta.ts +0 -32
- package/bundled/mainy/docs/common-workflow.md +0 -571
- package/bundled/mainy/docs/configuration/_meta.ts +0 -7
- package/bundled/mainy/docs/configuration/auth.md +0 -82
- package/bundled/mainy/docs/configuration/matilda-ignore.md +0 -55
- package/bundled/mainy/docs/configuration/model-providers.md +0 -516
- package/bundled/mainy/docs/configuration/settings.md +0 -818
- package/bundled/mainy/docs/configuration/themes.md +0 -199
- package/bundled/mainy/docs/configuration/trusted-folders.md +0 -67
- package/bundled/mainy/docs/extension/_meta.ts +0 -9
- package/bundled/mainy/docs/extension/extension-releasing.md +0 -204
- package/bundled/mainy/docs/extension/getting-started-extensions.md +0 -299
- package/bundled/mainy/docs/extension/introduction.md +0 -338
- package/bundled/mainy/docs/features/_meta.ts +0 -27
- package/bundled/mainy/docs/features/approval-mode.md +0 -388
- package/bundled/mainy/docs/features/arena.md +0 -219
- package/bundled/mainy/docs/features/auto-mode.md +0 -308
- package/bundled/mainy/docs/features/channels/_meta.ts +0 -5
- package/bundled/mainy/docs/features/channels/overview.md +0 -328
- package/bundled/mainy/docs/features/channels/plugins.md +0 -87
- package/bundled/mainy/docs/features/channels/telegram.md +0 -120
- package/bundled/mainy/docs/features/code-review.md +0 -291
- package/bundled/mainy/docs/features/commands.md +0 -528
- package/bundled/mainy/docs/features/dual-output.md +0 -627
- package/bundled/mainy/docs/features/followup-suggestions.md +0 -109
- package/bundled/mainy/docs/features/headless.md +0 -448
- package/bundled/mainy/docs/features/hooks.md +0 -1308
- package/bundled/mainy/docs/features/language.md +0 -144
- package/bundled/mainy/docs/features/lsp.md +0 -496
- package/bundled/mainy/docs/features/markdown-rendering.md +0 -183
- package/bundled/mainy/docs/features/mcp.md +0 -423
- package/bundled/mainy/docs/features/memory.md +0 -185
- package/bundled/mainy/docs/features/sandbox.md +0 -249
- package/bundled/mainy/docs/features/scheduled-tasks.md +0 -139
- package/bundled/mainy/docs/features/skills.md +0 -347
- package/bundled/mainy/docs/features/status-line.md +0 -397
- package/bundled/mainy/docs/features/structured-output.md +0 -309
- package/bundled/mainy/docs/features/sub-agents.md +0 -737
- package/bundled/mainy/docs/features/tips.md +0 -54
- package/bundled/mainy/docs/features/token-caching.md +0 -29
- package/bundled/mainy/docs/features/tool-use-summaries.md +0 -178
- package/bundled/mainy/docs/features/worktree.md +0 -343
- package/bundled/mainy/docs/ide-integration/_meta.ts +0 -4
- package/bundled/mainy/docs/ide-integration/ide-companion-spec.md +0 -182
- package/bundled/mainy/docs/ide-integration/ide-integration.md +0 -144
- package/bundled/mainy/docs/integration-github-action.md +0 -241
- package/bundled/mainy/docs/integration-jetbrains.md +0 -81
- package/bundled/mainy/docs/integration-vscode.md +0 -39
- package/bundled/mainy/docs/integration-zed.md +0 -72
- package/bundled/mainy/docs/matilda-serve-deploy-local.md +0 -221
- package/bundled/mainy/docs/matilda-serve.md +0 -661
- package/bundled/mainy/docs/overview.md +0 -64
- package/bundled/mainy/docs/quickstart.md +0 -234
- package/bundled/mainy/docs/reference/_meta.ts +0 -3
- package/bundled/mainy/docs/reference/keyboard-shortcuts.md +0 -91
- package/bundled/mainy/docs/support/Uninstall.md +0 -65
- package/bundled/mainy/docs/support/_meta.ts +0 -6
- package/bundled/mainy/docs/support/tos-privacy.md +0 -94
- package/bundled/mainy/docs/support/troubleshooting.md +0 -127
- package/chunks/agent-SRAIVZEE.js +0 -3
- package/chunks/agent-headless-XRDOZESG.js +0 -3
- package/chunks/anthropicContentGenerator-LLDIKDMQ.js +0 -39
- package/chunks/ca-NPYL24ME.js +0 -25
- package/chunks/chunk-27HUYW23.js +0 -22
- package/chunks/chunk-2HTPVSGT.js +0 -3
- package/chunks/chunk-3B2HABK7.js +0 -30
- package/chunks/chunk-3MTZTNAU.js +0 -101
- package/chunks/chunk-3YLXGE6T.js +0 -8
- package/chunks/chunk-47XR7IMP.js +0 -8
- package/chunks/chunk-4F4DA5UI.js +0 -8
- package/chunks/chunk-4Q2SNBUH.js +0 -18
- package/chunks/chunk-6EQMZNIY.js +0 -8
- package/chunks/chunk-6I6VGTKD.js +0 -8
- package/chunks/chunk-DC7LAFZZ.js +0 -8
- package/chunks/chunk-DE3HKC2W.js +0 -9
- package/chunks/chunk-FWDMPRKU.js +0 -3
- package/chunks/chunk-G7R2XEEF.js +0 -7
- package/chunks/chunk-GOJCMVJJ.js +0 -8
- package/chunks/chunk-GTVCJCHR.js +0 -8
- package/chunks/chunk-IJEGHQ7Z.js +0 -32
- package/chunks/chunk-JCE3JAVC.js +0 -25
- package/chunks/chunk-KHHJYBR5.js +0 -9
- package/chunks/chunk-LUNDTQ3G.js +0 -8
- package/chunks/chunk-LWARA7JY.js +0 -37
- package/chunks/chunk-M53RP3YP.js +0 -31
- package/chunks/chunk-MTMU7JYZ.js +0 -11
- package/chunks/chunk-O44XK65C.js +0 -8
- package/chunks/chunk-OA56BXPD.js +0 -3
- package/chunks/chunk-PEKAUGYV.js +0 -2621
- package/chunks/chunk-PGUG43HG.js +0 -24
- package/chunks/chunk-PGXQZVLX.js +0 -8
- package/chunks/chunk-QKYGQLWC.js +0 -8
- package/chunks/chunk-QN6Y6NPA.js +0 -3
- package/chunks/chunk-RI54U73U.js +0 -56
- package/chunks/chunk-RPFSFS7Z.js +0 -39
- package/chunks/chunk-SDTWBD62.js +0 -8
- package/chunks/chunk-SOEIVSM5.js +0 -113
- package/chunks/chunk-SVSY6AWS.js +0 -59
- package/chunks/chunk-T2T2UEPY.js +0 -4
- package/chunks/chunk-TISQNFB5.js +0 -3
- package/chunks/chunk-TWJLOEAI.js +0 -31
- package/chunks/chunk-VI74YQQO.js +0 -8
- package/chunks/chunk-VYZOOSMP.js +0 -30
- package/chunks/chunk-W4QSMIWO.js +0 -9
- package/chunks/chunk-WC2VTVCE.js +0 -27
- package/chunks/chunk-YV3PUOBU.js +0 -65
- package/chunks/chunk-ZX34M2GF.js +0 -14
- package/chunks/contextCommand-5F5M7NA4.js +0 -3
- package/chunks/cron-delete-NQCDZDUI.js +0 -3
- package/chunks/cron-list-Z4XMC3TO.js +0 -5
- package/chunks/de-34YZHGC6.js +0 -25
- package/chunks/dist-7UYRLSLE.js +0 -3
- package/chunks/dist-PH6JW7XD.js +0 -42
- package/chunks/en-QLGMD6OS.js +0 -25
- package/chunks/enterPlanMode-SQEZAAIR.js +0 -18
- package/chunks/fileFromPath-7UCWPD4W.js +0 -3
- package/chunks/fr-EDNBQACJ.js +0 -25
- package/chunks/geminiContentGenerator-FIZFLPU3.js +0 -8
- package/chunks/glob-GSFTYAS2.js +0 -22
- package/chunks/ja-LV4RLM3M.js +0 -25
- package/chunks/keychain-token-storage-KQK6MNOJ.js +0 -3
- package/chunks/ls-IZJ3CKZY.js +0 -15
- package/chunks/matildaAgentContentGenerator-QQHPCFJ5.js +0 -8
- package/chunks/matildaContentGenerator-W7Z33ONU.js +0 -8
- package/chunks/matildaOAuth2-7COTQQR2.js +0 -3
- package/chunks/mcp-client-DXUNIEIB.js +0 -3
- package/chunks/monitor-4PFIGAGG.js +0 -32
- package/chunks/notebook-edit-MWJYAATJ.js +0 -17
- package/chunks/openaiContentGenerator-NDVJL6QL.js +0 -3
- package/chunks/pt-5SQ4DGL7.js +0 -25
- package/chunks/read-file-WPZKPXWA.js +0 -3
- package/chunks/ripGrep-7LZDZFTX.js +0 -3
- package/chunks/ru-7K24S53N.js +0 -25
- package/chunks/scheduler-DK2MVKXX.js +0 -8
- package/chunks/send-message-TCPX5UDU.js +0 -8
- package/chunks/serve-GSZPJI2O.js +0 -1026
- package/chunks/shell-PRS47PDP.js +0 -3
- package/chunks/src-UB7DZRYK.js +0 -3
- package/chunks/src-WZTRMETQ.js +0 -5
- package/chunks/symbol-search-HARHZ5AH.js +0 -19
- package/chunks/task-create-XRNIDT4T.js +0 -3
- package/chunks/task-list-Z6BDZZID.js +0 -9
- package/chunks/team-delete-F7QDC2TE.js +0 -8
- package/chunks/todoWrite-SCF5M24M.js +0 -3
- package/chunks/web-search-67DFNS5V.js +0 -26
- package/chunks/write-file-S5FAX4JJ.js +0 -15
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# Visual Studio Code
|
|
2
|
-
|
|
3
|
-
> The VS Code extension (Beta) lets you see Matilda's changes in real-time through a native graphical interface integrated directly into your IDE, making it easier to access and interact with Matilda Code.
|
|
4
|
-
|
|
5
|
-
<br/>
|
|
6
|
-
|
|
7
|
-
<video src="https://cloud.video.taobao.com/vod/IKKwfM-kqNI3OJjM_U8uMCSMAoeEcJhs6VNCQmZxUfk.mp4" controls width="800">
|
|
8
|
-
Your browser does not support the video tag.
|
|
9
|
-
</video>
|
|
10
|
-
|
|
11
|
-
### Features
|
|
12
|
-
|
|
13
|
-
- **Native IDE experience**: Dedicated Matilda Code sidebar panel accessed via the Matilda icon
|
|
14
|
-
- **Auto-accept edits mode**: Automatically apply Matilda's changes as they're made
|
|
15
|
-
- **File management**: @-mention files or attach files and images using the system file picker
|
|
16
|
-
- **Conversation history**: Access to past conversations
|
|
17
|
-
- **Multiple sessions**: Run multiple Matilda Code sessions simultaneously
|
|
18
|
-
|
|
19
|
-
### Requirements
|
|
20
|
-
|
|
21
|
-
- VS Code 1.85.0 or higher
|
|
22
|
-
|
|
23
|
-
### Installation
|
|
24
|
-
|
|
25
|
-
Download and install the extension from the [Visual Studio Code Extension Marketplace](https://marketplace.visualstudio.com/items?itemName=maincode.matilda-code-vscode-ide-companion).
|
|
26
|
-
|
|
27
|
-
## Troubleshooting
|
|
28
|
-
|
|
29
|
-
### Extension not installing
|
|
30
|
-
|
|
31
|
-
- Ensure you have VS Code 1.85.0 or higher
|
|
32
|
-
- Check that VS Code has permission to install extensions
|
|
33
|
-
- Try installing directly from the Marketplace website
|
|
34
|
-
|
|
35
|
-
### Matilda Code not responding
|
|
36
|
-
|
|
37
|
-
- Check your internet connection
|
|
38
|
-
- Start a new conversation to see if the issue persists
|
|
39
|
-
- [File an issue on GitHub](https://github.com/MaincodeHQ/matilda-code/issues) if the problem continues
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
# Zed Editor
|
|
2
|
-
|
|
3
|
-
> Zed Editor provides native support for AI coding assistants through the Agent Client Protocol (ACP). This integration allows you to use Matilda Code directly within Zed's interface with real-time code suggestions.
|
|
4
|
-
|
|
5
|
-

|
|
6
|
-
|
|
7
|
-
### Features
|
|
8
|
-
|
|
9
|
-
- **Native agent experience**: Integrated AI assistant panel within Zed's interface
|
|
10
|
-
- **Agent Client Protocol**: Full support for ACP enabling advanced IDE interactions
|
|
11
|
-
- **File management**: @-mention files to add them to the conversation context
|
|
12
|
-
- **Conversation history**: Access to past conversations within Zed
|
|
13
|
-
|
|
14
|
-
### Requirements
|
|
15
|
-
|
|
16
|
-
- Zed Editor (latest version recommended)
|
|
17
|
-
- Matilda Code CLI installed
|
|
18
|
-
|
|
19
|
-
### Installation
|
|
20
|
-
|
|
21
|
-
#### Install from ACP Registry (Recommend)
|
|
22
|
-
|
|
23
|
-
1. Install Matilda Code CLI:
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
npm install -g @maincode-ai/matilda-code
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
2. Download and install [Zed Editor](https://zed.dev/)
|
|
30
|
-
|
|
31
|
-
3. In Zed, click the **settings button** in the top right corner, select **"Add agent"**, choose **"Install from Registry"**, find **Matilda Code**, then click **Install**.
|
|
32
|
-
|
|
33
|
-

|
|
34
|
-
|
|
35
|
-

|
|
36
|
-
|
|
37
|
-
#### Manual Install
|
|
38
|
-
|
|
39
|
-
1. Install Matilda Code CLI:
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
npm install -g @maincode-ai/matilda-code
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
2. Download and install [Zed Editor](https://zed.dev/)
|
|
46
|
-
|
|
47
|
-
3. In Zed, click the **settings button** in the top right corner, select **"Add agent"**, choose **"Create a custom agent"**, and add the following configuration:
|
|
48
|
-
|
|
49
|
-
```json
|
|
50
|
-
"Matilda Code": {
|
|
51
|
-
"type": "custom",
|
|
52
|
-
"command": "matilda",
|
|
53
|
-
"args": ["--acp"],
|
|
54
|
-
"env": {}
|
|
55
|
-
}
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-

|
|
59
|
-
|
|
60
|
-
## Troubleshooting
|
|
61
|
-
|
|
62
|
-
### Agent not appearing
|
|
63
|
-
|
|
64
|
-
- Run `matilda --version` in terminal to verify installation
|
|
65
|
-
- Check that the JSON configuration is valid
|
|
66
|
-
- Restart Zed Editor
|
|
67
|
-
|
|
68
|
-
### Matilda Code not responding
|
|
69
|
-
|
|
70
|
-
- Check your internet connection
|
|
71
|
-
- Verify CLI works by running `matilda` in terminal
|
|
72
|
-
- [File an issue on GitHub](https://github.com/MaincodeHQ/matilda-code/issues) if the problem persists
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
# Local launch templates for `matilda serve` (v0.16-alpha)
|
|
2
|
-
|
|
3
|
-
Reference templates for running `matilda serve` as a long-lived background process on a developer workstation. Pairs with the [v0.16-alpha known limits](./matilda-serve.md#v016-alpha-known-limits) — local-only, single-user, BYO bearer token. Containerized / multi-host / TLS-fronted deployments defer to v0.16.x.
|
|
4
|
-
|
|
5
|
-
> **Audience**: dogfooding developers who want the daemon up across reboots, with logs going somewhere durable, and a clean `restart-on-failure` story. If you only need the daemon for the duration of a single shell session, plain `matilda serve` (foreground, Ctrl-C to stop) is fine.
|
|
6
|
-
|
|
7
|
-
## Generate a bearer token (once)
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
openssl rand -hex 32 > ~/.matilda-serve-token # user-managed, NOT a built-in path
|
|
11
|
-
chmod 600 ~/.matilda-serve-token
|
|
12
|
-
export MATILDA_SERVER_TOKEN="$(cat ~/.matilda-serve-token)"
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
The path / filename is yours to choose; v0.16-alpha does not auto-generate or auto-locate a token file (deferred to v0.16.x). See the [Authentication](./matilda-serve.md#authentication) section of the user guide for the canonical BYO setup.
|
|
16
|
-
|
|
17
|
-
> **Scope this `export` to the current shell session only.** Don't add it to `~/.bashrc` / `~/.zshrc` — a profile-level export exposes the bearer token to every process spawned from that shell (IDE subprocesses, browser debuggers, `npm` scripts from unrelated projects). For long-running setups, use the systemd `EnvironmentFile=` / launchd `EnvironmentVariables` mechanisms below — both scope the token to just the daemon process.
|
|
18
|
-
|
|
19
|
-
The daemon reads the bearer token from either `--token <value>` on the CLI or the `MATILDA_SERVER_TOKEN` env var (whitespace stripped from both). The TypeScript SDK's `DaemonClient` constructor falls back to `MATILDA_SERVER_TOKEN` when no `token` option is passed (PR 27 fallback — clients with the env var set never need to thread the value through their script).
|
|
20
|
-
|
|
21
|
-
One shell-level `export` covers both server boot and SDK client construction (just keep it scoped to the session, per the note above).
|
|
22
|
-
|
|
23
|
-
## Linux: systemd user unit
|
|
24
|
-
|
|
25
|
-
> **Find your `matilda` binary first.** The unit file's `ExecStart=` must hold an **absolute path** — service managers don't read your shell's `PATH`. Run `which matilda` to discover it. Common locations: `/usr/local/bin/matilda` (Linuxbrew, manual installs), `~/.nvm/versions/node/vX.Y.Z/bin/matilda` (nvm), `~/.fnm/aliases/default/bin/matilda` (fnm), `~/.volta/bin/matilda` (Volta). Substitute the actual path everywhere the templates below show `/PATH/TO/matilda`.
|
|
26
|
-
|
|
27
|
-
`~/.config/systemd/user/matilda-serve.service`:
|
|
28
|
-
|
|
29
|
-
```ini
|
|
30
|
-
[Unit]
|
|
31
|
-
Description=Matilda Code daemon (loopback HTTP + SSE)
|
|
32
|
-
After=network.target
|
|
33
|
-
|
|
34
|
-
[Service]
|
|
35
|
-
Type=simple
|
|
36
|
-
# Replace with your project; %h expands to $HOME under user units.
|
|
37
|
-
WorkingDirectory=%h/your-project
|
|
38
|
-
# Run `which matilda` to find the absolute path. systemd does NOT read $PATH.
|
|
39
|
-
ExecStart=/PATH/TO/matilda serve --hostname 127.0.0.1 --port 4170
|
|
40
|
-
# Read the bearer token from a chmod 600 file rather than inlining it
|
|
41
|
-
# in the unit. `Environment=` would expose the token in the unit file
|
|
42
|
-
# (typically 644 = world-readable). EnvironmentFile keeps the token in
|
|
43
|
-
# the user-owned secret file you already created with `chmod 600`.
|
|
44
|
-
EnvironmentFile=%h/.matilda-serve-token-env
|
|
45
|
-
Restart=on-failure
|
|
46
|
-
RestartSec=5
|
|
47
|
-
StandardOutput=journal
|
|
48
|
-
StandardError=journal
|
|
49
|
-
|
|
50
|
-
[Install]
|
|
51
|
-
WantedBy=default.target
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
Build the env file once (the token file from the setup step holds the raw value; this wraps it in `KEY=value` form so systemd reads it as an env assignment):
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
echo "MATILDA_SERVER_TOKEN=$(cat ~/.matilda-serve-token)" > ~/.matilda-serve-token-env
|
|
58
|
-
chmod 600 ~/.matilda-serve-token-env
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Manage:
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
systemctl --user daemon-reload
|
|
65
|
-
systemctl --user enable --now matilda-serve.service
|
|
66
|
-
loginctl enable-linger "$(whoami)" # keep the user manager running after logout / across reboot
|
|
67
|
-
journalctl --user -u matilda-serve -f # tail logs
|
|
68
|
-
systemctl --user restart matilda-serve.service # after token rotation
|
|
69
|
-
systemctl --user disable --now matilda-serve.service
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
Without `loginctl enable-linger`, the user-level systemd instance shuts down when the user logs out and only restarts on next login — on a headless dev box the daemon would not survive an SSH session ending. `enable-linger` is what makes "across reboots" actually work.
|
|
73
|
-
|
|
74
|
-
**System-wide alternative** (shared dev hosts, less common): drop the unit at `/etc/systemd/system/matilda-serve@.service` with `User=%i`, manage via `sudo systemctl enable --now matilda-serve@<username>.service`. Same `[Service]` body otherwise — but world-readable `Environment=` exposure is even more problematic at this level, so always use `EnvironmentFile=` pointing at the user's `chmod 600` file. Pick user-level + linger for single-user workstations.
|
|
75
|
-
|
|
76
|
-
## macOS: launchd user agent
|
|
77
|
-
|
|
78
|
-
> **Find your `matilda` binary first.** Same constraint as systemd — `ProgramArguments` must hold an **absolute path**. Run `which matilda` to discover it. Common locations on macOS: `/opt/homebrew/bin/matilda` (Homebrew on Apple Silicon), `/usr/local/bin/matilda` (Homebrew on Intel, manual installs), `~/.nvm/versions/node/vX.Y.Z/bin/matilda` (nvm), `~/.volta/bin/matilda` (Volta). Substitute below where the template shows `/PATH/TO/matilda`.
|
|
79
|
-
|
|
80
|
-
`~/Library/LaunchAgents/com.maincode.matilda-serve.plist`:
|
|
81
|
-
|
|
82
|
-
```xml
|
|
83
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
84
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
85
|
-
<plist version="1.0">
|
|
86
|
-
<dict>
|
|
87
|
-
<key>Label</key>
|
|
88
|
-
<string>com.maincode.matilda-serve</string>
|
|
89
|
-
<key>ProgramArguments</key>
|
|
90
|
-
<array>
|
|
91
|
-
<!-- Run `which matilda` to find the absolute path; launchd does NOT read $PATH. -->
|
|
92
|
-
<string>/PATH/TO/matilda</string>
|
|
93
|
-
<string>serve</string>
|
|
94
|
-
<string>--hostname</string>
|
|
95
|
-
<string>127.0.0.1</string>
|
|
96
|
-
<string>--port</string>
|
|
97
|
-
<string>4170</string>
|
|
98
|
-
</array>
|
|
99
|
-
<!-- launchd does NOT expand `~` or `$HOME` — use absolute paths. -->
|
|
100
|
-
<key>WorkingDirectory</key>
|
|
101
|
-
<string>/Users/YOUR-USERNAME/your-project</string>
|
|
102
|
-
<key>EnvironmentVariables</key>
|
|
103
|
-
<dict>
|
|
104
|
-
<!-- DO NOT COMMIT this file with a real token. Also chmod 600 the
|
|
105
|
-
plist itself so the inlined token is not world-readable. -->
|
|
106
|
-
<key>MATILDA_SERVER_TOKEN</key>
|
|
107
|
-
<string>PASTE-YOUR-TOKEN-HERE</string>
|
|
108
|
-
</dict>
|
|
109
|
-
<key>RunAtLoad</key>
|
|
110
|
-
<true/>
|
|
111
|
-
<!-- Restart only on non-zero exits (matches systemd Restart=on-failure).
|
|
112
|
-
A bare `<true/>` would respawn even after a clean SIGTERM, making
|
|
113
|
-
`kill <pid>` impossible to use as a stop signal — operator would
|
|
114
|
-
have to `launchctl unload`. SuccessfulExit=false fixes that. -->
|
|
115
|
-
<key>KeepAlive</key>
|
|
116
|
-
<dict>
|
|
117
|
-
<key>SuccessfulExit</key>
|
|
118
|
-
<false/>
|
|
119
|
-
</dict>
|
|
120
|
-
<!-- Throttle restart storms on persistent failures (mirrors systemd
|
|
121
|
-
RestartSec=5; launchd's default would respawn every <1s). -->
|
|
122
|
-
<key>ThrottleInterval</key>
|
|
123
|
-
<integer>10</integer>
|
|
124
|
-
<!-- Log into the user's Library, not /tmp. /tmp is world-writable
|
|
125
|
-
(symlink-attack risk on shared workstations) and gets cleaned by
|
|
126
|
-
periodic-daily after 3 days; `~/Library/Logs/matilda-serve/` is
|
|
127
|
-
user-scoped and survives. launchd truncates these on every
|
|
128
|
-
`load`, so the unload→load token-rotation cycle wipes prior
|
|
129
|
-
diagnostic logs — back them up if you need post-incident
|
|
130
|
-
inspection. -->
|
|
131
|
-
<key>StandardOutPath</key>
|
|
132
|
-
<string>/Users/YOUR-USERNAME/Library/Logs/matilda-serve/out.log</string>
|
|
133
|
-
<key>StandardErrorPath</key>
|
|
134
|
-
<string>/Users/YOUR-USERNAME/Library/Logs/matilda-serve/err.log</string>
|
|
135
|
-
</dict>
|
|
136
|
-
</plist>
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
Manage:
|
|
140
|
-
|
|
141
|
-
```bash
|
|
142
|
-
mkdir -p ~/Library/Logs/matilda-serve # first time only
|
|
143
|
-
chmod 600 ~/Library/LaunchAgents/com.maincode.matilda-serve.plist # plist holds the inline token
|
|
144
|
-
launchctl load ~/Library/LaunchAgents/com.maincode.matilda-serve.plist
|
|
145
|
-
launchctl unload ~/Library/LaunchAgents/com.maincode.matilda-serve.plist # to stop
|
|
146
|
-
tail -f ~/Library/Logs/matilda-serve/out.log ~/Library/Logs/matilda-serve/err.log
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
After editing the plist (e.g., rotating the token) you must `unload` then `load` again — `launchctl` does not auto-reload on plist changes the way `systemd daemon-reload` does. Note: each `load` truncates the log files, so save them off if you're investigating an incident before rotating.
|
|
150
|
-
|
|
151
|
-
## tmux session (interactive supervision)
|
|
152
|
-
|
|
153
|
-
Assumes `MATILDA_SERVER_TOKEN` is already exported in your shell (see the setup section above):
|
|
154
|
-
|
|
155
|
-
```bash
|
|
156
|
-
tmux new -d -s matilda-serve "cd ~/your-project && matilda serve --hostname 127.0.0.1"
|
|
157
|
-
tmux attach -t matilda-serve # see live logs; Ctrl-b d to detach
|
|
158
|
-
tmux kill-session -t matilda-serve
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
`tmux new -d` inherits the parent shell's environment, so `MATILDA_SERVER_TOKEN` flows through automatically. Best when you want to occasionally watch the daemon's stdout (auth warnings, MCP discovery progress, slow-client warnings) without committing to a service unit. Survives terminal close but not host reboot.
|
|
162
|
-
|
|
163
|
-
## nohup one-liner (quick + dirty)
|
|
164
|
-
|
|
165
|
-
Assumes `MATILDA_SERVER_TOKEN` is already exported in your shell:
|
|
166
|
-
|
|
167
|
-
```bash
|
|
168
|
-
nohup bash -c 'cd ~/your-project && matilda serve --hostname 127.0.0.1' > matilda-serve.log 2>&1 &
|
|
169
|
-
echo $! # daemon PID; capture if you want to `kill` cleanly later
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
The wrapping `bash -c '...'` ensures the daemon binds to `~/your-project` rather than wherever you happened to run the command. Without that `cd`, `matilda serve` defaults to `process.cwd()` and a `POST /session` from a client expecting your project workspace returns `400 workspace_mismatch` — silent foot-gun.
|
|
173
|
-
|
|
174
|
-
OK for one-off "let me run this in the background while I poke at the API" workflows. **Not recommended** for anything beyond a single session — no restart-on-crash, log file grows unbounded, no clean way to find the daemon if you forget the PID. Prefer tmux for interactive supervision or systemd / launchd for anything you want to outlast a reboot.
|
|
175
|
-
|
|
176
|
-
## Verifying the daemon is up
|
|
177
|
-
|
|
178
|
-
```bash
|
|
179
|
-
curl http://127.0.0.1:4170/health # → {"status":"ok"}
|
|
180
|
-
curl -H "Authorization: Bearer $MATILDA_SERVER_TOKEN" \
|
|
181
|
-
http://127.0.0.1:4170/capabilities | jq .protocolVersions # daemon's feature set
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
When auth is configured (i.e., the daemon was started with `--token` / `MATILDA_SERVER_TOKEN` set, OR `--require-auth=true`), every route except `/health` on loopback binds requires `Authorization: Bearer <token>`. If you started the daemon without a token on the loopback default (the `matilda serve` zero-config path), neither call requires a header. The templates above all configure a token, so the `Authorization` header is needed in practice. If `/capabilities` returns `401`, the unit / plist token doesn't match the env-exported token your `curl` is using.
|
|
185
|
-
|
|
186
|
-
## Token rotation
|
|
187
|
-
|
|
188
|
-
1. Generate a new token + write the env file the unit references:
|
|
189
|
-
```bash
|
|
190
|
-
openssl rand -hex 32 > ~/.matilda-serve-token
|
|
191
|
-
chmod 600 ~/.matilda-serve-token
|
|
192
|
-
echo "MATILDA_SERVER_TOKEN=$(cat ~/.matilda-serve-token)" > ~/.matilda-serve-token-env
|
|
193
|
-
chmod 600 ~/.matilda-serve-token-env
|
|
194
|
-
```
|
|
195
|
-
(For the launchd / nohup / tmux templates: edit the plist's `<string>` value or re-`export MATILDA_SERVER_TOKEN`. Don't forget `chmod 600` on the plist if you regenerate it.)
|
|
196
|
-
2. Restart the daemon:
|
|
197
|
-
- **systemd**: `systemctl --user restart matilda-serve.service`
|
|
198
|
-
- **launchd**: `launchctl unload ~/Library/LaunchAgents/com.maincode.matilda-serve.plist && launchctl load ~/Library/LaunchAgents/com.maincode.matilda-serve.plist`
|
|
199
|
-
- **tmux / nohup**: `kill <pid>` then re-run with the new token in env
|
|
200
|
-
3. Update any client SDKs / scripts. The TypeScript SDK's `DaemonClient` reads `MATILDA_SERVER_TOKEN` automatically (PR 27 fallback) — re-`export` the new value in any client shell and reconstruct the client.
|
|
201
|
-
|
|
202
|
-
## Restart and crash behavior
|
|
203
|
-
|
|
204
|
-
Service-manager restart semantics differ across the templates:
|
|
205
|
-
|
|
206
|
-
- **systemd `Restart=on-failure`** — restart only on non-zero exit / signal. A clean SIGTERM (`systemctl stop`) does **not** trigger a restart loop.
|
|
207
|
-
- **launchd `KeepAlive` with `SuccessfulExit=false`** (the template above) — matches systemd behavior. A bare `<true/>` would have respawned even after a clean exit. `ThrottleInterval=10` rate-limits restart storms on persistent failures, mirroring systemd's `RestartSec=5`.
|
|
208
|
-
- **tmux / nohup** — no automatic restart. A daemon crash leaves you with a dead PID until you re-run.
|
|
209
|
-
|
|
210
|
-
Within a **single daemon process lifetime**, client disconnects recover via SSE `Last-Event-ID` resume per the [Durability model](./matilda-serve.md#durability-model) section of the user guide — the replay ring is in-memory.
|
|
211
|
-
|
|
212
|
-
A daemon **restart** drops all in-memory sessions; clients reconnect and start fresh. Cross-restart durability of session content (prompts, tool calls, conversation history) is **NOT** in v0.16-alpha.
|
|
213
|
-
|
|
214
|
-
## Out of scope (defers to v0.16.x or later)
|
|
215
|
-
|
|
216
|
-
- **Containerized deployment** — Dockerfile, docker-compose, Kubernetes manifests, nginx + TLS reverse proxy, multi-instance token isolation. Defers to v0.16.x once an enterprise pilot is committed; the doc would otherwise rot from no-one-validating.
|
|
217
|
-
- **Cross-host federation / multi-daemon coordination on one host** — `1 daemon = 1 workspace × N sessions` is enforced. Instance-path token keying + stale-token cleanup defer to v0.16.x.
|
|
218
|
-
- **Auto-generated daemon tokens** — alpha is BYO-token. Auto-gen + token-store infrastructure defers to v0.16.x.
|
|
219
|
-
- **Windows native service** (`nssm`, Service Control Manager wrapper) — for now use [WSL2](https://learn.microsoft.com/en-us/windows/wsl/) and follow the systemd section above.
|
|
220
|
-
|
|
221
|
-
See the [v0.16-alpha known limits](./matilda-serve.md#v016-alpha-known-limits) callout in the main user guide for the full deferred-features list, and [#4175](https://github.com/MaincodeHQ/matilda-code/issues/4175) for the v0.16-alpha rollout tracking issue.
|