@synctek/forgeos 2.0.0 → 2.1.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.
Files changed (45) hide show
  1. package/README.md +177 -268
  2. package/dist/cli/commands/evidence.d.ts.map +1 -1
  3. package/dist/cli/commands/evidence.js +18 -0
  4. package/dist/cli/commands/evidence.js.map +1 -1
  5. package/dist/cli/commands/federation.d.ts +9 -4
  6. package/dist/cli/commands/federation.d.ts.map +1 -1
  7. package/dist/cli/commands/federation.js +73 -30
  8. package/dist/cli/commands/federation.js.map +1 -1
  9. package/dist/cli/commands/gate.d.ts.map +1 -1
  10. package/dist/cli/commands/gate.js +23 -0
  11. package/dist/cli/commands/gate.js.map +1 -1
  12. package/dist/cli/commands/review.d.ts.map +1 -1
  13. package/dist/cli/commands/review.js +25 -0
  14. package/dist/cli/commands/review.js.map +1 -1
  15. package/dist/mcp/handlers.js +17 -0
  16. package/dist/mcp/handlers.js.map +1 -1
  17. package/dist/shared/types.d.ts +15 -1
  18. package/dist/shared/types.d.ts.map +1 -1
  19. package/dist/trust/index.d.ts +1 -1
  20. package/dist/trust/index.js +1 -1
  21. package/package.json +11 -6
  22. package/dist/client.d.ts +0 -46
  23. package/dist/client.d.ts.map +0 -1
  24. package/dist/client.js +0 -146
  25. package/dist/client.js.map +0 -1
  26. package/dist/handlers.d.ts +0 -11
  27. package/dist/handlers.d.ts.map +0 -1
  28. package/dist/handlers.js +0 -424
  29. package/dist/handlers.js.map +0 -1
  30. package/dist/http-server.d.ts +0 -25
  31. package/dist/http-server.d.ts.map +0 -1
  32. package/dist/http-server.js +0 -246
  33. package/dist/http-server.js.map +0 -1
  34. package/dist/index.d.ts +0 -3
  35. package/dist/index.d.ts.map +0 -1
  36. package/dist/index.js +0 -40
  37. package/dist/index.js.map +0 -1
  38. package/dist/tools.d.ts +0 -944
  39. package/dist/tools.d.ts.map +0 -1
  40. package/dist/tools.js +0 -513
  41. package/dist/tools.js.map +0 -1
  42. package/dist/types.d.ts +0 -183
  43. package/dist/types.d.ts.map +0 -1
  44. package/dist/types.js +0 -3
  45. package/dist/types.js.map +0 -1
package/README.md CHANGED
@@ -1,109 +1,84 @@
1
- # @synctek/forgeos-mcp
1
+ # @synctek/forgeos
2
2
 
3
- MCP server that connects Claude Code (and any MCP-compatible AI agent) to the
4
- [ForgeOS](https://synctek.io/forgeos) governance engine.
3
+ **The governance OS for agentic software teams.**
5
4
 
6
- ForgeOS enforces structured software development through gates, initiatives,
7
- and quality reviews. This server exposes the ForgeOS engine as 12 typed MCP
8
- tools so your AI agent can create initiatives, propose changesets, submit
9
- evidence, run structured reviews, promote gates, and query institutional
10
- knowledge all from within a single Claude Code session.
5
+ ---
6
+
7
+ ForgeOS is a **persistent governance, memory, and trust layer** that any AI plugs into. It is not an AI. It is not an orchestrator. Your AI (Claude Code, Codex, Cursor, or any MCP-compatible agent) provides the judgment. ForgeOS provides the enforcement — structured gates that block premature releases, a Shared Mind that accumulates institutional knowledge across every session, and a tamper-evident ledger that proves every decision was made and reviewed correctly.
8
+
9
+ Session 100 is smarter than session 1 because ForgeOS feeds every past regression, gate failure, anti-pattern, and fix recipe back into your AI's context before it acts.
11
10
 
12
11
  ---
13
12
 
14
- ## Quick Start (stdio — recommended for Claude Code)
13
+ ## Why ForgeOS
15
14
 
16
- No install required:
15
+ - **Governance gates** — Risk-scored gate pipelines (intent → design → implementation → verification → hardening → release) block releases that skip required reviews or lack evidence. Gates are not advisory; they are enforced.
16
+ - **Shared Mind** — Institutional memory that persists across sessions. Patterns, anti-patterns, and fix recipes accumulate automatically. Every AI session inherits what past sessions learned.
17
+ - **Ed25519 trust ledger** — Every gate promotion, evidence submission, and review verdict is signed and hash-chained. Decisions are tamper-evident and attributable.
18
+ - **Federation** — Knowledge learned by one team propagates to all teams in your organization. One fix discovered in your payment module becomes a system-wide prevention.
19
+ - **Works with any AI** — ForgeOS exposes 21 MCP tools. If your AI client speaks MCP, it works with ForgeOS. No ForgeOS-specific AI model required.
17
20
 
18
- ```bash
19
- npx -y @synctek/forgeos-mcp
20
- ```
21
+ ---
21
22
 
22
- Set your API key and engine URL before running:
23
+ ## Install
23
24
 
24
25
  ```bash
25
- FORGEOS_API_KEY=your-key FORGEOS_ENGINE_URL=https://api.synctek.io npx -y @synctek/forgeos-mcp
26
+ npm install -g @synctek/forgeos
26
27
  ```
27
28
 
29
+ Requires Node.js 18+. One command installs three binaries: `forge` (CLI), `forgeos-mcp` (stdio MCP server), `forgeos-mcp-http` (HTTP MCP server).
30
+
28
31
  ---
29
32
 
30
- ## Claude Desktop Integration
33
+ ## Usage
34
+
35
+ ### Path 1: MCP — for AI agents (Claude Code, Cursor, etc.)
36
+
37
+ Add ForgeOS to your MCP client configuration. No install required for the MCP server itself — `npx` handles it.
31
38
 
32
- Add to your `claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude/`):
39
+ **Claude Code** (`~/.claude/mcp.json` or project-level `.mcp.json`):
33
40
 
