Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ offloaded to a compute box (`cs run "pnpm test"`) or CI — do not run them loca
- `mcp-server/` — the `opencode-workbench` MCP server + connector (TypeScript).
Tools: `describe_workbench`, `inspect_target`, `plan_clone`, `apply_clone`,
`verify_clone`, `install_component`, `remove_component`, `update_component`,
`list_required_credentials`, `run_auth_flow`, `provision_host`.
`list_required_credentials`, `run_auth_flow`.
Local + SSH transports.
See `mcp-server/README.md` and `docs/architecture/clone-mcp.md`.
- `connector.json` — connector manifest / registration snippet.
Expand Down
4 changes: 2 additions & 2 deletions WORKFLOW_STATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
| Phase #0 — Verify Docs | **COMPLETED** |
| Phase #1 — Research | **COMPLETED** |
| Phase #2 — Architecture | **COMPLETED** |
| Phase #3 — Implementation | **COMPLETED** (clone MCP + provision_host shipped) |
| Phase #3 — Implementation | **COMPLETED** (clone MCP shipped) |
| VDD chain (Phase 0–8) | **COMPLETED** — `constitution.md` + `vdd/` (gates G1–G7 PASS) |
| Distribution | In progress — npm published; Vercel live; registry publish prepared |

Expand All @@ -29,7 +29,7 @@ Timestamp: 2026-10-03
|------|--------|--------|
| Clone engine (inspect/plan/apply/verify) | DONE | `mcp-server/src/clone.ts` |
| Consent gate + value-blind credentials | DONE | `apply_clone`/`install_component` `confirm:true`; `list_required_credentials`, `run_auth_flow` |
| One-call provisioning | DONE | `provision_host` (platform scan + upgrade plan + OpenCode pin + verify + `help`) |
| One-call provisioning | REMOVED | `provision_host` removed in v4.0.0; use `apply_clone` (inspect → plan → apply → verify) |
| Tests + CI | DONE | 49 tests; `mcp-server.yml` |

