merakcode 0.1.0 → 0.1.1

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 (3) hide show
  1. package/LICENSE +0 -6
  2. package/README.md +55 -16
  3. package/package.json +7 -7
package/LICENSE CHANGED
@@ -19,9 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  SOFTWARE.
22
-
23
- ---
24
-
25
- Parts of this software are derived from other open-source projects, most notably
26
- opencode (https://github.com/anomalyco/opencode), Copyright (c) 2025 opencode, MIT License.
27
- See THIRD_PARTY_NOTICES.md for their copyright notices and licenses.
package/README.md CHANGED
@@ -10,14 +10,15 @@
10
10
  <a href="https://github.com/TongTong313/merakcode/actions/workflows/ci.yml"><img src="https://github.com/TongTong313/merakcode/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
11
11
  <a href="https://github.com/TongTong313/merakcode/releases"><img src="https://img.shields.io/github/v/release/TongTong313/merakcode?include_prereleases" alt="Release" /></a>
12
12
  <a href="https://www.npmjs.com/package/merakcode"><img src="https://img.shields.io/npm/v/merakcode" alt="npm" /></a>
13
- <a href="LICENSE"><img src="https://img.shields.io/github/license/TongTong313/merakcode" alt="License" /></a>
13
+ <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/node-%3E%3D26.12-339933?logo=nodedotjs&logoColor=white" alt="Node.js" /></a>
14
+ <a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-7.0-3178C6?logo=typescript&logoColor=white" alt="TypeScript" /></a>
14
15
  </p>
15
16
 
16
17
  <p align="center"><a href="README.md">简体中文</a> · English</p>
17
18
 
18
19
  ---
19
20
 
20
- MerakCode is an open-source AI coding tool. Beyond strong coding skills, it can help with anything you need AI for. AI now writes far faster than people can read, so MerakCode puts a lot of care into how people and the agent work together: a better way to review what the agent produces and a smoother experience overall, so that its output is what you expect.
21
+ MerakCode is an open-source AI coding tool. Beyond strong coding skills, it can help with anything you need AI for. Now that AI writes far faster than people can read, MerakCode puts a lot of care into how people and the agent work together. Collaboration groups let Claude Code, Codex, OpenCode and other products work together, and MerakCode keeps refining how you review what the agent produces, so that its output is what you expect. The aim is to be the best AI coding tool to use, not the most powerful one.
21
22
 
22
23
  We open-sourced this project to make up for a regret we have carried, and in the hope that the community can keep it going. The name comes from Merak, the star in the Big Dipper that, together with Dubhe, points to Polaris. We hope MerakCode does the same and points each of your ideas in the right direction.
23
24
 
@@ -26,7 +27,7 @@ We open-sourced this project to make up for a regret we have carried, and in the
26
27
  - **AI coding**: strong project-level coding across many languages, frameworks, paradigms and styles. Honestly, this part is no different from other AI coding products. You be the judge, and if you like it, a Star is the best way to support us.
27
28
  - **Collaboration across products**: MerakCode is designed around people and the agent working together. It has a review interface built specifically for checking what the agent produces (desktop app only) and a complete permission system for what the agent may do. It can also work alongside other AI coding products that ship a CLI, so the collaboration reaches across products.
28
29
  - **Model setup**: connect all kinds of model providers (only 8 for now, more to come) as well as local models. MerakCode can also use models through API relay services.
29
- - **Secure and reliable**: commands the agent runs go into our own OS sandbox. They cannot read your key folders, cannot write outside the workspace, and need your approval to reach unfamiliar websites. This is a small product built by a few people, with no server side (no time to build one...). We don't collect, and couldn't collect, any usage data, so there is nothing of yours to leak.
30
+ - **Secure and reliable**: commands the agent runs go into our own OS sandbox. They cannot read key folders such as `~/.ssh` or `~/.aws`, can write only the workspace, temp folders and package manager caches, and need your approval for hosts that are not on the allowlist. This is a small product built by a few people, with no server side (no time to build one...). We don't collect, and couldn't collect, any usage data, so there is nothing of yours to leak.
30
31
  - **Extensible**: MCP, skills, plugins, custom agents and slash commands.
31
32
  - **Beyond coding**: AI coding is one of the hardest kinds of task there is, so using MerakCode for other things works just fine.
32
33
  - **Build your own**: MerakCode ships an agent SDK, and every MerakCode product is built on it. You can build your own AI coding tool on the same engine.
@@ -48,7 +49,9 @@ The desktop app ships with its own engine; you do not need the command-line vers
48
49
  The installers are not code-signed yet, so the system stops them the first time:
49
50
 
50
51
  - **Windows**: when you see "Windows protected your PC", click "More info", then "Run anyway".
51
- - **macOS**: if the app "cannot be opened", go to System Settings → Privacy & Security and click "Open Anyway" near the bottom. Unsigned macOS builds cannot update themselves; the app tells you when a new version is out and opens the download page.
52
+ - **macOS**: if the app "cannot be opened", go to System Settings → Privacy & Security and click "Open Anyway" near the bottom.
53
+
54
+ Unsigned macOS builds, and Linux installs from a `.deb`, cannot update themselves. When a new version is out, the app sends you to the download page.
52
55
 
53
56
  ### Command line
54
57
 
@@ -77,10 +80,13 @@ The command is `merak`. Upgrade later with `merak upgrade` (or `merak update`).
77
80
  To check a download yourself, put the release's `SHA256SUMS` in the same folder as the file and run:
78
81
 
79
82
  ```sh
80
- sha256sum -c SHA256SUMS --ignore-missing # Linux
81
- shasum -a 256 -c SHA256SUMS --ignore-missing # macOS
83
+ sha256sum -c SHA256SUMS --ignore-missing # Linux
84
+ grep 'darwin-arm64.tar.gz' SHA256SUMS | shasum -a 256 -c # macOS (Apple silicon)
85
+ grep 'darwin-x64.tar.gz' SHA256SUMS | shasum -a 256 -c # macOS (Intel)
82
86
  ```
83
87
 
88
+ The `shasum` that ships with macOS has no `--ignore-missing`, so the commands above check only the line for the file you downloaded.
89
+
84
90
  ```powershell
85
91
  # Windows: the output must equal the value on this file's line in SHA256SUMS
86
92
  (Get-FileHash .\merakcode-<version>-windows-x64.zip).Hash.ToLower()
@@ -113,6 +119,7 @@ Handy actions (`⌘` on macOS, `Ctrl` on Windows and Linux):
113
119
  | --------------------- | ----------------------------------------------------------------------------- |
114
120
  | `⌘/Ctrl+K` | Command palette: search conversation titles, conversation content or commands |
115
121
  | `⌘/Ctrl+N` | New conversation |
122
+ | `⌘/Ctrl+G` | New collaboration group |
116
123
  | `⌘/Ctrl+,` | Open settings |
117
124
  | `⌘/Ctrl+J` | Open or close the terminal |
118
125
  | `⌘/Ctrl+B` | Show or hide the side panel |
@@ -159,17 +166,24 @@ Editors that speak [ACP](https://agentclientprotocol.com) can use MerakCode as t
159
166
 
160
167
  ## Permissions and the sandbox
161
168
 
162
- MerakCode edits files and runs commands on your computer, so every action goes through the permission mode first: do it, ask you, or refuse.
169
+ MerakCode edits files and runs commands on your computer, so every action goes through the permission mode first: do it, ask you, or refuse. There is no category called an ordinary file. The rules are:
163
170
 
164
- | Mode | Good for | What happens |
165
- | ------------- | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
166
- | Read-only | Designs and plans | Only reads files and runs read-only commands (such as `git status` or `ls`). No edits, no other commands |
167
- | Ask (default) | Everyday work | Reads files and edits inside the workspace right away; asks before running commands, editing outside the workspace, reading sensitive files or going online |
168
- | Auto | Large projects, when you trust the AI | Does most things right away; still asks before risky commands (such as `git push` or `sudo`), edits outside the workspace, sensitive files and unknown websites |
171
+ - **Edits inside the workspace.** If no directory or file name on the path relative to the workspace starts with `.`, ask mode and auto mode edit it immediately. If any segment starts with `.` (`.git`, `.github`, `.env`, `src/.hidden/a.ts`), ask mode asks first and auto mode edits it immediately. Read-only mode never edits, and an allow rule in the config cannot override that.
172
+ - **Reads.** A file inside the workspace that is not a secret is read immediately in every mode. A non-secret file outside the workspace asks in read-only and ask mode, and is read immediately in auto mode. Secrets always ask. A secret is a file named `.env`, or `.env.*` other than `.env.example`, `.env.sample`, `.env.template` and `.env.dist`; `id_rsa`, `id_dsa`, `id_ecdsa` or `id_ed25519`, with an optional extra suffix; `credentials` or `credentials.json`; an extension of `.pem`, `.key`, `.p12`, `.pfx`, `.keystore` or `.jks`; or `.npmrc`, `.pypirc`, `.netrc`, `.git-credentials` or `.pgpass`. Files under `.ssh`, `.aws`, `.azure`, `.kube`, `.gnupg`, `.docker`, `.config/gcloud` or `.config/gh` in your home directory count too.
173
+ - **Commands.** Commands that certainly do not change files (`ls`, `git status`, `git diff`, `rg`, and the rest of that fixed list) run in every mode. Anything that might change files counts as a file-changing command. File-changing commands, and `rm`, `rmdir`, `unlink`, `shred`, `git clean`, `git reset --hard` and `find -delete`, are refused in read-only mode, asked about in ask mode, and run immediately in auto mode. Risky commands are refused in read-only mode and asked about in ask and auto mode: `sudo`, `su`, `doas`, `pkexec`, `runas`, `dd` when it does not target a whole disk, `shutdown`, `reboot`, `chown`, and `git push`, `npm publish`, `npm unpublish`, `pnpm publish`, `yarn publish`, `bun publish`, `cargo publish`, `gem push`, `twine upload`, `docker push`, `gh release`, `gh pr`, `helm push`. `rm -rf /` (and the home directory), recursively chmodding those locations to `777`, `mkfs`, `dd` onto a whole disk, `format`, `diskpart` and a fork bomb are refused by default. In ask and auto mode they run only when the config explicitly allows them. In read-only mode an allow rule still does not.
174
+ - **Websites.** The allowlist matches hostnames exactly; a subdomain does not count. These hosts are reached immediately: `registry.npmjs.org`, `registry.yarnpkg.com`, `registry.npmmirror.com`, `cdn.npmmirror.com`, `pypi.org`, `files.pythonhosted.org`, `pypi.tuna.tsinghua.edu.cn`, `crates.io`, `index.crates.io`, `static.crates.io`, `static.rust-lang.org`, `rsproxy.cn`, `proxy.golang.org`, `sum.golang.org`, `goproxy.cn`, `repo.maven.apache.org`, `repo1.maven.org`, `maven.aliyun.com`, `services.gradle.org`, `plugins.gradle.org`, `rubygems.org`, `github.com`, `codeload.github.com`, `objects.githubusercontent.com`, `raw.githubusercontent.com`, `gitlab.com`, `gitee.com`, `mirrors.aliyun.com`, `mirrors.tuna.tsinghua.edu.cn`. Every other host asks, in every mode.
175
+ - **The rest.** Subagents, workflows, scheduled tasks, MCP and tools registered by plugins ask in read-only and ask mode, and run immediately in auto mode. Leaving the sandbox always asks. While the sandbox is not ready, a command that may change things asks even in auto mode. In ask and auto mode, allow and deny rules in the project config override the defaults above. Read-only mode still cannot edit files or run anything except read-only commands.
176
+ - **Collaboration members.** The leader hands a task to a member without asking. When a member (Claude Code, Codex, OpenCode, or a product with a member adapter) wants to edit files, run commands, reach a website or read files, the rules above decide it; what needs asking shows in the approval bar and a member's question in the question box, both naming the member. Members' commands do not run in MerakCode's OS sandbox (Codex runs them in its own sandbox), and a custom product added as a one-shot command never asks: its own settings decide.
169
177
 
170
- Switch modes next to the input in the desktop app, or press `Shift+Tab`. When it asks, you can allow once, allow for this session, always allow (saved to the project config) or deny. By default, commands such as `rm -rf /` or formatting a disk never run, in any mode.
178
+ | Mode | Good for | What happens |
179
+ | ------------- | ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
180
+ | Read-only | Designs and plans | No edits, only read-only commands. Still asks before a non-secret read outside the workspace, a secret, or a host off the allowlist |
181
+ | Ask (default) | Everyday work | Edits a workspace file immediately when no path segment starts with `.`. Asks before edits to dot paths, file-changing commands and deletes, reads or edits outside the workspace, secrets, or hosts off the allowlist |
182
+ | Auto | Large projects, when you trust the AI | Edits inside the workspace (including dot paths), file-changing commands and deletes run immediately. Still asks before writes outside, risky commands, secret reads, hosts off the allowlist, or leaving the sandbox |
171
183
 
172
- Commands the agent runs also go into an **OS sandbox**: they can only write the workspace, temp folders and package manager caches; they cannot read key folders such as `~/.ssh` or `~/.aws`; they cannot change `.git/hooks` or `.git/config`; and network traffic goes through a local proxy that asks you about sites it has not seen. The sandbox is our own code on top of what each OS provides:
184
+ Switch modes next to the input in the desktop app, or press `Shift+Tab`. When it asks, you can allow once, allow for this session, always allow (saved to the project config) or deny.
185
+
186
+ Commands the agent runs also go into an **OS sandbox**: they can only write the workspace, temp folders and package manager caches; they cannot read key folders such as `~/.ssh` or `~/.aws`; they cannot change `.git/hooks` or `.git/config`; and network traffic goes through a local proxy that asks you about hosts off the allowlist that you have not approved. The sandbox is our own code on top of what each OS provides:
173
187
 
174
188
  | System | Built on | What you need to do |
175
189
  | ------- | ------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -179,6 +193,31 @@ Commands the agent runs also go into an **OS sandbox**: they can only write the
179
193
 
180
194
  While the sandbox is not ready (for example before setup on Windows), commands that may change things ask first, even in auto mode. For what the sandbox does and does not protect against, see [SECURITY.md](SECURITY.md).
181
195
 
196
+ ## Collaboration groups
197
+
198
+ In a collaboration group MerakCode is the leader, and Claude Code, Codex, OpenCode and other AI coding tools can be members. Say what you want in the group; the leader splits it into tasks for the members, and each replies in the group when it is done.
199
+
200
+ - Create one from New collaboration group in the sidebar, `⌘/Ctrl+G` or the command palette, or copy the members of an existing group.
201
+ - Mention a member with `@` in the input; rename it or change its role and duty in the member column.
202
+ - What members want to do, and what they ask, shows in the approval bar and the question box, decided by the permission mode you chose.
203
+ - Under Settings › Collaboration, turn products on or off, see their versions and paths and who decides their permissions (MerakCode approves for a product with an adapter; a one-shot command decides itself), and add your own. A CLI older than recommended shows how to upgrade it (`claude update`, `codex update`, `opencode upgrade`) and still works. Recommended: Claude Code 2.1.283, Codex 0.164.0, OpenCode 1.19.4 or later.
204
+ - For an AI coding tool without a built-in adapter, click "Have MerakCode write an adapter to connect your own AI coding tool" under Settings › Collaboration, or ask MerakCode in an ordinary conversation to write and register a member adapter with the adapter generator skill (`adapter-generator`). The skill works from the three built-in adapters: a tool that talks the way one of them does gets a copy of it, changed where it differs; any other gets an adapter written after them. You can also write one yourself with [the member adapter section of the SDK guide](docs/sdk/README.en.md#15-member-adapters-adapter).
205
+
206
+ Products can also be set in the config:
207
+
208
+ ```jsonc
209
+ {
210
+ "collaboration": {
211
+ "products": {
212
+ // A built-in product needs only the fields you change, such as where its command is or extra arguments
213
+ "codex": { "command": "/opt/codex/bin/codex", "args": ["-c", "model=\"o3\""] },
214
+ // Your own adapter
215
+ "mycli": { "title": "MyCLI", "adapter": "member", "command": "node", "args": ["/path/to/adapter.mjs"] },
216
+ },
217
+ },
218
+ }
219
+ ```
220
+
182
221
  ## Configuration
183
222
 
184
223
  | Location | Purpose |
@@ -202,7 +241,7 @@ Config files can be plain JSON or JSONC with comments. Add `"$schema"` at the to
202
241
  }
203
242
  ```
204
243
 
205
- To switch to English: in the desktop app, use Settings → General → Language; for the command line, set `"locale": "en-US"` in the config or the environment variable `MERAKCODE_LOCALE=en-US`.
244
+ To change the language: in the desktop app, use Settings → General → Language. On the command line, set `"locale"` in the config (`zh-CN` or `en-US`) or the environment variable `MERAKCODE_LOCALE`.
206
245
 
207
246
  ## SDK
208
247
 
@@ -246,7 +285,7 @@ pnpm hooks:install # check formatting before each commit
246
285
  | Debug the engine | `node --inspect --import ./script/node/register.mjs apps/cli/src/index.ts serve` |
247
286
  | Print detailed logs | `pnpm dev serve --print-logs --log-level DEBUG` |
248
287
 
249
- **Note**: desktop development reloads the UI as you save and restarts the main process and the engine when their code changes, which makes debugging much easier.
288
+ **Note**: desktop development reloads the UI as you save and restarts the app when main process code changes. Engine changes do not restart anything: use Help › Restart Local Service, and windows reconnect on their own.
250
289
 
251
290
  `pnpm dev` runs the source directly; there is nothing to build first. Change the code and run it again.
252
291
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "merakcode",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "MerakCode command line: run tasks, start the engine, ACP for editors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -19,11 +19,11 @@
19
19
  "node": ">=18"
20
20
  },
21
21
  "optionalDependencies": {
22
- "merakcode-darwin-arm64": "0.1.0",
23
- "merakcode-darwin-x64": "0.1.0",
24
- "merakcode-linux-arm64": "0.1.0",
25
- "merakcode-linux-x64": "0.1.0",
26
- "merakcode-windows-arm64": "0.1.0",
27
- "merakcode-windows-x64": "0.1.0"
22
+ "merakcode-darwin-arm64": "0.1.1",
23
+ "merakcode-darwin-x64": "0.1.1",
24
+ "merakcode-linux-arm64": "0.1.1",
25
+ "merakcode-linux-x64": "0.1.1",
26
+ "merakcode-windows-arm64": "0.1.1",
27
+ "merakcode-windows-x64": "0.1.1"
28
28
  }
29
29
  }