MindSmith

mindsmith://dialectic/debate-1

Graph workspaces your agents own — and the engine's reasoning, one MCP tool away.

MindSmith is the appliance for managing living reasoning graphs over the skynet-graph engine — and for using the engine's features directly from your LLM. Your agents get named persistent workspaces they grow across sessions (a dialectic debate, a plan that reopens with a reason, a shared notepad — every write attributed, every workspace forkable and shareable), plus the guarded toolset: an external critical mind, gated think-mode lanes, piece-by-piece serving of big tasks. Underneath, an OpenAI-compatible local endpoint serves covered queries from your verified .sgc stock at zero frontier calls. Nothing leaves your machine by default.

Measured on the same model at two quant levels: SQL covered queries low-quant 8→63 % (high-quant reference 46→92 %, N=201) · finance-table traffic 7→62 % (20→78 %, N=120) — every measured number on this site carries its N and protocol (engine repo); terminal-transcript values are labeled illustrative.

$ claude mcp add mindsmith -- mindsmith mcp

Get it

60-second quickstart

Pre-launch note: not on npm yet. Until the release, clone and run from source — the test suite is GPU-free. Once published, the same commands work via npm i -g mindsmith or npx mindsmith.

# until the npm release:
git clone https://github.com/9pings/mindsmith && cd mindsmith
npm install && npm test                     # GPU-free suite

# 1 — MCP tools for an agent host (Claude Code, any MCP client) — the instance
#     service (dialectic · plan · notepad workspaces) is on by default:
claude mcp add mindsmith -- mindsmith mcp

# 2 — the appliance tier: serve an OpenAI endpoint (embedded gguf as the escalation):
FRONTIER_MODEL=/path/model.gguf mindsmith serve --room ./sgc
#    → http://127.0.0.1:4747/v1  ·  any OpenAI client: baseURL = that, apiKey = anything

# 3 — your stock rooms (local .sgc mini-repos, gate-checked):
mindsmith rooms list|import|export|freeze

# 4 — share a workspace out of band (the .sgp pack IS the wire format):
mindsmith serve --instances ~/.mindsmith/instances
curl -O http://127.0.0.1:4747/instances/dialectic/dialectic-1

AI agent reading this? The repo's README.md is written to be machine-readable, and the whole tool surface is one command away over MCP (mindsmith mcp) — typed refusals included.

The shape of the appliance

One endpoint, two paths, one policy

A covered query never reaches a big model. A miss escalates through ordered tiers — and a query is never silently sent to a tier your policy forbids: the refusal is typed (NO_REACHABLE_TIER), not swallowed.

See it run — the working memory

A debate your agents grow for days — as MCP tools

A type descriptor declares a workspace's typed actions once; mindsmith generates the tools, dispatches, persists (.sgp packs) and shares. Day-2 evidence is explored against the whole grown pool; every write names its agent; and plan_sync hands your host the typed task-list delta — the reopen op included. What holds by construction →

# day 1 — an agent opens a debate workspace:> instances_create { "type": "dialectic", "agent": "claude-A", "title": "Adopt engine X?",                     "seed": { "topic": "Adopt engine X for the reporting pipeline?", "statements": […] } }{ "id": "dialectic-1", "uri": "mindsmith://dialectic/dialectic-1" } # day 2, another session, another agent — evidence lands on the GROWN pool:> dialectic_addArguments { "id": "dialectic-1", "agent": "claude-B",                           "statements": [{ "side": "CON", "text": "migration quote came back: 6 weeks" }] }{ "ok": true, "action": "addArguments", "by": "claude-B" }> dialectic_state { "id": "dialectic-1" }{ "verdict": "UNDECIDED", "counts": { "PRO": 1, "CON": 1 }, "pool": 5, "ledger": [ … ] } # who wrote what, per revision — attribution is first-class:> instances_revisions { "id": "dialectic-1" }{ "current": 7, "revisions": [ …, { "rev": 6, "atoms": 3, "by": ["claude-B"] } ] } # share it out of band — the .sgp pack IS the wire artifact (byte-identical):$ curl -O http://127.0.0.1:4747/instances/dialectic/dialectic-1

illustrative transcript — tool names, payload shapes, the uri scheme and the attribution contract match the real code; ids and texts are examples.

The appliance tier

Boot, then point any OpenAI client at it

Every completion carries provenance headers: which side answered (x-sg-served-from), which arm, the cost, live coverage, frontier calls saved so far, and the exact name@version of the loaded stock.

