Your Gemini web app as a service — turn the free Gemini web interface into a programmable HTTP API for image and video generation
SaferSkills independently audited phantom-canvas (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
CLI + HTTP API for image and video generation through Gemini Web. No API keys — uses Chrome's persistent Google login.
bun add -g phantom-canvas # or: npm install -g phantom-canvasChrome stores login in ~/.phantom-canvas/chrome-profile/. First time use:
# Open Chrome, login to Google in the window that opens
phantom-canvas chrome
# Or just run generate — Chrome auto-launches
phantom-canvas generate "test" --headedLogin persists across sessions. No export/import needed.
When you see "Session expired", tell the user to run phantom-canvas chrome and re-login. Do NOT automate login — it requires human interaction with Google auth.
Output is JSON on stdout. Logs go to stderr. Images downloaded at full resolution (1024px).
phantom-canvas generate "pixel art knight, isometric, green #00FF00 bg" -o knight.png{"status":"completed","path":"knight.png","type":"image","conversation_id":"abc123"}phantom-canvas generate "4 directions of this character in a 2x2 grid" --ref ./knight.png -o sheet.png# Round 1
RESULT=$(phantom-canvas generate "pixel art knight, green bg")
CONV=$(echo $RESULT | jq -r .conversation_id)
# Round 2 — Gemini remembers the character
phantom-canvas generate "make the sword bigger" --conversation $CONV -o v2.png
# Round 3
phantom-canvas generate "show 4 directions" --conversation $CONV -o sheet.pngphantom-canvas generate "walk cycle animation" --video --ref knight.png -o walk.mp4Video takes 1-2 min. Gemini has daily video quotas.
| Flag | Description |
|---|---|
-o, --output <file> | Output file path |
--ref <file> | Reference image (absolute path) |
--video | Generate video instead of image |
--conversation <id> | Continue previous conversation |
--timeout <secs> | Timeout (default: 180 image, 300 video) |
--headed | Show browser window (default: headless) |
--cdp <url> | Chrome DevTools URL (default: http://127.0.0.1:9222) |
phantom-canvas serve [--port 8420]# Generate
curl -X POST localhost:8420/generate \
-d '{"prompt":"...", "reference_images":["/path/to/ref.png"], "type":"image"}'
# Check status
curl localhost:8420/task/{id}
# Download
curl localhost:8420/task/{id}/image/0 -o result.png#00FF00 green background instead of "transparent" — Gemini draws checkerboard patterns for transparent--ref for multi-angle sheets--headed for faster/more reliable generation| Exit code / Error | Action |
|---|---|
| Chrome failed to start | Install Chrome or set path |
| "Session expired" | Run phantom-canvas chrome, re-login |
| Timeout / empty images | Retry with different prompt or longer --timeout |
| Video quota | Wait until tomorrow |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.