Skip to content

keryx cards gen

Description

Generate AI card illustrations as candidate takes into a workspace. Target one card with --card M, or all overlay cards when --card is 0. Requires --takes N (and --workspace). Review the takes with cards sheet, then choose one with cards pick.

Each card's panel is generated from its storyboard scene in the reel theme's illustration style.

--avatar <name> opts a registered character (config avatars.*) into the run as a first-hand actor: generation switches to image-to-image (the avatar reference is composited into every panel) and the card's scene becomes the per-panel actor direction — pose, prop, gaze, and an explicit emotion (the avatar defaults to a friendly expression, so name the emotion every time and only smile on positive beats). The avatar renders in its own style by default; add --theme <kw> to restyle it into that theme. Likeness and style are independent — the style is never baked into the character.

Pass a comma-separated list (--avatar matt,jane) for multiple figures in a panel; each likeness is labelled by name so the scene can direct them individually ("matt recoils while jane points"). See spec 0006.

Usage

keryx cards gen --takes <n> --workspace <slug> [--card <m>] [--theme <kw>]

Flags

Flag Description Default Required
--workspace reel workspace slug yes
--card storyboard card index (0 = all overlay cards) 0
--takes number of candidate takes per card 0 yes
--theme reel theme keyword (card style; also restyles an avatar)
--avatar registered avatar to composite in as an actor (image-to-image)
--dry-run estimate what this would cost and generate nothing false
--force bypass the content cache and regenerate (R-GEN-8) — this spends, where a cached result would not false

Costing a run before making it

--dry-run prices the run and generates nothing — no provider call, no files, no spend. The estimate is an upper bound: an unchanged request is served from the content cache without spending (R-GLOBAL-9), so a real run may cost nothing. When the estimate crosses spend.confirm_above.*, the dry run says so.

--output json gives the same figures structured, which is how an assistant driving keryx over MCP asks what something costs before committing to it.