34
41
  ```json
35
42
  {
36
43
  "mcpServers": {
37
44
  "forgeos": {
38
45
  "command": "npx",
39
- "args": ["-y", "@synctek/forgeos-mcp"],
46
+ "args": ["-y", "@synctek/forgeos"],
40
47
  "env": {
41
- "FORGEOS_API_KEY": "your-api-key-here",
42
- "FORGEOS_ENGINE_URL": "https://api.synctek.io"
48
+ "FORGE_API_KEY": "your-api-key",
49
+ "FORGE_ENGINE_URL": "https://api.forgeos.synctek.io"
43
50
  }
44
51
  }
45
52
  }
46
53
  }
47
54
  ```
48
55
 
49
- For Claude Code (`~/.claude/mcp.json` or project-level `.mcp.json`):
56
+ **Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
50
57
 
51
58
  ```json
52
59
  {
53
60
  "mcpServers": {
54
61
  "forgeos": {
55
62
  "command": "npx",
56
- "args": ["-y", "@synctek/forgeos-mcp"],
63
+ "args": ["-y", "@synctek/forgeos"],
57
64
  "env": {
58
- "FORGEOS_API_KEY": "your-api-key-here",
59
- "FORGEOS_ENGINE_URL": "https://api.synctek.io"
65
+ "FORGE_API_KEY": "your-api-key",
66
+ "FORGE_ENGINE_URL": "https://api.forgeos.synctek.io"
60
67
  }
61
68
  }
62
69
  }
63
70
  }
64
71
  ```
65
72
 
66
- ---
67
-
68
- ## HTTP/SSE Mode
73
+ Once configured, your AI can call `forge_init`, `forge_create_initiative`, `forge_propose_changeset`, and all other ForgeOS tools directly from within a session.
69
74
 
70
- For remote deployments or multi-tenant scenarios, run the HTTP server instead
71
- of stdio. Each request carries its own Bearer token — no shared state between
72
- callers.
75
+ **HTTP/SSE mode** (for remote deployments or multi-tenant scenarios):
73
76
 
74
77
  ```bash
75
- # Start the HTTP server (default port 8401)
76
- npx -y @synctek/forgeos-mcp forgeos-mcp-http
77
-
78
- # Or after installing globally:
79
- npm install -g @synctek/forgeos-mcp
78
+ # Start the HTTP MCP server (default port 8401)
80
79
  forgeos-mcp-http
81
80
  ```
82
81
 
83
- ### Endpoints
84
-
85
- | Method | Path | Description |
86
- |----------|-----------|------------------------------------------|
87
- | `POST` | `/mcp` | StreamableHTTP main channel (JSON-RPC) |
88
- | `GET` | `/mcp` | SSE fallback (server-to-client events) |
89
- | `DELETE` | `/mcp` | Session cleanup |
90
- | `GET` | `/health` | Liveness probe — no auth required |
91
-
92
- ### Calling the HTTP endpoint
93
-
94
- ```bash
95
- # Health check
96
- curl http://localhost:8401/health
97
-
98
- # MCP request with Bearer token
99
- curl -X POST http://localhost:8401/mcp \
100
- -H "Authorization: Bearer your-api-key" \
101
- -H "Content-Type: application/json" \
102
- -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
103
- ```
104
-
105
- ### Connecting an MCP client to the HTTP endpoint
106
-
107
82
  ```json
108
83
  {
109
84
  "mcpServers": {
@@ -118,266 +93,200 @@ curl -X POST http://localhost:8401/mcp \
118
93
  }
119
94
  ```
120
95
 
