@akira-tl/forgerelay 0.10.5 → 1.0.0

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/CHANGELOG.md CHANGED
@@ -4,6 +4,13 @@ All notable ForgeRelay changes are documented here.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [1.0.0] - 2026-09-07
8
+
9
+ ### Changed
10
+
11
+ - Declared ForgeRelay 1.0 as the stable baseline for the current MCP, CLI, persistent Workspace, managed-worktree, Relay/Composite, Code Intelligence, Hook, Task, Activity/Audit, recovery/checkpoint, and native cross-platform Command Shell Runtime contracts.
12
+ - Reworked the README and GitHub Wiki around first-run usage, added the ForgeRelay brand assets and Activity Panel preview, and kept upstream DevSpace provenance explicit through the existing MIT attribution and NOTICE.
13
+
7
14
  ## [0.10.5] - 2026-09-06
8
15
 
9
16
  ### Changed
package/README.md CHANGED
@@ -1,381 +1,252 @@
1
- # ForgeRelay
1
+ <p align="center">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="docs/assets/forgerelay-lockup-dark.png">
4
+ <img src="docs/assets/forgerelay-lockup-light.png" alt="ForgeRelay" width="620">
5
+ </picture>
6
+ </p>
2
7
 
3
- **Give MCP coding agents a real local workspace.**
8
+ <p align="center">
9
+ <strong>Use MCP coding agents on the projects and tools already on your machine.</strong><br>
10
+ <strong>让 MCP 编程 Agent 直接使用你电脑上现有的项目和开发工具。</strong>
11
+ </p>
4
12
 
