brandkit brandkit

Palette-locked logos for AI agents.

AI image models drift off your hex palette. brandkit fixes it downstream — generate, vectorize, snap-to-palette, verify. Ships as a CLI and an MCP server.

AGPL-3.0 Node ≥ 20 MCP-compatible

Same prompt. Same palette. Three outcomes.

Prompt: "minimalist geometric symbol for a dashboard analytics app, abstract chart-bracket motif" · Palette: #FAFAF9#5B21B6#10B981#1C1917

1. Raw model output

raw Ideogram raster output
Format
458 KB raster PNG
Palette compliance
Visual drift — gradients, shadows
Ship as logo?
No — raster, no scalability

2. Vectorize only

vectorized SVG without recolor
Format
SVG (130 KB)
Palette compliance
verify: 48 offenders
Ship as logo?
No — fails the palette gate

3. brandkit

brandkit final palette-locked SVG
Format
SVG (129 KB)
Palette compliance
verify: 0 offenders ✓
Ship as logo?
Yes — palette-locked, scalable

Same source raster across columns 2 and 3. The only difference is brandkit's snap-to-palette + verify-or-drop step. See the recolor logic.

Install

CLI

npm install -g brandkit
brandkit --help

MCP server (Claude Code, Claude Desktop, etc.)

git clone https://github.com/gent8/brandkit
cd brandkit
docker build -t brandkit-mcp:latest -f mcp/Dockerfile .

Then add to your MCP client config:

{
  "mcpServers": {
    "brandkit": {
      "command": "docker",
      "args": ["run", "-i", "--rm",
        "-e", "FAL_KEY",
        "-e", "RECRAFT_API_KEY",
        "brandkit-mcp:latest"]
    }
  }
}

Provider keys: fal.ai (Ideogram v3) · Recraft (vectorize). Bring your own.

Three MCP tools

brandkit_gen

Full pipeline. Prompt + palette → palette-locked survivor SVGs returned inline. No filesystem handoff.

brandkit_recolor

Pure SVG-in / SVG-out. Snaps every hex and rgb() to the nearest palette color.

brandkit_verify

SVG-in / JSON-out gate. Returns offenders with normalized hex + suggested palette match.

Solo-maintained, AGPL-3.0. Read the status doc before opening issues.