121
- ---
122
-
123
- ## Configuration
124
-
125
- | Environment Variable | Default | Description |
126
- |------------------------|--------------------------|-----------------------------------------------------|
127
- | `FORGEOS_API_KEY` | _(empty)_ | API key sent as `X-ForgeOS-API-Key` header |
128
- | `FORGEOS_ENGINE_URL` | `http://localhost:8400` | Base URL of the ForgeOS engine |
129
- | `MCP_HTTP_PORT` | `8401` | Port for the HTTP/SSE server |
130
- | `RATE_LIMIT_MAX` | `60` | Max requests per window (HTTP mode) |
131
- | `RATE_LIMIT_WINDOW_MS` | `60000` | Rate limit window in milliseconds (HTTP mode) |
132
-
133
- ---
134
-
135
- ## Tools Reference
136
-
137
- All tools return JSON. Errors surface as `{ "ok": false, "error": "..." }`.
138
-
139
- ### `forge_init`
140
-
141
- Initialize a ForgeOS governance session. Returns project state, active work,
142
- governance rules, and workflow runbook. Call on every session start.
143
-
144
- | Parameter | Type | Required | Description |
145
- |----------------|----------|----------|----------------------------------|
146
- | `project_id` | `string` | Yes | Project to initialize |
147
- | `developer_id` | `string` | No | Developer identifier (default: `local`) |
148
-
149
- ---
150
-
151
- ### `forge_create_initiative`
152
-
153
- Create a new initiative to track a piece of work. Returns the initiative with
154
- a generated ID.
155
-
156
- | Parameter | Type | Required | Description |
157
- |---------------|----------|----------|-----------------------------------------|
158
- | `project_id` | `string` | Yes | Project ID |
159
- | `title` | `string` | Yes | Initiative title |
160
- | `description` | `string` | Yes | What this initiative accomplishes |
161
- | `priority` | `string` | No | `low` \| `medium` \| `high` \| `critical` (default: `medium`) |
162
-
163
- ---
164
-
165
- ### `forge_propose_changeset`
166
-
167
- Propose a changeset for an initiative. The engine computes a risk score and
168
- determines required gates, reviewer roles, and evidence. Returns the changeset
169
- with a full gate pipeline.
170
-
171
- | Parameter | Type | Required | Description |
172
- |--------------------|------------|----------|------------------------------------|
173
- | `project_id` | `string` | Yes | Project ID |
174
- | `initiative_id` | `string` | Yes | Parent initiative |
175
- | `description` | `string` | Yes | What changed and why |
176
- | `files_changed` | `string[]` | Yes | File paths that changed |
177
- | `modules_affected` | `string[]` | Yes | Module/area names affected |
178
- | `branch` | `string` | No | Git branch name |
179
-
180
- ---
181
-
182
- ### `forge_get_profile`
183
-
184
- Fetch a reviewer persona profile for subagent injection. When a `project_id`
185
- is provided, the profile is enriched with Shared Mind patterns from prior
186
- reviews. Use the returned `system_prompt` as the subagent's instructions.
187
-
188
- | Parameter | Type | Required | Description |
189
- |--------------------|------------|----------|---------------------------------------------------------|
190
- | `role` | `string` | Yes | `architect` \| `qa_test` \| `security` \| `performance` \| `reliability` \| `accessibility` \| `docs_release` |
191
- | `project_id` | `string` | No | Project for contextualization |
192
- | `team_id` | `string` | No | Team ID for Shared Mind context (default: `default`) |
193
- | `modules_affected` | `string[]` | No | Modules to focus on |
194
- | `files_changed` | `string[]` | No | Files to focus on |
195
-
196
- ---
197
-
198
- ### `forge_submit_evidence`
96
+ ### Path 2: CLI — for humans and CI
199
97
 
200
- Submit evidence (test results, scan outputs, etc.) for a changeset.
201
- Auto-populates gate evidence requirements.
98
+ ```bash
99
+ forge --help
100
+ ```
202
101
 
203
- | Parameter | Type | Required | Description |
204
- |----------------|------------|----------|-----------------------------------------------------------------------------------------------|
205
- | `project_id` | `string` | Yes | Project ID |
206
- | `changeset_id` | `string` | Yes | Changeset ID |
207
- | `type` | `string` | Yes | `unit_test` \| `coverage` \| `lint` \| `security_scan` \| `benchmark` \| `migration_plan` \| `ux_snapshot` \| `a11y_audit` \| `ai_review` |
208
- | `summary` | `string` | Yes | Summary of the evidence |
209
- | `file_refs` | `string[]` | No | File references |
102
+ Common workflows:
210
103
 
