Brimkerndocs

$ claude mcp add brimkern -- brimkern mcp

A local GPU worker for your coding agent

Your main agent (Claude Code, Cursor, Windsurf…) keeps the design and the decisions. The mechanical sub-tasks, a first-pass review, a test draft, a commit title, go to a model running on your own GPU through MCP, the CLI or a skill. Nothing leaves the machine and nothing is billed.

How delegation works

The agent sees Brimkern as a set of tools. When it decides a sub-task is routine, it calls one; the MCP server runs the model on the GPU and returns plain text, which the agent reads, checks and uses.

delegation
Claude Code  (cloud: plans, decides, edits)
   │
   │ tools/call brimkern_review { code, file_path }
   ▼
brimkern mcp  (stdio, JSON-RPC 2.0)
   │ model loaded once, parallel calls grouped (up to 4 per pass)
   ▼
your GPU  (WebGPU, hand-written WGSL kernels)
   │
   └─▶ text back to the agent, which checks it

Good fits

First-pass reviews, unit-test drafts, commit titles, regexes, renames and other mechanical rewrites.

Keep on the main agent

Architecture, security-critical code, anything that needs the whole repository in context. A local model helps; it does not decide.

MCP server

With the CLI installed, one command registers it in Claude Code:

claude mcp add brimkern -- brimkern mcp --model=coder

On a machine with 20 GB of memory or more, coder-max is the strongest preset: 184/202 on our five code suites, 2 short of Claude Sonnet 5.

claude mcp add brimkern -- brimkern mcp --model=coder-max

For Claude Desktop, Cursor and other clients, the same server in their JSON config:

{
  "mcpServers": {
    "brimkern": {
      "command": "brimkern",
      "args": ["mcp", "--model=coder"]
    }
  }
}

Below, a real exchange with the server: the handshake, the tool list, and a stats call (which does not load the model, so it answers instantly).

brimkern mcp · stdio
→ initialize { protocolVersion: "2025-06-18" }
← { "protocolVersion": "2025-06-18", "capabilities": { "tools": {} },
    "serverInfo": { "name": "brimkern", "version": "0.1.0" } }

→ tools/list
← brimkern_ask · brimkern_review · brimkern_generate_tests · brimkern_stats

→ tools/call brimkern_stats
← { "model": "Qwen 3 4B (BRIK int4)", "loaded": false, "callsServed": 0,
    "totalTokensServed": 0, "estimatedSavingsUsd": 0 }

Captured on 2026-09-24 from brimkern mcp; the tool list is shown by name only.

The four tools

Each call is independent: no memory of the previous ones, so a review never sees an earlier question.

brimkern_askprompt, model?, mode?, max_tokens?
Free-form query. mode = code (default), plan, review or auto; max_tokens up to 2048.
brimkern_reviewcode, file_path?, max_tokens?
Review of a snippet or file: bugs, edge cases, error handling, security, performance.
brimkern_generate_testscode, test_framework?, max_tokens?
Unit-test draft in the framework of your choice (vitest by default).
brimkern_stats—
Active model, calls and tokens served, estimated savings. Does not load a model.

Reasoning blocks (<think>…</think>) are stripped from every answer: the agent only receives the result.

The skill

A skill is a Markdown file that tells Claude Code when to hand work to Brimkern and how (which commands, which flags). It ships with the CLI; copy it into a project to enable it there.

mkdir -p .claude/skills
cp -r ~/.brimkern/skills/brimkern-worker .claude/skills/
.claude/skills/brimkern-worker/SKILL.md
---
name: brimkern-worker
description: Offload routine sub-tasks (exploratory tests, syntax transformations, code reviews, repetitive drafting) to local WebGPU Brimkern workers…
---

# Brimkern Worker
…
brimkern -q "…"          # answer only, for scripts
brimkern --json "…"      # structured payload
claude mcp add brimkern -- brimkern mcp

Scripts & JSON

Without MCP, any agent that can run a shell command can delegate: -q prints the answer alone, --json a structured payload with the token count, speed and duration.

git diff | brimkern --json "Draft a conventional commit title"
brimkern --json
{
  "ok": true,
  "content": "The conventional commit title for the provided diff could be:\n\n`feat(auth): add passkey registration support`\n\n…",
  "tokens": 48,
  "elapsedMs": 4735,
  "tokPerSec": 10.1,
  "model": "Qwen 3 4B (BRIK int4)",
  "backend": "Dawn (Metal)",
  "savedUsd": 0.00158
}

Real output, coder (Qwen 3 4B), native Dawn on an M-series Mac. savedUsd is an estimate of what a paid API would have charged, not a measurement.

Limits

Parallel calls

With coder, up to four calls are served together in one pass. super-coder and coder-max (hybrid models) serve them in turn.

Memory

The default model takes about 2.5 GB of GPU memory while the server runs; coder-max about 12 GB, for machines with 20 GB or more.

First call

The first call downloads and loads the model; the following ones reuse it.

Brimkern: open WebGPU engine, built by Romain Khanoyan. Local AI, WebGPU, on-device engines.