5
- [![npm](https://img.shields.io/npm/v/%40akira-tl%2Fforgerelay?style=flat-square)](https://www.npmjs.com/package/@akira-tl/forgerelay)
6
- [![Release](https://img.shields.io/github/actions/workflow/status/Akira-TL/forgerelay/release.yml?style=flat-square&label=release)](https://github.com/Akira-TL/forgerelay/actions/workflows/release.yml)
7
- [![License](https://img.shields.io/npm/l/%40akira-tl%2Fforgerelay?style=flat-square)](LICENSE)
13
+ <p align="center">
14
+ <a href="#中文">中文</a> · <a href="#english">English</a>
15
+ </p>
8
16
 
9
- ForgeRelay is a self-hosted MCP server that lets ChatGPT and other MCP-capable
10
- hosts work on the repositories already on your machine. The host gets explicit
11
- tools for files, shell commands, Git, managed worktrees, change review, and
12
- optional local-agent delegation. Your project stays in your normal development
13
- environment, with the same compilers, package managers, credentials, and Git
14
- installation you already use.
17
+ <p align="center">
18
+ <a href="https://www.npmjs.com/package/@akira-tl/forgerelay"><img src="https://img.shields.io/npm/v/%40akira-tl%2Fforgerelay?style=flat-square" alt="npm"></a>
19
+ <a href="https://github.com/Akira-TL/forgerelay/actions/workflows/release.yml"><img src="https://img.shields.io/github/actions/workflow/status/Akira-TL/forgerelay/release.yml?style=flat-square&label=release" alt="Release"></a>
20
+ <a href="LICENSE"><img src="https://img.shields.io/npm/l/%40akira-tl%2Fforgerelay?style=flat-square" alt="License"></a>
21
+ </p>
15
22
 
16
- It is not a model and it is not another coding-agent UI. ForgeRelay sits between
17
- the host and your local development tools and handles the parts that need to run
18
- on your machine.
23
+ <p align="center">
24
+ <img src="docs/assets/forgerelay-ui-preview.png" alt="ForgeRelay Activity Panel" width="640">
25
+ </p>
19
26
 
20
- > [!NOTE]
21
- > ForgeRelay is an independently maintained derivative of the MIT-licensed
22
- > [Waishnav/devspace](https://github.com/Waishnav/devspace) project. It is not an
23
- > official DevSpace release. The original copyright notice and license are kept
24
- > in [LICENSE](LICENSE), with additional provenance in [NOTICE.md](NOTICE.md).
27
+ # 中文
25
28
 
26
- ## Quick start
29
+ ForgeRelay 是一个运行在你自己机器上的 MCP Server。它解决的是一个很实际的问题:ChatGPT 这类 Host 会写代码,但默认碰不到你电脑上的项目、Shell 和 Git。
27
30
 
28
- ForgeRelay requires Node `>=22.19 <27`, npm, Git, and a supported Command Shell Runtime. Bash is the primary POSIX compatibility target; zsh and POSIX sh can be selected explicitly. On Windows, PowerShell 7, Windows PowerShell 5.1, and cmd.exe are first-class native runtimes.
31
+ ForgeRelay 接上以后,Agent 就能直接在你现有的仓库里改文件、跑测试和构建、执行 Git、调用语言服务器,并继续使用你已经装好的工具链。项目不用搬到另一套工作目录,也不用为了这件事再换一套 Coding Agent。
29
32
 
30
- Install it globally:
33
+ ## 安装
31
34
 
32
- ```bash
33
- npm install -g @akira-tl/forgerelay
34
- ```
35
-
36
- Then configure and start it:
35
+ 需要 Node.js `>=22.19 <27`、npm 和 Git。
37
36
 
38
37
  ```bash
38
+ npm install -g @akira-tl/forgerelay
39
39
  forgerelay init
40
40
  forgerelay serve
41
41
  ```
42
42
 
43
- Or run it directly with `npx`:
43
+ 不想全局安装也可以:
44
44
 
45
45
  ```bash
46
46
  npx @akira-tl/forgerelay init
47
47
  npx @akira-tl/forgerelay serve
48
48
  ```
49
49
 
50
- The default local MCP endpoint is:
50
+ 默认 MCP 地址:
51
51
 
52
52
  ```text
53
53
  http://127.0.0.1:7676/mcp
54
54
  ```
55
55
 
56
- If the MCP host cannot reach localhost, put ForgeRelay behind a public HTTPS
57
- tunnel or reverse proxy such as Cloudflare Tunnel, ngrok, Pinggy, Tailscale
58
- Funnel, or your own proxy. Setup separates **Direct LAN** (`0.0.0.0`) from
59
- **HTTPS reverse proxy / tunnel** (`127.0.0.1` with loopback-only proxy trust), so
60
- you do not need to choose a bind address manually. During setup, enter the public
61
- base URL before the final `/mcp`; routed prefixes are allowed:
62
-
63
- ```text
64
- https://your-tunnel-host.example.com/forgerelay/main
65
- ```
56
+ `forgerelay init` 会让你选择允许访问的项目目录,并生成 Owner password。第一次连接 MCP Host 时,用这个密码批准客户端。
66
57
 
67
- The client then connects to:
58
+ 检查当前实际生效的配置和 Shell:
68
59
 
69
- ```text
70
- https://your-tunnel-host.example.com/forgerelay/main/mcp
60
+ ```bash
61
+ forgerelay doctor
71
62
  ```
72
63
 
73
- `publicBaseUrl` may also be an ordered list when multiple public entries are
74
- valid; each entry may use its own route and the first is canonical for generated
75
- metadata/links. Every configured pathname is an accepted inbound operational route
76
- boundary. If the only configured route is `/forgerelay/main`, MCP/OAuth/health/App
77
- routes are served below that prefix rather than in parallel at naked `/mcp`,
78
- `/authorize`, or `/healthz` paths.
64
+ ### ChatGPT 访问不到 localhost?
65
+
66
+ 如果 Host 运行在云端,需要给 ForgeRelay 一个公网 HTTPS 入口。Cloudflare Tunnel、ngrok、Tailscale Funnel 或普通反向代理都可以。
79
67
 
80
- ForgeRelay uses an Owner-password OAuth approval flow. `forgerelay init` prints
81
- the password and stores it in the active config directory. New installations use:
68
+ 假设公网地址是:
82
69
 
83
70
  ```text
84
- ~/.forgerelay/config.json
85
- ~/.forgerelay/auth.json
71
+ https://forge.example.com/forgerelay
86
72
  ```
87
73
 
88
- Keep `auth.json` private.
89
-
90
- ## What it gives an MCP host
74
+ 那么 Host 连接:
91
75
 
92
- Once a workspace is open, the host can:
93
-
94
- - read, create, edit, and search files inside that workspace;
95
- - run your local tests, builds, package scripts, Git commands, and shell tools;
96
- - reuse the same workspace when the same checkout is opened again;
97
- - follow repository instructions from `AGENTS.md` and `CLAUDE.md`;
98
- - discover Agent Skills and configured local subagent profiles;
99
- - create a branch-backed Git worktree when you explicitly ask for isolated or
100
- parallel work;
101
- - close a managed worktree by committing its remaining changes and
102
- fast-forwarding the target branch when that can be done safely;
103
- - show aggregate changes through optional ChatGPT Apps-compatible UI cards;
104
- - run user-configured lifecycle hooks around tool calls, file changes, managed
105
- worktree close, and local subagent execution.
106
-
107
- Normal work happens in your existing checkout. ForgeRelay does not silently move
108
- every task into a worktree.
76
+ ```text
77
+ https://forge.example.com/forgerelay/mcp
78
+ ```
109
79
 
110
- ## Composite workspaces across multiple devices
80
+ `publicBaseUrl` 填到 `/mcp` 之前。更完整的 OAuth、Tunnel 和反向代理说明见 [快速开始](https://github.com/Akira-TL/forgerelay/wiki/Getting-Started)。
111
81
 
112
- When one task needs more than one execution environment, a Composite Workspace keeps
113
- one Host-facing working context while preserving each member Workspace as a separate
114
- execution boundary. For example, `code` can point at a local checkout while
115
- `compute` points through Workspace Relay at a GPU machine.
82
+ ## 用起来是什么样
116
83
 
117
- Composite Workspaces use the same lifecycle entry points as ordinary Workspaces:
84
+ 正常情况下,Agent 打开你现有的 checkout,然后直接在里面工作:
118
85
 
119
86
  ```text
120
- open_workspace({ kind: "composite", name: "research-project" })
121
- open_workspace({
122
- action: "member",
123
- workspaceId: "cws_...",
124
- memberAction: "add",
125
- member: {
126
- name: "compute",
127
- purpose: "GPU and high-performance computation",
128
- path: "/srv/research",
129
- relay: "gpu-server"
130
- }
131
- })
87
+ open_workspace(path="~/project")
132
88
  ```
133
89
 
134
- Work still names the member explicitly:
90
+ 之后它可以读取和修改文件,也可以运行真实命令:
135
91
 
136
92
  ```text
137
- read({ workspaceId: "cws_...", member: "code", path: "src/model.py" })
138
- bash({ workspaceId: "cws_...", member: "compute", command: "python train.py" })
93
+ read(path="src/server.ts")
94
+ bash(command="npm test")
95
+ bash(command="git status --short")
139
96
  ```
140
97
 
141
- ForgeRelay does not merge member filesystems, Git state, Hooks, Skills, processes,
142
- shell/platform identity, privilege state, or audit facts, and it never infers a member from the tool type or purpose text. `memberContext.executionContext` reports the selected member's actual execution platform and Command Shell Runtime; it overrides the Gateway shell identity for commands routed to that member.
143
- The Composite Activity Panel presents member operations in one Host Turn while the
144
- actual facts remain owned by the member Workspace. `close_workspace` on a Composite
145
- Workspace now preserves the Composite identity and member topology as `closed`; a
146
- later `open_workspace` restores the same `cws_...` identity. `action="delete"` is the
147
- explicit dissolve operation. Neither close nor delete closes member Workspaces,
148
- finalizes their worktrees, stops their jobs, changes their files, or removes relay routes.
149
-
150
- ### Progressive MCP context
151
-
152
- ForgeRelay keeps the callable MCP surface and its low-frequency operating manuals
153
- separate. `tools/list` remains the source of truth for tools the current server
154
- actually exposes. `open_workspace` returns a compact version/capability fingerprint
155
- and, on bootstrap, short descriptors for relevant ForgeRelay capability guides.
156
- The Agent can load a task-specific guide with `read` instead of receiving every
157
- Hook, worktree, subagent, artifact, OAuth, MCP App, PTY, and process edge case on
158
- every connection.
159
-
160
- The fingerprint also helps diagnose stale MCP Host metadata: if the running server
161
- reports a semantic capability but the Host still shows an older tool snapshot,
162
- refresh or reconnect the integration rather than assuming the capability is
163
- missing from ForgeRelay.
164
-
165
- ## LSP code intelligence
166
-
167
- ForgeRelay 0.4 LSP v1 exposes semantic code navigation through the
168
- `code.intelligence` Capability without adding language-specific top-level MCP tools.
169
- The v1 operations are definition, hover/type information, references, document
170
- symbols, workspace symbols, and diagnostics. Results use ForgeRelay-owned normalized
171
- locations, ranges, symbols, hover content, and diagnostic shapes rather than raw LSP
172
- wire unions.
173
-
174
- Language servers are never installed automatically or without user authorization.
175
- ForgeRelay can discover configured or `PATH`-available servers, and `forgerelay init`
176
- can optionally enable Agent-managed installation of TypeScript/JavaScript and Pyright
177
- inside ForgeRelay's private config directory. That permission is disabled by default;
178
- a successful managed install becomes available to the same running ForgeRelay process
179
- on the next semantic request without a restart. `rust-analyzer`, `gopls`, and `clangd`
180
- remain external toolchain/system installations. See
181
- [Configuration Reference](docs/configuration.md#lsp-code-intelligence) and
182
- [`examples/language-servers.json`](examples/language-servers.json).
183
-
184
- ## Worktrees without the usual cleanup mess
185
-
186
- A new managed worktree gets its own `forgerelay/*` branch instead of a detached
187
- HEAD. It remains visible from the source repository with ordinary Git commands:
98
+ ForgeRelay 不会默认为每个任务创建 worktree。只有你明确要求隔离或并行开发时,才使用 managed worktree。
188
99
 
189
- ```bash
190
- git worktree list
191
- git branch
192
- ```
100
+ 长命令也不会要求 Agent 高频轮询。命令超过当前等待窗口时会返回稳定的 `processId`,后续继续等待或中断同一个进程即可。
193
101
 
194
- When `close_workspace` succeeds for a managed-worktree-backed workspace, ForgeRelay:
102
+ ## 主要能力
195
103
 
196
- 1. checks that the source checkout is clean and still on the expected target branch;
197
- 2. commits any remaining worktree changes;
198
- 3. checks that the target can advance without a merge commit or conflict;
199
- 4. fast-forwards the target branch;
200
- 5. removes the worktree and the already-merged managed branch.
104
+ - 文件、Shell、Git、测试、构建和项目脚本都在你的机器上运行。
105
+ - Linux / macOS 可以用 Bash、zsh、POSIX sh;Windows 原生支持 PowerShell 7、Windows PowerShell 5.1 和 `cmd.exe`。
106
+ - 同一个 checkout 会保留自己的 Workspace 身份。换一次对话,不需要重新创建工作区。
107
+ - `code.intelligence` 可以查 definition、hover、references、symbols diagnostics。
108
+ - 项目里的 `AGENTS.md`、`CLAUDE.md` Agent Skills 按需加载,不会每次都把整套说明重新塞进上下文。
109
+ - 需要并行开发时可以创建真实 Git worktree;集成回主分支时只接受安全的 fast-forward,不自动制造 merge conflict。
110
+ - Workspace Relay 可以把执行放到另一台 ForgeRelay;Composite Workspace 可以同时协调几个独立环境。
201
111
 
202
- If the histories have diverged, the close is refused and the worktree is left in
203
- place. ForgeRelay does not put the source checkout into a merge-conflict state.
204
- You can rebase and verify inside the worktree, then retry the close.
112
+ Lifecycle Hooks、Workspace Tasks、本地 Subagent、Activity/Audit、Checkpoint Recovery 也已经包含在项目里,但第一次安装时不需要先学这些。需要哪个,再去 [Wiki](https://github.com/Akira-TL/forgerelay/wiki) 查哪个。
205
113
 
206
- ## Lifecycle hooks
114
+ ForgeRelay 默认直接用现有 checkout。它不会偷偷创建 worktree、复制 Git ignored 文件、安装 Language Server,也不捆绑 Codex、Claude Code、Pi 之类的本地 Coding Agent runtime。
207
115
 
208
- Hook 是 ForgeRelay 的自动生命周期规则。首选方式是一个 Hook 一个文件:全局放在 `~/.forgerelay/hooks/<hook-name>.json`,项目放在 `<repo>/.forgerelay/hooks/<hook-name>.json`。文件名就是 Hook 名,方便直接从目录看出每条规则的用途;全局与项目规则组合执行,不需要额外批准。
116
+ ## 安全
209
117
 
210
- 例如项目里的 `.forgerelay/hooks/release-tag-gate.json` 可以在稳定版本 tag push 前执行轻量发布门禁:
118
+ ForgeRelay Agent 的是真实本机执行权限,不是模拟环境。
211
119
 
212
- ```json
213
- {
214
- "event": "BeforeTool",
215
- "matcher": {
216
- "tool": "bash",
217
- "commandRegex": "git\\s+push\\s+origin\\s+v\\d+\\.\\d+\\.\\d+"
218
- },
219
- "command": "node scripts/release-proof.mjs check-hook",
220
- "timeoutSeconds": 30,
221
- "report": true
222
- }
223
- ```
120
+ 文件工具受 Workspace 和 allowed roots 限制;Shell 命令使用启动 ForgeRelay 的本地用户权限执行,**Shell 不是 OS sandbox**。因此只连接你信任的 MCP Host,只开放确实需要的项目目录,并保护好 Owner password。
224
121
 
225
- 命中 `BeforeTool` 后,普通 tag push 的 Hook 只快速验证 clean working tree(含 untracked)、tag 与 package version 一致,以及本地 tag 指向当前 HEAD;成功才继续原始 `git push`,失败则直接阻断。force release-tag push 始终拒绝。对于失败发布后显式执行的 `git push --delete origin vX.Y.Z`,Hook 仅在当前 HEAD 有有效 `release:verify` proof,且联网确认 npm 对应版本与 GitHub Release 都不存在时允许删除;任一不可撤回产物存在或远端状态无法确认都会拒绝。因此仅有 tag 时可以重建同版本,一旦 GitHub Release 或包仓库版本存在就进入不可变状态。tag 推送后由 GitHub Actions 的 Linux/macOS/Windows 矩阵执行权威验证,全部通过后才进入发布。Hook 结果会回到 Agent,Agent 应向用户说明重要 Hook 是否通过或阻断了操作。`report:false` 可以隐藏不重要的成功报告,但阻断失败始终可见。
122
+ ForgeRelay 默认拒绝 elevated / administrator 启动。只有你显式选择高权限运行时才会继续,并会提示系统级修改可能不可逆。
226
123
 
227
- 旧的 inline `hooks` 和聚合 `hooks.json` 仍兼容;新配置建议都用独立 `hooks/*.json` 文件。
124
+ 完整边界见 [安全模型](https://github.com/Akira-TL/forgerelay/wiki/Security)。
228
125
 
229
- 可以直接检查当前全局与项目规则,而不会执行 Hook:
126
+ ## 文档
230
127
 
231
- ```bash
232
- forgerelay hooks list
233
- forgerelay hooks check
234
- forgerelay hooks list --project /path/to/project
235
- ```
128
+ - [快速开始](https://github.com/Akira-TL/forgerelay/wiki/Getting-Started)
129
+ - [配置](https://github.com/Akira-TL/forgerelay/wiki/Configuration)
130
+ - [安全模型](https://github.com/Akira-TL/forgerelay/wiki/Security)
131
+ - [故障排查](https://github.com/Akira-TL/forgerelay/wiki/Troubleshooting)
132
+ - [完整 Wiki](https://github.com/Akira-TL/forgerelay/wiki)
236
133
 
237
- `list` 展示实际加载的规则、matcher、timeout、report 与 command;`check` 只校验配置并在发现坏文件时返回非零状态。完整 matcher、事件与环境变量见 [Configuration Reference](docs/configuration.md#lifecycle-hooks)。
134
+ > [!NOTE]
135
+ > ForgeRelay 是基于 MIT License 的 [Waishnav/devspace](https://github.com/Waishnav/devspace) 独立衍生项目,不是官方 DevSpace Release。原始版权与 MIT License 保留在 [LICENSE](LICENSE),来源与修改说明见 [NOTICE.md](NOTICE.md)。
238
136
 
239
- ## Local coding agents
137
+ ---
240
138
 
241
- ForgeRelay can delegate work to local coding runtimes through user-defined
242
- profiles. The current adapter layer supports Codex, Claude, OpenCode, Pi,
243
- Cursor, and Copilot when the corresponding CLI is installed on the server.
244
- ForgeRelay does not install or bundle those coding runtimes.
139
+ # English
245
140
 
246
- Profiles can live in:
141
+ ForgeRelay is a self-hosted MCP server for a practical gap: hosts such as ChatGPT can write code, but they do not normally have access to the projects, shells, and Git repositories on your machine.
247
142
 
248
- ```text
249
- ~/.forgerelay/agents/*.md
250
- .forgerelay/agents/*.md
143
+ Once ForgeRelay is connected, an Agent can edit the repository you already use, run tests and builds, execute Git, query language servers, and call your existing local toolchain. There is no separate project copy and no requirement to adopt another coding-agent runtime.
144
+
145
+ ## Install
146
+
147
+ ForgeRelay requires Node.js `>=22.19 <27`, npm, and Git.
148
+
149
+ ```bash
150
+ npm install -g @akira-tl/forgerelay
151
+ forgerelay init
152
+ forgerelay serve
251
153
  ```
252
154
 
253
- The current CLI workflow is:
155
+ Or run it without a global install:
254
156
 
255
157
  ```bash
256
- forgerelay agents ls
257
- forgerelay agents run <profile-or-provider-or-id> "<prompt>"
258
- forgerelay agents show <id>
158
+ npx @akira-tl/forgerelay init
159
+ npx @akira-tl/forgerelay serve
259
160
  ```
260
161
 
261
- MCP hosts delegate through the `subagent.session` Capability Gateway; the CLI
262
- remains useful for local diagnostics and manual session inspection.
162
+ The default MCP endpoint is:
263
163
 
264
- See [Agent Profile Schema](docs/agents/profile-schema.md) for the profile format.
164
+ ```text
165
+ http://127.0.0.1:7676/mcp
166
+ ```
265
167
 
266
- ## Configuration
168
+ `forgerelay init` asks which project roots may be opened and generates an Owner password. Use that password to approve an MCP client on its first connection.
267
169
 
268
- Configuration uses the `FORGERELAY_*` prefix. For example:
170
+ To see the configuration and Command Shell Runtime ForgeRelay actually resolved:
269
171
 
270
172
  ```bash
271
- FORGERELAY_ALLOWED_ROOTS="$HOME/projects" \
272
- FORGERELAY_PUBLIC_BASE_URL="https://forge.example.com" \
273
- forgerelay serve
173
+ forgerelay doctor
274
174
  ```
275
175
 
276
- See [Configuration Reference](docs/configuration.md) for all supported options.
176
+ ### Host cannot reach localhost?
277
177
 
278
- ## Security model
178
+ Cloud-hosted MCP clients need a public HTTPS route to ForgeRelay. Cloudflare Tunnel, ngrok, Tailscale Funnel, or a normal reverse proxy all work.
179
+
180
+ For a public base URL such as:
181
+
182
+ ```text
183
+ https://forge.example.com/forgerelay
184
+ ```
279
185
 
280
- A connected MCP host can make real changes to local projects through ForgeRelay,
281
- using the same local account that runs the server. That trust boundary matters.
186
+ the MCP client connects to:
282
187
 
283
- Filesystem tools enforce configured workspace and allowed-root boundaries. Shell
284
- commands are different: they run with the authority of your local user and are
285
- **not** contained by an operating-system sandbox added by ForgeRelay.
188
+ ```text
189
+ https://forge.example.com/forgerelay/mcp
190
+ ```
286
191
 
287
- Only connect hosts you trust, keep the Owner password private, and expose only
288
- the project roots you actually want the host to use.
192
+ Set `publicBaseUrl` before the final `/mcp`. See [Getting Started](https://github.com/Akira-TL/forgerelay/wiki/Getting-Started) for OAuth, tunnels, and reverse-proxy setup.
289
193
 
290
- See [Security Model](docs/security.md) for the full boundary and threat model.
194
+ ## What using it looks like
291
195
 
292
- ## Platform support
196
+ For normal work, an Agent opens the checkout you already have:
293
197
 
294
- | Platform | Status | Notes |
295
- | --- | --- | --- |
296
- | Linux | Supported | Bash is the primary POSIX compatibility target; zsh and POSIX sh are explicit native choices with shell-specific compatibility guidance. |
297
- | macOS | Supported | Bash is the primary POSIX compatibility target; zsh and POSIX sh are explicit native choices with shell-specific compatibility guidance. |
298
- | Windows with PowerShell 7 (`pwsh`) | Supported | Agent commands, Hooks, pipe/PTY execution, packaged launcher, and editable shell Instructions use one native `pwsh` runtime without loading the user profile. |
299
- | Windows with Windows PowerShell 5.1 (`powershell.exe`) | Supported | Agent commands, Hooks, pipe/PTY execution, packaged launcher, and editable shell Instructions use the selected 5.1 runtime with 5.1-specific syntax guidance. |
300
- | Windows with `cmd.exe` | Supported | Agent commands, Hooks, pipe/ConPTY execution, packaged `.cmd` launcher, and editable shell Instructions preserve cmd syntax and runtime identity. |
301
- | Windows with Git Bash, WSL, MSYS2, or Cygwin Bash | Compatibility path | Bash remains available when the selected executable provides the expected Bash command language. |
198
+ ```text
199
+ open_workspace(path="~/project")
200
+ ```
302
201
 
303
- You can check the local runtime with:
202
+ It can then work with files and run real local commands:
304
203
 
305
- ```bash
306
- forgerelay doctor
204
+ ```text
205
+ read(path="src/server.ts")
206
+ bash(command="npm test")
207
+ bash(command="git status --short")
307
208
  ```
308
209
 
309
- ## Where ForgeRelay is going
210
+ ForgeRelay does not create a worktree for every task. Managed worktrees are for cases where you explicitly want isolation or parallel development.
310
211
 
311
- With persistent Workspace lifecycle, first-class Subagent delegation, managed-LSP
312
- support, and worktree-close verification already shipped, the 0.9 line focuses on
313
- Workspace recovery and history without expanding the canonical Core tool surface:
212
+ Long commands do not require tight polling either. Once the current wait window expires, ForgeRelay returns a stable `processId`; later calls wait on, interact with, or interrupt that same process.
314
213
 
315
- 1. read-only managed-worktree recovery diagnostics, followed by safe repair/cleanup;
316
- 2. persistent Workspace checkpoints and concurrency-safe restore;
317
- 3. owner-facing retention inspection and explicitly authorized maintenance.
214
+ ## Highlights
318
215
 
319
- ForgeRelay does not plan to add its own shell sandbox, long-term memory system,
320
- or plugin marketplace. Conversation, planning, web access, and other host-native
321
- capabilities stay with the MCP host. Long-term context can be provided by a
322
- separate service instead of being mixed into the workspace runtime.
216
+ - Files, shells, Git, tests, builds, and project scripts run on your machine.
217
+ - Linux/macOS can use Bash, zsh, or POSIX sh. Windows has native PowerShell 7, Windows PowerShell 5.1, and `cmd.exe` support.
218
+ - Reopening the same checkout reuses the same Workspace identity instead of creating another one for every conversation.
219
+ - `code.intelligence` provides definition, hover, references, symbols, and diagnostics.
220
+ - `AGENTS.md`, `CLAUDE.md`, and Agent Skills are loaded as needed instead of being resent in full on every open.
221
+ - Managed worktrees provide real Git isolation when you ask for parallel work, with fast-forward-only finalization.
222
+ - Workspace Relay runs work on another ForgeRelay instance; Composite Workspaces coordinate several independent environments from one Host.
323
223
 
324
- See [Roadmap](docs/roadmap.md) for the current plan.
224
+ Lifecycle Hooks, Workspace Tasks, local Subagents, Activity/Audit, checkpoints, and recovery are included too. They are optional parts of the workflow; the [Wiki](https://github.com/Akira-TL/forgerelay/wiki) documents them when you need them.
325
225
 
326
- ## Releases
226
+ By default, ForgeRelay works in the checkout you already have. It does not silently create worktrees, copy Git-ignored files, install Language Servers, or bundle local coding runtimes such as Codex, Claude Code, or Pi.
327
227
 
328
- ForgeRelay uses standard SemVer, starting at `0.1.0`.
228
+ ## Security
329
229
 
330
- Prepare a release with:
230
+ ForgeRelay gives an Agent real local execution capability.
331
231
 
332
- ```bash
333
- npm run release:check
334
- npm run release:patch
335
- npm run release:minor
336
- npm run release:major
337
- ```
232
+ Filesystem tools are constrained by the opened Workspace and configured allowed roots. Shell commands run with the authority of the local user running ForgeRelay; **the shell is not an OS sandbox**. Connect only MCP hosts you trust, expose only project roots you want an Agent to access, and keep the Owner password private.
338
233
 
339
- Daily branch pushes do not run cloud CI. Commit the release-ready tree, push it to
340
- `main`, then push the matching `vX.Y.Z` tag. That tag is the only cloud CI and publish
341
- trigger: GitHub Actions runs the reusable Linux/macOS/Windows verification matrix,
342
- then publishes `@akira-tl/forgerelay` and creates the matching GitHub Release only
343
- after all platforms succeed. `npm run release:verify` remains available only when a
344
- cloud failure needs local reproduction against the pinned Node runtime; it is not a
345
- release prerequisite.
234
+ Elevated / administrator startup is rejected by default. It only proceeds after explicit opt-in, with a warning that system-level AI-driven changes may be irreversible.
346
235
 
347
- See [Versioning and Release Management](docs/reference/versioning.md) for the bootstrap and
348
- Trusted Publishing setup.
236
+ See the [Security model](https://github.com/Akira-TL/forgerelay/wiki/Security) for the full boundary.
349
237
 
350
238
  ## Documentation
351
239
 
352
- - [GitHub Wiki](https://github.com/Akira-TL/forgerelay/wiki) — 面向用户的使用指南、概念说明与故障排查入口。
353
- - [Setup Guide](docs/setup.md)
354
- - [Local Debugging and 7677 Acceptance](docs/debugging.md)
355
- - [ChatGPT Coding Workflow](docs/chatgpt-coding-workflow.md)
356
- - [Configuration Reference](docs/configuration.md)
357
- - [Agent Profile Schema](docs/agents/profile-schema.md)
358
- - [Native File Download](docs/reference/artifact-exchange.md)
359
- - [Security Model](docs/security.md)
360
- - [Troubleshooting](docs/gotchas.md)
361
- - [Roadmap](docs/roadmap.md)
362
- - [Versioning and Release Management](docs/reference/versioning.md)
363
- - [GitHub Wiki Maintenance](docs/maintenance/wiki.md)
364
- - [Changelog](CHANGELOG.md)
365
- - [Attribution Notice](NOTICE.md)
366
-
367
- ## Upstream and attribution
368
-
369
- ForgeRelay is based on the original
370
- [Waishnav/devspace](https://github.com/Waishnav/devspace) project by Waishnav,
371
- released under the MIT License. ForgeRelay has its own name, package, release
372
- stream, runtime changes, and roadmap, but the upstream provenance remains part of
373
- the project.
374
-
375
- The original copyright notice remains in [LICENSE](LICENSE). See
376
- [NOTICE.md](NOTICE.md) for the attribution and modification notice.
377
-
378
- ## Local development
240
+ - [Getting Started](https://github.com/Akira-TL/forgerelay/wiki/Getting-Started)
241
+ - [Configuration](https://github.com/Akira-TL/forgerelay/wiki/Configuration)
242
+ - [Security model](https://github.com/Akira-TL/forgerelay/wiki/Security)
243
+ - [Troubleshooting](https://github.com/Akira-TL/forgerelay/wiki/Troubleshooting)
244
+ - [Full Wiki](https://github.com/Akira-TL/forgerelay/wiki)
245
+
246
+ > [!NOTE]
247
+ > ForgeRelay is an independently maintained derivative of the MIT-licensed [Waishnav/devspace](https://github.com/Waishnav/devspace) project. It is not an official DevSpace release. The original copyright and MIT License remain in [LICENSE](LICENSE); provenance and modification details are documented in [NOTICE.md](NOTICE.md).
248
+
249
+ ## Development
379
250
 
380
251
  ```bash
381
252
  npm install --include=dev
@@ -386,11 +257,4 @@ npm test
386
257
  npm run build
387
258
  ```
388
259
 
389
- `npm run dev` uses the checked-in local debug configuration and binds ForgeRelay
390
- to `127.0.0.1:7677`, keeping the normal `7676` product port free. The
391
- `debug:accept` command starts a temporary 7677 server and sends real
392
- HTTP/OAuth/MCP requests through it, including workspace tools, managed worktree
393
- close, and Hooks v1 lifecycle recording. Debug state stays under the gitignored
394
- `.forgerelay-debug/` directory.
395
-
396
- See [Local Debugging](docs/debugging.md) for the exact configuration and scripts.
260
+ `npm run dev` uses the 7677 debug runtime. Product port 7676 is kept separate from development acceptance.
package/docs/roadmap.md CHANGED
@@ -348,10 +348,9 @@ recovery, checkpoint, and retention facts; the Gateway only routes and presents
348
348
  results. Development acceptance remains on isolated 7677/7678 instances and never uses
349
349
  the normal 7676 installation.
350
350
 
351
- Later refinements may add `.worktreeinclude`-style explicit copying of selected
352
- Git-ignored files. Native Windows Command Shell Runtime support was intentionally
353
- kept out of the 0.9 recovery/history line and was subsequently delivered across
354
- the 0.10.x P3 work for PowerShell 7, Windows PowerShell 5.1, and `cmd.exe`.
351
+ Native Windows Command Shell Runtime support was intentionally kept out of the
352
+ 0.9 recovery/history line and was subsequently delivered across the 0.10.x P3
353
+ work for PowerShell 7, Windows PowerShell 5.1, and `cmd.exe`.
355
354
 
356
355
  ## Workspace Task Lists
357
356
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akira-tl/forgerelay",
3
- "version": "0.10.5",
3
+ "version": "1.0.0",
4
4
  "description": "Local development control plane for MCP coding agents.",
5
5
  "type": "module",
6
6
  "homepage": "https://github.com/Akira-TL/forgerelay#readme",