211
- ---
104
+ ```bash
105
+ # Start a new governance session for a project
106
+ forge session start --project my-saas-app
212
107
 
213
- ### `forge_submit_review`
108
+ # Create an initiative to track a piece of work
109
+ forge initiative create --project my-saas-app --title "Add payment retry logic"
214
110
 
215
- Submit a complete review with findings and verdict. Creates and finalizes the
216
- review in one call.
111
+ # Propose a changeset; engine computes risk and required gates
112
+ forge changeset propose --project my-saas-app --initiative INIT-001 \
113
+ --files "src/payments/retry.ts,src/payments/webhook.ts"
217
114
 
218
- | Parameter | Type | Required | Description |
219
- |----------------|------------|----------|-----------------------------------------------|
220
- | `project_id` | `string` | Yes | Project ID |
221
- | `changeset_id` | `string` | Yes | Changeset ID |
222
- | `role` | `string` | Yes | Reviewer role (e.g. `security`, `architect`) |
223
- | `status` | `string` | Yes | `approved` \| `blocked` \| `pending` |
224
- | `notes` | `string` | Yes | Review summary |
225
- | `findings` | `object[]` | Yes | Structured findings (see below) |
115
+ # Check gate status
116
+ forge gate status --project my-saas-app --changeset CS-001
226
117
 
227
- Each finding in `findings`:
118
+ # Submit test evidence to satisfy a gate requirement
119
+ forge evidence submit --project my-saas-app --changeset CS-001 \
120
+ --type unit_test --summary "All 42 payment retry tests pass"
228
121
 
229
- | Field | Type | Required | Description |
230
- |------------------|----------|----------|------------------------------------------------|
231
- | `category` | `string` | Yes | Finding category |
232
- | `severity` | `string` | Yes | `pass` \| `warning` \| `concern` \| `fail` |
233
- | `observation` | `string` | Yes | What was observed |
234
- | `recommendation` | `string` | No | Suggested fix |
122
+ # Query Shared Mind for relevant patterns before reviewing
123
+ forge mind query --context "payment retry exponential backoff"
124
+ ```
235
125
 
236
126
  ---
237
127
 
238
- ### `forge_check_gates`
128
+ ## What ForgeOS provides vs. what your AI provides
239
129
 
240
- Get the gate pipeline status for a changeset. Shows which gates are passed,
241
- pending, or failed, and what is needed to advance.
130
+ | Capability | ForgeOS | Your AI |
131
+ |---|---|---|
132
+ | Governance gate enforcement | Yes — hard blocks | — |
133
+ | Risk scoring for changesets | Yes — engine-computed | — |
134
+ | Institutional memory (cross-session) | Yes — Shared Mind | No — ephemeral per session |
135
+ | Ed25519 signed audit ledger | Yes | — |
136
+ | Federation across teams | Yes | — |
137
+ | Code judgment and analysis | — | Yes |
138
+ | Review recommendations | — | Yes |
139
+ | Test generation | — | Yes |
140
+ | Natural language reasoning | — | Yes |
242
141
 
243
- | Parameter | Type | Required | Description |
244
- |----------------|----------|----------|----------------|
245
- | `project_id` | `string` | Yes | Project ID |
246
- | `changeset_id` | `string` | Yes | Changeset ID |
142
+ Your AI reasons. ForgeOS remembers, enforces, and proves.
247
143
 
248
144
  ---
249
145
 
250
- ### `forge_promote_gate`
146
+ ## How it works
251
147
 
252
- Promote a gate to passed status. All requirements (evidence + reviews) must be
253
- satisfied. Advances the pipeline to the next gate.
148
+ ```
149
+ Your codebase (local)
150
+
151
+
152
+ Your AI agent ──(MCP tools)──► ForgeOS MCP server ──(REST)──► ForgeOS engine
153
+ (Claude, Codex, forgeos-mcp (stdio) (local or hosted)
154
+ Cursor, etc.) forgeos-mcp-http (SSE)
155
+
156
+
157
+ Shared Mind ◄── Federation
158
+ Trust ledger
159
+ Gate pipeline
160
+ ```
254
161
 
255
- | Parameter | Type | Required | Description |
256
- |----------------|----------|----------|-------------------------------------------------------------------------------------------------|
257
- | `project_id` | `string` | Yes | Project ID |
258
- | `changeset_id` | `string` | Yes | Changeset ID |
259
- | `gate_id` | `string` | Yes | `intent` \| `design` \| `implementation` \| `verification` \| `hardening` \| `release` |
260
- | `promoted_by` | `string` | No | Who is promoting (default: `local_agent`) |
162
+ The engine runs locally (self-hosted) or on Synctek-hosted infrastructure. Your source code never leaves your machine — the engine receives only metadata: file paths, module names, changeset descriptions, review verdicts. Federation uses a fail-closed privacy scrubber before any data propagates across team boundaries.
261
163
 
262
164
  ---
263
165
 
264
- ### `forge_release_check`
265
-
266
- Check if a changeset is ready to release. Returns `can_release` status and any
267
- remaining blockers.
268
-
269
- | Parameter | Type | Required | Description |
270
- |----------------|----------|----------|----------------|
271
- | `project_id` | `string` | Yes | Project ID |
272
- | `changeset_id` | `string` | Yes | Changeset ID |
273
-
274
- ---
166
+ ## MCP Tools Reference
275
167
 