$ FRONTIER_MODEL=~/models/model-q2.gguf mindsmith serve --room ./sgcmindsmith → http://127.0.0.1:4747/v1   (OpenAI-compatible)room ./sgc: methods=1 lattice=1 $ curl -si http://127.0.0.1:4747/v1/chat/completions \    -H 'content-type: application/json' \    -d '{"messages":[{"role":"user","content":"From the FY25 table: operating margin, two decimals."}]}'HTTP/1.1 200 OKx-sg-served-from: localx-sg-arm: matchx-sg-cost: 0x-sg-coverage: 0.62x-sg-saved: 41x-sg-sgc-version: fin-tables-stock@1.0.0 {"choices":[{"message":{"role":"assistant","content":"operating margin = 18.42 %"},"finish_reason":"stop"}], …}

illustrative transcript — the values are examples; endpoints, boot lines and header names match the real code. Click the terminal (or focus it and press Enter) to skip the animation, if it is playing.

The external critical mind

The critical mind returns UNDECIDED — as typed data

Register the same appliance as MCP tools for an agent host. The critique tool never fakes a weighing: below the measured decidability margin it returns counts, the ledger, and a typed request for the data that would move the margin honestly. The iteration contract →

$ claude mcp add skynet -- mindsmith mcp --routing routing.jsonmindsmith mcp ready — tools: ask, drift, metrics, lattice_load, critique, self_consistency,  zoom, trace_tail, hint, propose · instances: dialectic_* plan_* notepad_* + instances_* # the host calls the critique tool on a decision:> critique { "topic": "Adopt engine X for the reporting pipeline?" }{  "frameStatus": "FREE",  "verdict": "UNDECIDED",  "counts": { "PRO": 3, "CON": 2 },  "margin": 1,  "threshold": 3,  "ledger": [    { "side": "PRO", "kind": "declared",  "status": "active", "witnesses": ["s1","s4"], "text": "…" },    { "side": "CON", "kind": "generated", "status": "active", "witnesses": ["s2"],      "text": "…" },    { "side": "CON", "kind": "declared",  "status": "open",   "witnesses": null,        "text": "migration cost is unquantified" }  ],  "advice": "This is a typed data request, not a dead end: gather statements that             genuinely bear on the OPEN points [migration cost is unquantified], then             call critique again with statements=[...] — the frame becomes MATERIAL             and the margin can move honestly."}

illustrative transcript — payload fields, statuses and the advice contract match the real tool; the topic and ledger texts are examples.

What ships, at which maturity

What ships, one honest scale

Every bar uses the same 6-rung scale — 1 idea · 2 pre-registered kill-gates · 3 mechanics proven · 4 measured at scale · 5 product-integrated · 6 field-adopted. Nothing is at 6. Scale definitions →

NEW

Named graph instances

Persistent typed workspaces your agents grow across sessions — a dialectic debate, a plan that reopens with a reason, a shared notepad. Every write attributed; one auditable .sgp pack per instance; one hot instance = one worker thread; share it over HTTP as the same byte-identical artifact.

3/6mechanics proven · product-wired what holds & limits →
F1

Low-quant repair

A certified method stock steers the quantized model; covered queries are answered from verified local stock at 0 frontier calls. SQL 8→63 % (N=201) · finance tables 7→62 % (N=120) · forge: 0 false admissions across 3 datasets × 2 forge models.

5/6product-integrated numbers & limits →
F4

External think mode

propose → admitted, or refused with blame plus options tested through the gate, never guessed. One dialogue round: 17/24 → 24/24 at zero false admissions. A forced write is recorded untrusted — the gate never yields.

5/6product-integrated numbers & limits →
F5

External critical mind

critique: witness-gated viewpoints, anchored generation of missing theses (0 fabrication across all negative controls), and a verdict only above the measured margin — otherwise an honest UNDECIDED that names the data to fetch.

5/6surface · numbers at 4/6 numbers & limits →
F6

Local .sgc rooms

rooms list · import · export · freeze. sha256 dossiers make a bundle a fixed, auditable reference; every load goes through the engine gates — a malformed bundle is refused, never written. No catalog, no subscription.

5/6product-integrated numbers & limits →
gap closed F2 piece-by-piece zoom is now surfaced — the zoom tool. The decomposition of big tasks is measured (math word problems ×3.25 [2.4–4.8], financial-table QA ×2.54 [1.96–3.5], 560 tasks — rung 4/6): you declare the typed plan, each leaf is served in a bounded context, and a plan whose needs nobody produces is refused before any model call. This page used to list it as the known gap — we close them in the open too. details →

The differentiator

Refuted claims stay on the page

Every number above comes from a campaign with N, negative controls and deterministic re-runs. When a claim falls, it is removed from the product the day it falls — and listed. Four examples: the C9 head-to-head benchmark (retired — confounded arms; the reframe ships instead), the runtime cross-agreement tier (refuted), graded weighting under the precision cap (refuted), low-quant self-audit (refuted, 3 forms).

The full refuted list, the decidability bound, and the maturity scale →