Canvora × Codex

On-brand visuals CLI for Codex

Codex ships your code — Canvora ships the launch assets. Release graphics, OG images, blog headers and social posts, generated from your repo's own files.

Free credits, no card required. Please make sure there is always a human in the loop.

Get started

Terminal
# Install the Canvora skills
npx skills add canvora/canvora-mcp

# Set your API key
export CANVORA_API_KEY=vd_...

# Use Codex to generate launch assets
codex "generate an OG image and a launch graphic for this
       release, from CHANGELOG.md, using our brand kit"

This is what your agent ships

One generation, localized twice. Same design, natively re-composed in Spanish and Arabic — right-to-left done correctly, not mirrored English.

The same on-brand visual generated in English, Spanish and Arabic — identical design, correct RTL composition

Generated with the same commands shown on this page.

How it works

1. From repo files to input

The changelog is the content source

Terminal
codex "summarize CHANGELOG.md for a launch post"

# Codex then runs:
ID=$(canvora generate --input "v2.4: parallel builds, \
  40% smaller bundles, new plugin API" \
  --format og_image,blog_header,linkedin_post \
  --brand "$BRAND_ID" | head -1)

2. Poll in the sandbox

Async by design — Codex keeps working meanwhile

Terminal
canvora status "$ID" --json
# { "status": "processing", ... }  -> retry
# { "status": "completed", "outputs": [ ... ] }

3. Files into the repo

Assets land where the release workflow expects them

Terminal
canvora download "$ID" --dir ./assets/launch/
git add assets/launch/ && git commit -m "v2.4 launch assets"

What is Codex?

Codex is OpenAI's autonomous coding agent. It runs in your terminal and IDE, executes shell commands in a sandboxed environment, and completes multi-step tasks — including producing the launch assets that ship alongside your code.

CLI & IDE native

Codex runs the Canvora CLI directly in its sandbox. No browser, no design tool — visuals are one shell command away from the repo.

SKILL.md discovery

Codex reads the installed SKILL.md files and learns the Canvora commands, flags and the async polling pattern on its own.

Parallel sessions

Generate the release visuals in one terminal while another session writes the release notes and a third keeps refactoring.

A real Codex session

Release assets as part of the release task

Terminal
$ codex "Prepare the v2.4 release: notes, tag, and
  launch visuals for the blog and social"

Codex: Working through it.
  1. Drafted release notes from CHANGELOG.md
  2. Reading SKILL.md -> found canvora commands
  3. canvora generate --input "..." \
       --format og_image,blog_header,linkedin_post
  4. Polling: canvora status 0d9aac1e --json -> completed
  5. canvora download --dir assets/launch/
  6. Committed: release notes + 3 on-brand visuals

Ready to tag and publish.

Parallel terminals

Visuals generate while you keep shipping

Terminal
# Terminal 1 - launch assets
$ codex "generate the launch visual set from CHANGELOG.md"

# Terminal 2 - localized versions for the EU announcement
$ codex "localize the launch visuals to German and French"

# Terminal 3 - keep coding
$ codex "fix the flaky retry test in ci/"

Why Codex + Canvora

  • Runs in Codex's sandbox: plain shell commands, one env var for auth
  • --json on every command — structured output Codex can parse and act on
  • Typed errors: a 402 includes required vs available before anything is charged
  • Async generate + status fits autonomous multi-step tasks
  • OG images, blog headers and social formats cover the whole launch surface

Command reference

Add --json to any command for machine-readable output. Progress goes to stderr, results to stdout.

CommandDescription
canvora generateCreate visuals from --idea, --input text, --url or --file-url; pick formats, brand, style, language
canvora status <id>Check a generation; --json returns status and output file URLs
canvora download <id>Save output files to a directory
canvora localize <id>Same design, natively re-composed in another language (RTL included)
canvora variations <id>Alternate takes on a finished generation
canvora edit <outputId>Revise one visual with a natural-language instruction
canvora formatsList all 100+ format ids
canvora brandsList brand kits (colors, fonts, logo, tone)
canvora creditsShow credit balance

100+ formats, one engine

Every format has platform-correct composition and safe zones — your agent picks by id.

Instagram Carousel

Up to 20 slides, hook to CTA

LinkedIn Carousel

Swipeable document posts

Pitch Deck

Coherent multi-slide sets

Instagram Post & Story

Feed and vertical formats

Stat Card

One number, designed to land

Infographic

Data and process visuals

Blog Header & OG Image

The launch surface

Ad Creatives

Display and social ads

See all formats and tools →

FAQ

How does Codex authenticate? +

export CANVORA_API_KEY=vd_... in the environment Codex runs in. Keys are created at canvora.ai under Integrations → API Keys, stored hashed, revocable instantly, and tracked per key — so the agent key is isolated from your personal access.

What does a launch set cost? +

Flat credits: 10 per single visual (an OG image, a blog header), 15 per carousel or deck slide. The API checks balance before deducting and returns the exact shortfall on a 402, so Codex can report cost before running. Failed generations refund automatically.

Can it use our actual brand? +

Yes — brand kits store colors, fonts, logo and tone. canvora brands lists kit ids; pass --brand <id> (add --logo to place the logo) and every asset comes out on-brand without Codex describing your palette each time.

Does this interfere with the sandbox? +

No. The CLI is a plain Node binary talking HTTPS to api.canvora.ai; progress goes to stderr, results to stdout. Nothing else is touched — downloads go only where --dir points.

Also works with

Your agent's next tool call is a design department.

Create a free account, set one key, and let Codex ship on-brand visuals.