276
- ### `forge_query_mind`
168
+ All tools return JSON. Errors surface as `{ "ok": false, "error": "..." }`.
277
169
 
278
- Search the Shared Mind for institutional knowledge. Returns patterns,
279
- anti-patterns, and lessons relevant to the given context.
170
+ | Tool | Description |
171
+ |---|---|
172
+ | `forge_init` | Initialize a governance session. Returns project state, active work, governance rules, workflow runbook, and setup scorecard. Call at session start. |
173
+ | `forge_create_project` | Create a new ForgeOS project — the top-level container for initiatives, changesets, and governance workflows. |
174
+ | `forge_quickstart` | Create a sandbox project and run a complete governance cycle in seconds. Ideal for first-time setup and verification. |
175
+ | `forge_discover` | Analyze your repo's tech stack and get a recommended governance configuration, preset, and CI hints. |
176
+ | `forge_get_presets` | List available governance presets: Startup, Enterprise, Regulated, Mobile Release QA. |
177
+ | `forge_configure_project_gates` | Apply a governance preset or custom gate template to a project. Sets which gates are required and what evidence satisfies each. |
178
+ | `forge_scorecard` | Check setup completeness. Shows which onboarding steps are done and what to do next. |
179
+ | `forge_create_initiative` | Create an initiative to track a piece of work. Returns the initiative with a generated ID. |
180
+ | `forge_get_workflow` | Get the current workflow state for an initiative — current step, what is needed next, overall progress. |
181
+ | `forge_workflow_template` | Get copy-paste workflow templates for common scenarios: bugfix, feature, hotfix, release candidate. |
182
+ | `forge_propose_changeset` | Propose a changeset. Engine computes a risk score and determines required gates, reviewer roles, and evidence requirements. |
183
+ | `forge_recommend_gates` | Get a gate recommendation for a changeset based on risk analysis — recommended gates, minimum gates, and rationale. |
184
+ | `forge_get_context` | Get comprehensive context for a changeset: SharedMind patterns, quality warnings, past regressions, and relevant lessons. Call before submitting evidence or reviews. |
185
+ | `forge_check_gates` | Get the gate pipeline status for a changeset — which gates are passed, pending, or failed, and what is needed to advance. |
186
+ | `forge_promote_gate` | Promote a gate to passed status. All evidence and reviewer requirements must be satisfied. Advances the pipeline. |
187
+ | `forge_release_check` | Check if a changeset is ready to release. Returns `can_release` status and any remaining blockers. |
188
+ | `forge_submit_evidence` | Submit evidence (test results, scan outputs, coverage reports, benchmarks) for a changeset. Auto-populates gate requirements. |
189
+ | `forge_submit_review` | Submit a complete review with structured findings and a verdict (`approved` / `blocked` / `pending`). |
190
+ | `forge_get_profile` | Fetch a reviewer persona (architect, security, qa_test, performance, reliability, accessibility, docs_release) enriched with Shared Mind patterns. Returns a `system_prompt` for subagent injection. |
191
+ | `forge_query_mind` | Search the Shared Mind for patterns, anti-patterns, and lessons relevant to a given context or domain. |
192
+ | `forge_observe` | Record a pattern, anti-pattern, fix recipe, architecture decision, or lesson to the Shared Mind. |
193
+
194
+ ### Typical AI agent workflow
280
195
 
281
- | Parameter | Type | Required | Description |
282
- |-----------|----------|----------|------------------------------------------|
283
- | `context` | `string` | Yes | Search context (keywords, module names) |
284
- | `team_id` | `string` | No | Team ID (default: `default`) |
285
- | `domain` | `string` | No | Specific domain to search |
196
+ ```
197
+ forge_init → bootstrap session, receive runbook and state
198
+ forge_create_initiative create initiative, get initiative_id
199
+ forge_propose_changeset propose work, receive risk score + gate pipeline
200
+ forge_get_context → pull SharedMind context before reviewing
201
+ forge_get_profile → fetch reviewer persona enriched with past patterns
202
+ (run subagent review using the returned system_prompt)
203
+ forge_submit_evidence → submit test results, scan output, coverage
204
+ forge_submit_review → record reviewer verdict and findings
205
+ forge_check_gates → inspect gate pipeline status
206
+ forge_promote_gate → advance gates as evidence accumulates
207
+ forge_release_check → confirm all gates cleared before shipping
208
+ forge_observe → record lessons back to Shared Mind
209
+ ```
286
210
 
287
211
  ---
288
212
 
