Skip to content

caezium/nib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nib

Anyone can make one good AI illustration. Making the 10th still look like you is the hard part.

Nib turns an idea — or a whole article — into hand-drawn editorial illustrations for your blog post, newsletter, or docs. Every image is white-background, one-idea-per-image, and stars one character you own (a mascot, a logo character, anything). The character performs the idea — pushes it, sorts it, steers it — instead of just posing. And because it's sent as the reference on every render, it stays on-model across the whole piece: the 2nd, 5th, and 10th image still look like the 1st.

marker look riso look woodcut look

Same character, three looks — and it didn't drift.

Concept mode — the studio: a control rail and a plate gallery Article mode — a shot list you shape: select, add, or expand the ideas, then draw them in parallel

building momentum — pushing a snowball uphill debugging — pulling one thread from a tangled ball of yarn deep focus — working inside a glowing bubble while the world fades

Three ideas in, three scenes out — building momentum, debugging, deep focus — the same character performing each.

rubber-duck debugging — explaining a problem to a rubber duck ship it early — driving a patched-together cart, fixing it on the move compound interest — a seesaw tipping as percentage blocks stack up

Real plates straight from the app — a different character, any concept, still on-model.

nib.henryzh.dev · Free & open source · MIT


Install

Install the skill into your agent — one command, no app to download:

Agent Command
Claude Code npx skills add caezium/nib --skill nib
Codex CLI codex plugin add caezium/nib
Cursor Add plugin: caezium/nib
Gemini CLI gemini extensions install caezium/nib

Then just ask:

Use nib to illustrate: "small habits compound into a big result"
Use nib to make a 5-image set in riso for this article: https://paulgraham.com/ds.html
Use nib: set my avatar to ./avatar.png, then illustrate "saying no protects focus" in woodcut

Two ways to pay: free, or pennies

  • Free — use your ChatGPT / Codex subscription. If you're logged into the Codex CLI (codex login), Nib generates on your existing subscription. No API key, no per-image charge.
  • OpenRouter — a few cents an image. Set OPENROUTER_API_KEY and Nib uses google/gemini-3.1-flash-image-preview (or any image model via --model). Exact 16:9. A whole blog post for under a dollar.

It picks automatically: your OpenRouter key if set, else a free Codex or Gemini CLI lane (whichever you're signed into).

Bring a character — or grab one

Don't have a mascot? Use a bundled character:

Use nib with the "blip" character to illustrate "ship small, ship often"

The skills/nib/characters/ library ships ready-to-use characters (and PRs adding your own are welcome — a character is just a folder with a one-paragraph spec + a reference image). Or bring your own avatar image, and optionally describe it in words (--avatar-spec) to lock its design even tighter.

How it works

  1. A character — your avatar image, a bundled pack, or a written description. It's the reference on every render, so it stays recognizable.
  2. An idea or an article. A URL is fetched and reduced to clean text first. For an article, Nib picks the load-bearing moments (a judgment, a flow, a before/after, a trap, a loop) — 4–8 of them, not one image per paragraph.
  3. A fresh, concrete metaphor in which the character performs the idea — pushes it, sorts it, steers it, builds it.
  4. Generate, reviewing each against the quality bar (white background, one idea, the character performing the action, short labels only).

The methodology and the looks live in one place — skills/nib/references/ — read by both the skill engine and the desktop app, so they never drift.

The thirteen looks

marker · riso · blueprint · woodcut · pixel · clay · gouache · chalk · diorama · enamel · felt · manila · phosphor — one per piece, so a set reads as a series. See references/styles.md.

The engine

python3 skills/nib/scripts/generate.py \
  --idea "trust is built one piece of evidence at a time" \
  --style marker --avatar ./avatar.png --out out.png

Flags: --backend auto|openrouter|codex · --model <id> · --avatar-pack <name> · --avatar-spec "<text>" · --register explainer · --transparent · --doctor. Dependency-free (python3 3.9+ only).

Transparent cutouts. Add --transparent to lift the art off its white ground into a transparent PNG — for slides, stickers, or dark UI. It uses rembg (pip install 'rembg[cpu]'), which isn't bundled, so the core stays dependency-free; without it the opaque render is kept. Works standalone on any image too: python3 skills/nib/scripts/cutout.py <image.png>.

The desktop app

A TypeScript + React desktop app (macOS) — avatar onboarding, a style picker, a generation history grid, and a zoomable lightbox. Concept mode draws one idea at a time; Article mode turns a post — or your own draft — into a shot list you shape: pick which moments to draw, add your own, ask for more, then generate them in parallel.

Concept mode — the studio: a control rail and a plate gallery Article mode — a shot list you shape: select, add, or expand the ideas, then draw them in parallel

Avatar setup — start from Hen, Mo, or Sumi, or bring your own character Settings — free Codex/Gemini lanes or a keyed OpenRouter model, plus a shot-list model picker

Concept and Article modes · pick a starter character · free and keyed generation lanes.

Install (macOS, Apple Silicon):

brew install --cask caezium/tap/nib

This is a self-signed pre-1.0 build, so the cask clears the Gatekeeper quarantine flag on install. If macOS still blocks it, right-click the app and choose Open. Or grab the .dmg straight from Releases.

Run from source:

npm install && npm run gen   # first time
npm run dev                  # real generation (OpenAI or OpenRouter key)
npm run dev:mock             # placeholder images, no API calls
npm run build                # package the app

Privacy & telemetry

The desktop app sends anonymous usage events (which mode/style, success/failure) and crash reports — never your prompts, avatar, API keys, or images. Turn it off in Settings → Telemetry. The skill sends no telemetry.

Credits

Nib's house methodology is adapted from xiaohei (小黑) by helloianneo — the hand-drawn editorial-illustration skill that inspired this project. Nib reimplements its approach in its own words and code.

License

MIT © 2026 Henry (caezium).

About

Turn any idea or article into hand-drawn editorial illustrations starring your own character — free on your ChatGPT/Codex sub. An agent skill (Claude Code, Codex, Cursor, Gemini) + a macOS app.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors