Public triumvirate: bootable out of the box (drop syncntn, default webui creds, accept source.npm) - #75
Merged
Merged
Conversation
validateRecipe required source.url, but connectome-cook's source grammar
also has the registry form { npm: "pkg@version" } — which the shipped
knowledge-miner recipe uses for its gitlab server since ee66b99. Result:
the public miner recipe failed to load with "mcpServers.gitlab.source.url
must be a non-empty string". Accept exactly one of url / npm; the field
stays validate-and-ignore at runtime.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Two defaults in the public recipes guaranteed a broken first launch:
- knowledge-miner.json shipped a syncntn block pointing at an org-internal
Notion adapter nobody outside has (and with NOTION_* vars set, the
dangling ../syncntn path dies at spawn instead of failing the env check).
Drop the block; Notion is now documented as an add-a-block opt-in in
both setup guides, with the prompt tool-name contract unchanged.
- triumvirate.json enabled webui bare, which binds 0.0.0.0 and makes the
host refuse to start without basicAuth (conductor exits 1 in cooked
containers). Default to ${WEBUI_USERNAME:-admin}/${WEBUI_PASSWORD:-admin}
and document the override in .env.example and the setup guide.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…aults Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Same crash-by-default class as syncntn: bare ${GEMINI_API_KEY} fails
recipe load for anyone without a Gemini key, and the ../scribe-mcp
sibling checkout does not exist on a fresh clone — while neither the
key nor the install appeared anywhere in the setup guides, so a
guide-following install always got a crashed miner. Unlike syncntn the
server is publicly available, so both guides now document the enable
path (sibling clone + block JSON + GEMINI_API_KEY); the miner prompt
s §5 scribe instructions are unchanged.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The public triumvirate currently cannot boot from a fresh clone, for several independent reasons. This PR fixes all of them.
1.
validateReciperejects cook'ssource.npmform (recipe unloadable)Since ee66b99 the miner's gitlab server declares
"source": { "npm": "@zereight/mcp-gitlab@2.1.25" }— cook's registry-bake grammar. The validator only knew the git form and demandedsource.url, sorecipes/knowledge-miner.jsonfailed to load at all:Fixed:
sourcenow accepts exactly one ofurl(git) /npm(registry spec), still validate-and-ignore at runtime. Newtest/recipe-mcp-source.test.tscovers both forms plus the neither/both/empty rejections.2.
syncntnandscribeblocks dropped fromknowledge-miner.jsonsyncntn: the Notion adapter it points at (
../syncntn/...) is org-internal — no public source exists, so the default block can only produce a startup failure (missing-env error at best; withNOTION_*set, a spawn ENOENT on the dangling path). It also made the recipe un-cookable (COPY syncntnwith no sibling checkout).scribe: same class — a bare
${GEMINI_API_KEY}fails recipe load for anyone without a Gemini key, and../scribe-mcpdoesn't exist on a fresh clone; neither the key nor the sibling install was mentioned anywhere in the setup guides, so even a flawless guide-following install got a crashed miner.Both are now add-a-block opt-ins: SETUP.md and TRIUMVIRATE-SETUP.md document the block to add and, for scribe (which unlike syncntn is publicly available —
dariakroshka/scribe-mcp), the full enable path: sibling clone,bun install,GEMINI_API_KEY. The miner's system prompt is unchanged — itssyncntn--*/scribe--*sections describe tools the agent simply won't have until wired in.The default miner surface is now zulip + gitlab + ddg — exactly the sources the setup guide actually walks you through.
3.
webuigets working default credentialstriumvirate.jsonhad"webui": true, which binds 0.0.0.0 and tripsassertSafeBind— the host refuses to start without basicAuth (conductor exits 1 in cooked containers). Now:Defaults to
admin:adminfor the local/demo case, overridable from.env;.env.exampleand the setup guide both carry a change-these-for-anything-remote warning, and TRIUMVIRATE-SETUP.md now actually mentions the web UI exists (port 7340).Verification
bun test: 598 pass / 0 fail (5 new)loadRecipein an env with noGEMINI_API_KEY/NOTION_*set (miner resolves to zulip, gitlab, ddg; webui resolves to admin:admin with env unset)## Unreleasedper CONTRIBUTING🤖 Generated with Claude Code