brandkit v0.3

The off-palette problem

AI image models
ignore your hex palette.

brandkit fixes it: vectorize → recolor → verify, in one command.

brand.json #FAFAF9#5B21B6#10B981#F43F5E#1C1917 ↓ Same source raster, fed through two pipelines.

FAIL

Vectorize only · Recraft → SVG

vectorized SVG without recolor
48
off-palette colors brandkit verify → exit 1

48 unique colors · 0 in palette

PASS

brandkit · vectorize + recolor + verify

brandkit final palette-locked SVG
0
off-palette colors brandkit verify → exit 0 ✓

4 unique colors · every one in palette

Numbers from brandkit verify on checked-in fixtures. recolor logic.

One command. Every standard size.

Other tools stop somewhere before ship-ready.
brandkit closes the loop.

ToolSteps to ship-ready palette-locked SVG + asset bundlen
DALL-E 3 / Nano Banana 2 / Midjourney generate raster · vectorize · recolor to palette · verify · render every size 5
Recraft v3 (vector) generate vector (off-palette) · recolor · verify · render every size 4
Raw Ideogram v3 generate raster · vectorize · recolor · verify · render every size 5
brandkit brandkit gen  →  brandkit export 1

What the assets look like deployed

Same source SVG, every surface.

A single brandkit export against the SVG above produces 14 files. Here are three of them in the wild — same palette, no hand-tuning.

brandkit — palette-locked logos ×
github.com
news.ycombinator.com
+
brandkit.run
favicon.svg · scales from 16px to address bar without re-render

brandkit.run

brandkit — palette-locked logos for AI agents

MCP server + CLI that turns AI image-gen output into clean, palette-locked SVGs. No more off-brand colors.

og-image.png · 1200×630 · for og:image / twitter:image

brandkit

Palette-locked logo bundles · Developer Tools

★ ★ ★ ★ ★ (0) — solo project

cws-marquee-920x680.png + cws-icon-128.png · Chrome Web Store store listing

↓ The full output of brandkit export — every standard icon size, all palette-locked.

Try it

Paste a hex. Watch it snap.

Same Euclidean-RGB nearest-color the CLI runs in brandkit_recolor. Pure browser JS, no network call. Loaded against this site's own brand.json.

Source
#6533CC
rgb(101, 51, 204)
ΔRGB 49
Nearest in palette
#5B21B6
primary · rgb(91, 33, 182)

ΔRGB is the literal Math.hypot(Δr, Δg, Δb). See the CLI's nearest() — this widget runs the same function client-side.

Install

One npm install. Or one Docker run.

CLI

npm install -g @gent8/brandkit
brandkit --help

MCP server (Claude Code, Claude Desktop, …)

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

Then in 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

Composable. Each does one thing.

gen

brandkit_gen

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

recolor

brandkit_recolor

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

verify

brandkit_verify

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