Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

commit 6d4bc872c15370ae5073cc12e85f7d1f904f2128
parent 3150fc9589a5e98b66fb836b6a2e5e95e93eb532
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Mon, 28 Sep 2026 13:11:34 -0400

docs: every `archilyzer mcp` example runs `pnpm --silent` (W2 review S1)

`pnpm archilyzer` is a `pnpm run`, and pnpm 9 and 10 print their script
banner to stdout, the JSON-RPC channel, before the server starts; only pnpm
11 prints it to stderr. `pnpm --silent -C … archilyzer mcp` (spelled out,
since `claude mcp add` has its own -s) gives one stdout line, the
initialize answer, on 9.15.4, 10.18.0 and 11.26.0. AGENTS.md, README.md,
mcp/README.md (Run it, Add to Claude Code, mcp.json) and PUBLISH.md, and
the claims that stdout is clean now say why. FACTS amended.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

Diffstat:
MAGENTS.md | 8++++++--
MPUBLISH.md | 8+++++---
MREADME.md | 15+++++++++------
Mmcp/README.md | 19++++++++++++-------
Mplans/FACTS.md | 12++++++++++++
5 files changed, 44 insertions(+), 18 deletions(-)

diff --git a/AGENTS.md b/AGENTS.md @@ -54,14 +54,18 @@ claude mcp add archilyzer \ --env TRANSCRIPT_SITE_URL=https://jeralyzer.pages.dev \ --env ARCHILYZER_EDITOR_URL=http://localhost:3001 \ --env WORKER_TOKEN=… \ - -- pnpm -C "$PWD" archilyzer mcp + -- pnpm --silent -C "$PWD" archilyzer mcp ``` The two editor lines are optional: they let `fetch_clip` ask a local editor for clip media (`WORKER_TOKEN` is the editor's own, from `editor/.env`). `archilyzer mcp` (`common/bin/mcp.ts`) is `pnpm --filter yt-dlp-transcript-mcp exec tsx src/index.ts` behind the repo's CLI: the environment and any `--local`/`--remote`/`--hub` pass -through, and stdout carries nothing but the protocol (pnpm's `$ …` line goes to stderr). +through. **Keep `--silent`** (the long spelling — `claude mcp add` has its own `-s`): +`pnpm archilyzer` is a `pnpm run`, and pnpm 9 and 10 print its `> …` banner to STDOUT, +the JSON-RPC channel, before the server starts (pnpm 11 prints `$ …` to stderr). With +it, stdout carries nothing but the protocol on 9, 10 and 11 — on an installed checkout: +pnpm 11 may install first after a pull, and that output goes to stdout either way. `TRANSCRIPT_HUB_URL` federates several sites; `TRANSCRIPT_LOCAL_DIR` reads a local build off disk. The server never writes to an archive — `fetch_clip` asks the editor, diff --git a/PUBLISH.md b/PUBLISH.md @@ -439,9 +439,11 @@ the MCP server reads it over HTTP. Register it against your public URL — as ```sh claude mcp add archilyzer \ --env TRANSCRIPT_SITE_URL=https://<your-site>.pages.dev \ - -- pnpm -C "$PWD" archilyzer mcp + -- pnpm --silent -C "$PWD" archilyzer mcp ``` `archilyzer mcp` starts the same server as `pnpm --filter yt-dlp-transcript-mcp exec -tsx src/index.ts`, with the environment passed through and nothing on stdout but the -protocol; [mcp/README.md](mcp/README.md) has the other ways to run and register it. +tsx src/index.ts`, with the environment passed through. `--silent` is what keeps stdout +the protocol's alone: without it pnpm 9 and 10 print their `> …` script banner there +first (pnpm 11 prints `$ …` to stderr). [mcp/README.md](mcp/README.md) has the other +ways to run and register it. diff --git a/README.md b/README.md @@ -58,19 +58,20 @@ never modifies the archive: ```bash # point it at a published instance over HTTP (from the repo root) -TRANSCRIPT_SITE_URL=https://jeralyzer.pages.dev pnpm archilyzer mcp +TRANSCRIPT_SITE_URL=https://jeralyzer.pages.dev pnpm --silent archilyzer mcp ``` There is nothing to compile — it runs from source through `tsx`. `archilyzer mcp` is -the repo's CLI starting `mcp/`'s server; stdout carries only the MCP protocol. To -register it with Claude Code: +the repo's CLI starting `mcp/`'s server. Keep `--silent`: stdout is the MCP protocol's +channel, and without it pnpm 9 and 10 print their `> …` script banner there first +(pnpm 11 prints its `$ …` to stderr). To register it with Claude Code: ```bash claude mcp add archilyzer \ --env TRANSCRIPT_SITE_URL=https://jeralyzer.pages.dev \ --env ARCHILYZER_EDITOR_URL=http://localhost:3001 \ --env WORKER_TOKEN=… \ - -- pnpm -C /ABS/PATH/TO/this/repo archilyzer mcp + -- pnpm --silent -C /ABS/PATH/TO/this/repo archilyzer mcp ``` The two editor lines are optional: they let `fetch_clip` ask a local editor for clip @@ -323,14 +324,16 @@ claude mcp add archilyzer \ --env TRANSCRIPT_SITE_URL=https://jeralyzer.pages.dev \ --env ARCHILYZER_EDITOR_URL=http://localhost:3001 \ --env WORKER_TOKEN=… \ - -- pnpm -C "$PWD" archilyzer mcp + -- pnpm --silent -C "$PWD" archilyzer mcp claude # then try: /ask what has he said about magic tournaments? ``` The two editor lines are optional: they let `fetch_clip` ask a local editor for clip media (`WORKER_TOKEN` is the editor's own). Leave them out for research alone. `archilyzer mcp` is `pnpm --filter yt-dlp-transcript-mcp exec tsx src/index.ts` -through the repo's CLI; either form registers the same server. +through the repo's CLI. `--silent` (spelled out: `claude mcp add` has its own `-s`) +keeps pnpm's script banner off stdout, which is the protocol's channel — pnpm 9 and 10 +print it there without it. > **Register the server as `archilyzer`.** The shipped commands call > `mcp__archilyzer__ask_plan` / `mcp__archilyzer__sweep_plan`, and that tool name diff --git a/mcp/README.md b/mcp/README.md @@ -509,17 +509,22 @@ argument after `mcp` passed through: ```sh # a deployed site -pnpm archilyzer mcp --remote https://rekietalyzer.pages.dev +pnpm --silent archilyzer mcp --remote https://rekietalyzer.pages.dev # a hub, federating every member site -pnpm archilyzer mcp --hub https://archilyzer-hub.pages.dev +pnpm --silent archilyzer mcp --hub https://archilyzer-hub.pages.dev # local shards on disk (a relative path resolves from mcp/, so give an absolute one) -pnpm archilyzer mcp --local "$PWD/export/public" +pnpm --silent archilyzer mcp --local "$PWD/export/public" ``` -Logs go to stderr; stdout is the MCP JSON-RPC channel. pnpm's own `$ …` line goes -to stderr too, so nothing precedes the protocol. +Logs go to stderr; stdout is the MCP JSON-RPC channel. **Keep `--silent`** (spelled +out — `claude mcp add` has its own `-s`): `pnpm archilyzer` is a `pnpm run`, and +without it pnpm 9 and 10 print their `> …` script banner to stdout before the server +starts, which a client reads as broken protocol (pnpm 11 prints `$ …` to stderr). +With it, nothing precedes the protocol on 9, 10 or 11 — on an installed checkout: +after a pull that changed the lockfile, pnpm 11 may install first and print that to +stdout whatever the flags, so run `pnpm install` first. ## Add to Claude Code @@ -528,7 +533,7 @@ claude mcp add archilyzer \ --env TRANSCRIPT_SITE_URL=https://rekietalyzer.pages.dev \ --env ARCHILYZER_EDITOR_URL=http://localhost:3001 \ --env WORKER_TOKEN=… \ - -- pnpm -C /ABS/PATH/TO/yt-dlp-transcript-browser archilyzer mcp + -- pnpm --silent -C /ABS/PATH/TO/yt-dlp-transcript-browser archilyzer mcp ``` The two editor lines are optional: they let `fetch_clip` ask a local editor for @@ -551,7 +556,7 @@ registers it as `archilyzer` whatever archive it reads. Under another name (say "mcpServers": { "archilyzer": { "command": "pnpm", - "args": ["-C", "/ABS/PATH/TO/yt-dlp-transcript-browser", "archilyzer", "mcp"], + "args": ["--silent", "-C", "/ABS/PATH/TO/yt-dlp-transcript-browser", "archilyzer", "mcp"], "env": { "TRANSCRIPT_SITE_URL": "https://rekietalyzer.pages.dev", "ARCHILYZER_EDITOR_URL": "http://localhost:3001", diff --git a/plans/FACTS.md b/plans/FACTS.md @@ -6913,6 +6913,18 @@ out. O3's facts are the section just above ("O3 — runner lows"). Anchors are a - **`pnpm archilyzer <command>`** is a root script (`package.json`: `pnpm --filter yt-dlp-transcript-common exec tsx bin/archilyzer.ts`). pnpm prints its `$ …` line on stderr, so `-- pnpm -C "$PWD" archilyzer mcp` is a clean MCP registration (stdout carries only the protocol). + - *Amended 2026-09-28 (release 13, slice W2 fix round, W2 review S1): true on pnpm 11 only.* + `pnpm archilyzer` is a `pnpm run`, and **pnpm 9 and 10 print their script banner (a blank line, + `> yt-dlp-transcript-browser-monorepo@0.1.0 archilyzer <dir>`, `> <command>`, a blank line) to + STDOUT** before the server starts — ahead of the JSON-RPC answer. pnpm 11 prints `$ <command>` + to stderr. `pnpm exec` prints no banner on any of them. **Register it as + `-- pnpm --silent -C "$PWD" archilyzer mcp`** (the long spelling: `claude mcp add` has its own + `-s`); measured with an initialize request against an empty `--local` dir, stdout is exactly one + line, the answer, on 9.15.4, 10.18.0 and 11.26.0 (`--silent` also drops pnpm 11's stderr `$` + line; the server's own banner stays on stderr). 9.15.4 is what the Dockerfiles install, and + `package.json` pins no `packageManager`. Separately, pnpm 11 may install before a `run` or an + `exec` in a checkout whose install is missing or stale, and prints that to stdout whatever the + flags (both forms). Every doc example carries `--silent` since this amendment. - **`archilyzer doctor [--json]`** (`common/bin/doctor.ts`, row `archilyzer.ts:280`) is STRICTLY read-only: it stats the LMDB index and never opens it, never mkdirs, never writes settings, and calls a port "in use" when a TCP connect succeeds (it never binds). The one process-state change