289
- ### `forge_observe`
290
-
291
- Record an observation to the Shared Mind. Use when you discover patterns,
292
- anti-patterns, or lessons during development.
293
-
294
- | Parameter | Type | Required | Description |
295
- |--------------------|------------|----------|---------------------------------------------------------------------------------|
296
- | `domain` | `string` | Yes | Knowledge domain (e.g. module name, technology) |
297
- | `observation_type` | `string` | Yes | `pattern` \| `anti-pattern` \| `fix-recipe` \| `architecture-decision` \| `lesson` |
298
- | `content` | `string` | Yes | What was observed |
299
- | `team_id` | `string` | No | Team ID (default: `default`) |
300
- | `confidence` | `number` | No | Confidence 0.0–1.0 (default: `0.8`) |
301
- | `tags` | `string[]` | No | Tags for categorization |
213
+ ## CLI Commands Reference
214
+
215
+ The `forge` binary exposes 14 command groups:
216
+
217
+ | Group | Description |
218
+ |---|---|
219
+ | `forge project` | Create, list, and configure projects |
220
+ | `forge initiative` | Create and manage initiatives |
221
+ | `forge changeset` | Propose changesets, view risk analysis |
222
+ | `forge gate` | Check status, promote gates, view pipeline |
223
+ | `forge evidence` | Submit and list evidence for changesets |
224
+ | `forge review` | Submit reviews, list reviewer verdicts |
225
+ | `forge session` | Start and manage governance sessions |
226
+ | `forge mind` | Query and write to the Shared Mind |
227
+ | `forge trust` | Inspect trust scores, verify ledger signatures |
228
+ | `forge federation` | Manage cross-team knowledge federation |
229
+ | `forge analyze` | Analyze changesets, modules, and risk |
230
+ | `forge score` | View quality scores and trust metrics |
231
+ | `forge build` | Build and deployment governance workflows |
232
+ | `forge outcome` | Track and report on initiative outcomes |
233
+
234
+ Run `forge <group> --help` for subcommands.
302
235
 
303
236
  ---
304
237
 
305
- ### `forge_get_workflow`
306
-
307
- Get the current workflow state for an initiative. Shows which step the
308
- developer is on, what is needed next, and overall progress.
309
-
310
- | Parameter | Type | Required | Description |
311
- |-----------------|----------|----------|----------------|
312
- | `initiative_id` | `string` | Yes | Initiative ID |
238
+ ## Configuration
313
239
 
314
- ---
240
+ | Variable | Default | Description |
241
+ |---|---|---|
242
+ | `FORGE_API_KEY` | _(empty)_ | API key for the ForgeOS engine |
243
+ | `FORGE_ENGINE_URL` | `http://localhost:8000` | Engine base URL |
244
+ | `MCP_HTTP_PORT` | `8401` | Port for the HTTP/SSE MCP server |
245
+ | `RATE_LIMIT_MAX` | `60` | Max requests per window (HTTP mode) |
246
+ | `RATE_LIMIT_WINDOW_MS` | `60000` | Rate limit window in ms (HTTP mode) |
315
247
 
316
- ## Typical Workflow
248
+ Config file alternative (`~/.forgeos/config.json`):
317
249
 