### VDD chain — DELIVERED
Expand Down
2 changes: 1 addition & 1 deletion connector.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"name": "opencode-workbench",
"title": "OpenCode Workbench",
"description": "Clones the OpenCode workbench installation onto Linux machines, locally or over SSH.",
"version": "3.1.0",
"version": "4.0.0",
"transport": {
"type": "stdio",
"command": "npx",
Expand Down
4 changes: 2 additions & 2 deletions context7.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{
"$schema": "https://context7.com/schema/context7.json",
"projectTitle": "OpenCode Workbench (opencode-workbench)",
"description": "Provisions and clones the OpenCode workbench onto Linux machines — locally or over SSH — reproducing the config, MCP servers (35), agent skills (45), plugins and Docker tooling. Exposes 11 tools over stdio, including provision_host for one-call provisioning and a full install/update/remove lifecycle.",
"description": "Provisions and clones the OpenCode workbench onto Linux machines — locally or over SSH — reproducing the config, MCP servers (35), agent skills (45), plugins and Docker tooling. Exposes 10 tools over stdio, including a full install/update/remove lifecycle.",
"folders": [
"mcp-server",
"docs",
"configs"
],
"rules": [
"Run locally with `npx -y @simonmak-ascent/opencode-workbench` (Node stdio MCP server; no API key).",
"Drive a clone with the tool order `describe_workbench` → `inspect_target` → `plan_clone` → `apply_clone` → `verify_clone`; use `install_component`/`remove_component`/`update_component` for per-component lifecycle, and `provision_host` for a one-call end-to-end provision (platform scan + OpenCode + apply + verify; `help:true` documents parameters).",
"Drive a clone with the tool order `describe_workbench` → `inspect_target` → `plan_clone` → `apply_clone` → `verify_clone`; use `install_component`/`remove_component`/`update_component` for per-component lifecycle.",
"`apply_clone` and `install_component` are consent-gated: without `confirm:true` they return a plan and change nothing.",
"Every tool takes a `target` of `{mode: \"local\"}` or `{mode: \"ssh\", host, user, port?, identityFile?}`.",
"The connector never reads, transmits or writes secret values; `apply_clone` writes an empty `~/.env.workbench` template (mode 600) listing the `{env:VAR}` names to fill in.",
Expand Down
18 changes: 18 additions & 0 deletions docs/CHANGELOG_WORKBENCH.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,24 @@
> All notable changes to the workbench configuration.
> Format: [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)

## [2026-10-03] — v4.0.0

### Breaking
- Removed the MCP tool **`provision_host`** (one-call provisioning). It overlapped
`apply_clone` + `install_component` and was the main source of tool-purpose
ambiguity in TDQS disambiguation. Clients that call `provision_host` must switch
to the ordered `inspect_target → plan_clone → apply_clone { confirm: true } →
verify_clone` flow (or `install_component`/`update_component` for single steps).
Tool count 11 → **10**.
- Removed the internal `bootstrap.ts` / `platform.ts` orchestration modules and
their tests (`platform.test.ts`) alongside the tool.

### Changed
- TDQS (spec 1.2, hosted): **overall 4.8 / coherence 5.0 / description-quality 4.7**
(was 4.4–4.6 / 4.6 / 4.6). Disambiguation 4→5, naming 4→5, tool-count 5,
completeness 5. Parameter-semantics wording added to `verify_clone` and
`list_required_credentials`.

## [2026-10-03] — v3.1.0

### Added
Expand Down
2 changes: 1 addition & 1 deletion docs/architecture/clone-mcp.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ mcp-server/src/
| `verify_clone` | Re-check config, env template, and every component. |
| `list_required_credentials` | Value-blind: which keys are missing and how to acquire each. |
| `run_auth_flow` | Emit-and-verify acquisition guidance for one credential. |
| `provision_host` | One-call provisioning: kernel-up platform scan + dry-run upgrade plan, latest-stable OpenCode with recorded version, apply + verify; `help:true` documents every parameter without touching the target. Consent-gated. |
| `verify_clone` | Re-check config, env template, and every component. Consent-gated. |

### Connector model

Expand Down
4 changes: 2 additions & 2 deletions docs/architecture/opencode-runtime-snapshot.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ Notes:

## MCP Tool Surface

The server exposes **11 tools**: `describe_workbench`, `inspect_target`, `plan_clone`,
The server exposes **10 tools**: `describe_workbench`, `inspect_target`, `plan_clone`,
`apply_clone`, `verify_clone`, `install_component`, `remove_component`,
`update_component`, `list_required_credentials`, `run_auth_flow`, `provision_host`.
`update_component`, `list_required_credentials`, `run_auth_flow`.

## Agent Configuration

Expand Down
3 changes: 1 addition & 2 deletions docs/recovery/recovery-gap-analysis.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,7 @@
- Agent skills: **45** (was 28).
- Clone MCP hardened and extended: consent gate (`confirm:true` on
`apply_clone`/`install_component`), value-blind credential tools
(`list_required_credentials`, `run_auth_flow`), and `provision_host` (one-call
provisioning with a kernel-up scan and a recorded OpenCode version pin).
(`list_required_credentials`, `run_auth_flow`).
- Distribution: npm `@simonmak-ascent/[email protected]` published; hosted
connector live at `https://opencode-workbench.simonmak.com/mcp`; `server.json`
+ GitHub-OIDC registry-publish workflow added.
Expand Down
2 changes: 1 addition & 1 deletion glama.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"$schema": "https://glama.ai/mcp/schemas/server.json",
"maintainers": ["simonmak-ascent"],
"name": "opencode-workbench",
"description": "One-command reproducibility for your AI-agent workstation. Eleven tools let an agent inspect, plan, apply, verify, and manage an idempotent, consent-gated clone of the full OpenCode stack — the OpenCode CLI, 35 MCP servers, agent skills, plugins, and Docker infrastructure — onto any Linux machine, over SSH or locally, with zero secrets ever written. provision_host does it end-to-end, including a kernel-up platform scan and a recorded OpenCode version pin.",
"description": "One-command reproducibility for your AI-agent workstation. Ten tools let an agent inspect, plan, apply, verify, and manage an idempotent, consent-gated clone of the full OpenCode stack — the OpenCode CLI, 35 MCP servers, agent skills, plugins, and Docker infrastructure — onto any Linux machine, over SSH or locally, with zero secrets ever written.",
"repository": "https://github.com/simonmak-ascent/opencode-workbench",
"license": "MIT",
"runtime": "node",
Expand Down
10 changes: 4 additions & 6 deletions llms.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# OpenCode Workbench (opencode-workbench)

> Open-source (MIT) MCP server + connector that provisions and clones the OpenCode
> workbench onto Linux machines — locally or over SSH. Eleven tools cover a
> kernel-up platform scan, a one-call bootstrap, an idempotent, consent-gated
> clone, the install/update/remove lifecycle, and value-blind credential guidance.
> workbench onto Linux machines — locally or over SSH. Ten tools cover a
> kernel-up platform scan, an idempotent, consent-gated clone, the
> install/update/remove lifecycle, and value-blind credential guidance.
> No secret values are ever read, transmitted, or written.

## Connect
Expand All @@ -14,7 +14,7 @@
- Glama: https://glama.ai/mcp/servers/simonmak-ascent/opencode-workbench
- Context7 library ID: `/simonmak-ascent/opencode-workbench`

## MCP tools (11)
## MCP tools (10)

- `describe_workbench` — describe this server: repo, components by tier, optional MCP add-ons
- `inspect_target` — probe a machine: OS, arch, package manager, Node, Docker, OpenCode, home and npm-global paths
Expand All @@ -26,7 +26,6 @@
- `update_component` — update/upgrade a single component in place (`confirm`-gated)
- `list_required_credentials` — value-blind: which credentials are missing and how to acquire each
- `run_auth_flow` — emit-and-verify acquisition guidance for one credential
- `provision_host` — one-call provisioning: kernel-up platform scan + dry-run upgrade plan, latest-stable OpenCode with recorded version, apply + verify; `help:true` documents every parameter without touching the target

Every tool takes a `target`:

Expand All @@ -35,7 +34,6 @@ Every tool takes a `target`:
```

`apply_clone` options: `components[]`, `workspace`, `profileUrl`, `skipRepo`, `dryRun`, `confirm`.
`provision_host` options: `help`, `confirm`, `upgrade`, `assumeYes`, `opencodeVersion`, `dryRun`.

## Docs

Expand Down
1 change: 0 additions & 1 deletion mcp-server/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ From a checkout, use the local build instead:
| `remove_component` | Uninstall a single component by id (bounded subset; consent-gated). |
| `update_component` | Update/upgrade a single component in place (consent-gated). |
| `verify_clone` | Re-check config, env template, and every component. |
| `provision_host` | One-call provisioning: kernel-up platform scan + dry-run upgrade plan, latest-stable OpenCode + version pin, apply, verify; `help:true` documents parameters without touching the target. |
| `list_required_credentials` | Value-blind: which credentials are missing and how to acquire each. |
| `run_auth_flow` | Emit-and-verify acquisition guidance for one credential. |

Expand Down
155 changes: 0 additions & 155 deletions mcp-server/src/bootstrap.ts

This file was deleted.

Loading
Loading