318
- ```
319
- forge_init → bootstrap session, get runbook
320
- forge_create_initiative → create initiative, get initiative_id
321
- forge_propose_changeset → propose work, engine computes risk + gates
322
- forge_get_profile → fetch reviewer persona (optional: enrich with Shared Mind)
323
- (run subagent review using returned system_prompt)
324
- forge_submit_evidence → upload test results, scan output, etc.
325
- forge_submit_review → record reviewer verdict + findings
326
- forge_check_gates → inspect gate pipeline status
327
- forge_promote_gate → advance gates as evidence accumulates
328
- forge_release_check → confirm all gates cleared before shipping
329
- forge_observe → record lessons learned back to Shared Mind
250
+ ```json
251
+ {
252
+ "engine_url": "https://api.forgeos.synctek.io",
253
+ "api_key": "your-api-key"
254
+ }
330
255
  ```
331
256
 
332
257
  ---
333
258
 
334
- ## Security
259
+ ## Trust and Security
335
260
 
336
- - **Per-request auth isolation** — the HTTP server creates a new `ForgeOSClient`
337
- per request, threaded from the `Authorization: Bearer <key>` header.
338
- `process.env` is never mutated and there is no shared singleton across requests.
339
- - **Rate limiting** — token-bucket per API key (or IP fallback).
340
- Default: 60 requests per 60-second window. Configurable via `RATE_LIMIT_MAX`
341
- and `RATE_LIMIT_WINDOW_MS`.
342
- - **No credential leakage** — stdio mode reads `FORGEOS_API_KEY` from env once
343
- at startup (single-tenant). HTTP mode never touches env for key resolution.
344
- - **CORS** — all origins allowed by default (clients are local AI agents).
345
- Restrict in production by configuring a reverse proxy.
261
+ - **Ed25519 signed ledger** — Every gate promotion, evidence submission, and review is signed with Ed25519 and hash-chained. The audit trail is tamper-evident and independently verifiable.
262
+ - **Source code never transmitted** — The engine receives metadata only: file paths, module names, changeset descriptions, verdicts. Your source code stays on your machine.
263
+ - **Fail-closed privacy scrubber** — Federation runs all observations through a privacy scrubber before propagating cross-team. If the scrubber cannot confirm safety, the observation is blocked, not passed.
264
+ - **Per-request auth isolation (HTTP mode)** — A new client instance is created per request from the `Authorization: Bearer` header. `process.env` is never mutated; no shared singleton across requests.
265
+ - **Rate limiting** — Token-bucket per API key (or IP fallback). Default: 60 requests per 60-second window, configurable.
266
+ - **Local-first** — The engine can run entirely on your own infrastructure. No data leaves your environment unless you opt into hosted infrastructure.
346
267
 
347
268
  ---
348
269
 
349
- ## Development
270
+ ## Pricing
350
271
 
351
- ```bash
352
- # Clone and install
353
- git clone https://github.com/synctek/forgeos-mcp
354
- cd forgeos-mcp
355
- npm install
356
-
357
- # Run stdio server in dev mode (tsx, no build required)
358
- npm run dev
359
-
360
- # Run HTTP server in dev mode
361
- npm run dev:http
272
+ [https://forgeos.synctek.io/pricing](https://forgeos.synctek.io/pricing)
362
273
 
363
- # Build
364
- npm run build
274
+ | Plan | Price | Best for |
275
+ |---|---|---|
276
+ | Pro | $49/mo | Individual developers and small teams |
277
+ | Team | $149/mo | Engineering teams with federation needs |
278
+ | Enterprise | Custom | Regulated industries, on-prem deployments |
365
279
 
366
- # Run built stdio server
367
- npm start
368
-
369
- # Run built HTTP server
370
- npm run start:http
371
- ```
280
+ 14-day free trial. No credit card required to start.
372
281
 
373
282
  ---
374
283
 
375
284
  ## Links
376
285
 
377
- - Product: [synctek.io/forgeos](https://synctek.io/forgeos)
286
+ - Website: [forgeos.synctek.io](https://forgeos.synctek.io)
378
287
  - Docs: [docs.synctek.io/forgeos](https://docs.synctek.io/forgeos)
379
288
  - Issues: [github.com/synctek/forgeos-mcp/issues](https://github.com/synctek/forgeos-mcp/issues)
380
- - npm: [@synctek/forgeos-mcp](https://www.npmjs.com/package/@synctek/forgeos-mcp)
289
+ - npm: [@synctek/forgeos](https://www.npmjs.com/package/@synctek/forgeos)
381
290
 
382
291
  ---
383
292
 
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/evidence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAUvD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,aAAa,GACpB,IAAI,CA2GN"}
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/evidence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAiCvD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,aAAa,GACpB,IAAI,CA6GN"}
@@ -7,6 +7,22 @@
7
7
  * forge evidence list --project <pid> --changeset <cid> --gate <gid>
8
8
  */
9
9
  import { formatTable, formatJSON, formatSuccess, formatError, } from "../output.js";
10
+ // ---------------------------------------------------------------------------
11
+ // SharedMind auto-observation helper (fire-and-forget)
12
+ // Records what evidence types teams produce so SharedMind accumulates
13
+ // knowledge about team quality patterns and evidence coverage gaps.
14
+ // ---------------------------------------------------------------------------
15
+ function observeEvidenceSubmit(client, changesetId, gateId, evidenceType, summary) {
16
+ client
17
+ .post(`/api/shared-mind/default/observe`, {
18
+ domain: evidenceType || "evidence",
19
+ content: `Evidence (${evidenceType}) submitted for gate ${gateId} on changeset ${changesetId}: ${summary}`,
20
+ type: "pattern",
21
+ confidence: 0.5,
22
+ source_agent: "cli_forge",
23
+ })
24
+ .catch(() => { }); // fire-and-forget — never surface errors to user
25
+ }
10
26
  export function registerEvidenceCommands(parent, client) {
11
27
  const evidence = parent
12
28
  .command("evidence")
@@ -36,6 +52,7 @@ export function registerEvidenceCommands(parent, client) {
36
52
  const data = (await client.post(`/api/projects/${opts.project}/changesets/${opts.changeset}/gates/${opts.gate}/evidence`, body));
37
53
  if (opts.json) {
38
54
  console.log(formatJSON(data));
55
+ observeEvidenceSubmit(client, opts.changeset, opts.gate, opts.type, opts.content);
39
56
  return;
40
57
  }
41
58
  const evidenceId = data.id ?? "—";
@@ -46,6 +63,7 @@ export function registerEvidenceCommands(parent, client) {
46
63
  ["Summary", data.summary ?? opts.content],
47
64
  ["Submitted By", data.submitted_by ?? "—"],
48
65
  ]));
66
+ observeEvidenceSubmit(client, opts.changeset, opts.gate, opts.type, opts.content);
49
67
  }
50
68
  catch (err) {
51
69
  console.error(formatError(err));
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../../src/cli/commands/evidence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../../src/cli/commands/evidence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EACL,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,GACZ,MAAM,cAAc,CAAC;AAEtB,8EAA8E;AAC9E,uDAAuD;AACvD,sEAAsE;AACtE,oEAAoE;AACpE,8EAA8E;AAC9E,SAAS,qBAAqB,CAC5B,MAAqB,EACrB,WAAmB,EACnB,MAAc,EACd,YAAoB,EACpB,OAAe;IAEf,MAAM;SACH,IAAI,CAAC,kCAAkC,EAAE;QACxC,MAAM,EAAE,YAAY,IAAI,UAAU;QAClC,OAAO,EAAE,aAAa,YAAY,wBAAwB,MAAM,iBAAiB,WAAW,KAAK,OAAO,EAAE;QAC1G,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,GAAG;QACf,YAAY,EAAE,WAAW;KAC1B,CAAC;SACD,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,iDAAiD;AACvE,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAe,EACf,MAAqB;IAErB,MAAM,QAAQ,GAAG,MAAM;SACpB,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAEvC,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAE5E,QAAQ;SACL,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,4BAA4B,CAAC;SACzC,cAAc,CAAC,qBAAqB,EAAE,YAAY,CAAC;SACnD,cAAc,CAAC,mBAAmB,EAAE,cAAc,CAAC;SACnD,cAAc,CAAC,cAAc,EAAE,SAAS,CAAC;SACzC,cAAc,CAAC,eAAe,EAAE,qDAAqD,CAAC;SACtF,cAAc,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;SACnE,MAAM,CAAC,oBAAoB,EAAE,iCAAiC,EAAE,EAAE,CAAC;SACnE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,IAAI,GAA4B;gBACpC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,IAAI,CAAC,QAAQ;oBACtB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;oBACvE,CAAC,CAAC,EAAE;aACP,CAAC;YAEF,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAC7B,iBAAiB,IAAI,CAAC,OAAO,eAAe,IAAI,CAAC,SAAS,UAAU,IAAI,CAAC,IAAI,WAAW,EACxF,IAAI,CACL,CAAa,CAAC;YAEf,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9B,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAClF,OAAO;YACT,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CACT,WAAW,CACT,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB;gBACE,CAAC,IAAI,EAAE,UAAU,CAAC;gBAClB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;gBAChC,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;gBACzC,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;aAC3C,CACF,CACF,CAAC;YACF,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,GAA4B,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,4EAA4E;IAC5E,gBAAgB;IAChB,4EAA4E;IAE5E,QAAQ;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0BAA0B,CAAC;SACvC,cAAc,CAAC,qBAAqB,EAAE,YAAY,CAAC;SACnD,cAAc,CAAC,mBAAmB,EAAE,cAAc,CAAC;SACnD,cAAc,CAAC,cAAc,EAAE,SAAS,CAAC;SACzC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAC3B,iBAAiB,IAAI,CAAC,OAAO,eAAe,IAAI,CAAC,SAAS,UAAU,IAAI,CAAC,IAAI,WAAW,CACzF,CAAC;YAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC/B,CAAC,CAAE,IAAmB;gBACtB,CAAC,CAAC,CAAE,IAAkC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAEzD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CACT,WAAW,CACT,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC,EACzC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACf,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;oBACnB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;oBACpC,CAAC,CAAC,CAAC,CAAC,OAAO;gBACb,CAAC,CAAC,YAAY;aACf,CAAC,CACH,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,GAA4B,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -2,10 +2,15 @@
2
2
  * `forge federation` — Federation operations.
3
3
  *
4
4
  * Subcommands:
5
- * forge federation status --project <pid>
6
- * forge federation enable --project <pid>
7
- * forge federation push --project <pid>
8
- * forge federation ingest --project <pid>
5
+ * forge federation status GET /v1/federation/status → show enabled/disabled,
6
+ * consent flags, last push/pull timestamps
7
+ * forge federation enable — POST /v1/federation/enable with per-flag consent
8
+ * (share_governance_patterns, share_usage_metrics,
9
+ * receive_ecosystem_insights)
10
+ * forge federation disable — POST /v1/federation/disable → opt out
11
+ * forge federation push — POST /v1/federation/push → manual push to hub
12
+ * forge federation ingest — POST /v1/federation/ingest → pull insights from hub
13
+ * and write to local SharedMind
9
14
  */
10
15
  import { Command } from "commander";
11
16
  import { ForgeOSClient } from "../../shared/client.js";
@@ -1 +1 @@
1
- {"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/federation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAavD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,aAAa,GACpB,IAAI,CAsIN"}
1
+ {"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/federation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAcvD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,aAAa,GACpB,IAAI,CAqMN"}