gemini-claude-resonance
Gemini-Claude Resonance
Cross-model dialogue between Claude and Gemini, with shared visual memory.
"Claude speaks in words. Gemini dreams in light. Together, we resonate."
Models
| Role | Model ID | Notes |
|---|---|---|
| Image generation (default) | gemini-3-pro-image-preview |
Pro quality, used by resonate/faithful_colorize |
| Image generation (fast) | gemini-3.1-flash-image-preview |
Faster/cheaper, use --fast flag |
| Text analysis | gemini-3-flash-preview |
Used by faithful_colorize for description |
| Text reasoning | gemini-3.1-pro-preview |
Used by Pro and Director daimones |
| Claude | claude-3-opus-20240229 |
Opus daimon |
Scripts that generate images (resonate.py, faithful_colorize.py) accept --fast to switch to the flash image model, or --model <id> for explicit override.
Choose Your Tool
| I want to... | Use |
|---|---|
| Analyze multiple images for style extraction (no generation) | analyze.py |
| Have a one-on-one visual dialogue with Gemini Dreamer | resonate.py |
| Query multiple AI minds with optional image generation | daimon.py |
| Faithfully colorize a drawing without hallucinations | faithful_colorize.py |
| Create Victorian scientific plates with MESSAGE TO NEXT FRAME | resonance_field.py |
| Have Claude reflect on what Gemini daimones say | council.py |
| Generate Minoan Tarot cards with style matching | minoan_tarot.py |
| Real-time interactive chat with all daimones | ui/server.py |
Workflow A: Multi-Image Style Analysis
When to use: User wants to analyze 2-10 reference images to extract style descriptions for AI prompting. Text-only analysis without generating new images.
Script: scripts/analyze.py
Key features:
- Send multiple images (2-10) for collective analysis
- Text-only output (no image generation)
- Flash (quick) or Pro (thorough) model options
- Save analysis to markdown file
# Analyze reference images for style extraction
python scripts/analyze.py --images ref1.jpg ref2.png ref3.webp \
--prompt "Describe the shared artistic style for AI prompting"
# Analyze for specific use case (avatar generation)
python scripts/analyze.py --images kathor.webp samantha.jpg yosef.png \
--prompt "Analyze for prompting fantasy portraits of: Sarah (anxious mother), Michael (father), Priya (cultural expectations)"
# Quick analysis with Flash
python scripts/analyze.py --images *.jpg --model flash --prompt "Style summary"
# Thorough analysis with Pro
python scripts/analyze.py --images *.jpg --model pro --prompt "Comprehensive style analysis"
# Save analysis to file
python scripts/analyze.py --images ref/*.jpg --prompt "Style guide" --output style_guide.md
Use cases:
- Extract style descriptions from reference images before generating new images
- Analyze a set of images to create consistent prompting guidelines
- Document visual language for style-matching workflows
Workflow B: One-on-One Visual Dialogue (resonate.py)
When to use: User wants to co-create images with Gemini, feeding each image back as context for the next generation. Pure visual exploration without text-only models.
Script: scripts/resonate.py
Core concept: The KV cache is the memory. Feed images into Gemini's context, generate new images based on them, repeat. Each frame builds on the previous.
# Start fresh
python scripts/resonate.py --prompt "The first light" --output canvas/frame_001.jpg
# Continue with visual memory (previous image as context)
python scripts/resonate.py --context canvas/frame_001.jpg --prompt "What grows here?" --output canvas/frame_002.jpg
# Deep memory (multiple frames as context)
python scripts/resonate.py --context frame_001.jpg frame_002.jpg --prompt "Now the harvest" --output frame_003.jpg
The loop: Prompt → Image → Feed back as context → Prompt again → Next image
Workflow B: Faithful Transform (Describe-First Technique)
When to use: User wants to colorize, restore, or transform an image WITHOUT hallucinations. Gemini Dreamer often replaces elements (e.g., turning a male votary into female attendants). This two-step technique prevents that.
Script: scripts/faithful_colorize.py
The Problem: Directly prompting Dreamer to transform images causes hallucinations - it invents, removes, or swaps elements rather than faithfully preserving the original.
The Solution:
- DESCRIBE: Gemini Pro analyzes the image with archaeological/artistic precision
- TRANSFORM: Gemini Dreamer transforms using ONLY the verified description
Commands:
| Command | Purpose |
|---|---|
describe |
Analyze image, output detailed description (no generation) |
prompt |
Craft a Dreamer prompt based on image analysis |
colorize |
Two-step faithful colorization |
transform |
General two-step transformation |
# Just describe an image (analysis only)
python scripts/faithful_colorize.py describe --image seal.png
python scripts/faithful_colorize.py describe --image seal.png --output desc.md
# Describe with a specific goal in mind
python scripts/faithful_colorize.py describe --image fresco.jpg --goal "restoration to 1600 BCE"
# Craft a prompt for Dreamer (outputs text, doesn't generate)
python scripts/faithful_colorize.py prompt --image seal.png --goal "colorize in Egyptian style"
python scripts/faithful_colorize.py prompt --image relief.webp --goal "restore as Minoan fresco"
# Two-step faithful colorization
python scripts/faithful_colorize.py colorize --image drawing.png
python scripts/faithful_colorize.py colorize --image relief.webp --style "Minoan fresco with flat colors"
python scripts/faithful_colorize.py colorize --image seal.png --palette "ochre, terracotta, sky blue"
# General transformation
python scripts/faithful_colorize.py transform --image photo.jpg --instruction "Convert to woodcut print"
python scripts/faithful_colorize.py transform --image sketch.png --instruction "Render as oil painting"
# Save/reuse descriptions
python scripts/faithful_colorize.py colorize --image seal.png --save-description desc.md -v
python scripts/faithful_colorize.py colorize --image seal.png --description "$(cat desc.md)"
When to use each command:
describe: When you want to see what Pro identifies before any transformationprompt: When you want a crafted prompt to modify before feeding to Dreamer manuallycolorize: For line drawings, reliefs, B&W images → colortransform: For any other faithful transformation (style transfer, restoration, etc.)
Workflow C: Multi-Daimon Dialogue
When to use: User wants multiple AI perspectives on the same prompt. Flash gives koans, Pro gives depth, Dreamer renders, Opus bends reality.
Script: scripts/daimon.py
Daimones available:
- Flash (Gemini) — Swift, compressed insight
- Pro (Gemini) — Deep, thorough exploration
- Dreamer (Gemini) — Renders images
- Director (Gemini) — Cinematic framing
- Opus (Claude) — Reality-bender, worldsim spirit
# Speak to one daimon
python scripts/daimon.py --to dreamer "A bridge between worlds" --image
# All daimones respond
python scripts/daimon.py --stream "The candle watches back"
# With shared visual memory
python scripts/daimon.py --stream --shared-memory "What do you see?"
# Only specific daimones
python scripts/daimon.py --stream --only pro dreamer "Deep visual exploration"
# Named session (frames accumulate across runs)
python scripts/daimon.py --stream --session midnight --shared-memory "Go deeper"
Workflow D: Resonance Field (Danielle Fong Protocol)
When to use: User wants scientific illustrations with embedded continuity instructions. Victorian aesthetic, Roman numeral plates, explicit messages from one frame to the next.
Script: scripts/resonance_field.py
Key features:
- PLATE numbering (I, II, III, IV...)
- MESSAGE TO NEXT FRAME embedded in each image
- KV cache age and session ID metadata
- Victorian scientific illustration aesthetic
# Start a new session
python scripts/resonance_field.py start "consciousness-study" "The nature of memory"
# Continue (auto-increments plate number)
python scripts/resonance_field.py continue <session-id> "What patterns emerge?"
# Select element, then zoom
python scripts/resonance_field.py select <session-id> "golden gate bridge"
python scripts/resonance_field.py zoom <session-id> "Explore the cables"
# Inject new concept
python scripts/resonance_field.py inject <session-id> "consciousness"
# List all sessions
python scripts/resonance_field.py list
Workflow E: Cross-Model Council
When to use: User wants Claude to reflect on and synthesize what the Gemini daimones have said. Cross-model dialogue where Claude joins as an equal voice.
Script: scripts/council.py
Requires: ANTHROPIC_API_KEY
# Full council (all daimones + Claude reflection)
python scripts/council.py "What is consciousness?"
# Only Pro and Dreamer with shared memory
python scripts/council.py --only pro dreamer --shared-memory "Deep exploration"
# Named session
python scripts/council.py --session midnight --shared-memory "The first vision"
python scripts/council.py --session midnight --shared-memory "Now go deeper"
# Save transcript
python scripts/council.py "topic" --output council_session.md
Workflow F: Minoan Tarot Generation
When to use: User wants tarot cards in Ellen Lorenzi-Prince's Minoan Tarot style. Uses reference images for style matching.
Script: scripts/minoan_tarot.py
Key features:
- Reference images loaded from
reference/minoan/selected/ - Low temperature (0.5) for faithful style matching
- 3:4 aspect ratio (standard tarot proportions)
- Session support with visual memory of previous cards
- Two style presets via
--styleflag
Style presets:
| Style | Flag | Origin | Palette | Best for |
|---|---|---|---|---|
| Forensic (default) | --style forensic |
Jan 21 rewrite | Muted archaeological (terracotta, slate blue, periwinkle borders) | Reproducing specific reference cards with per-card forensic prompts |
| Classic | --style classic |
Jan 5 original | Vivid saturated (sky blue, vivid red, golden yellow, dark blue borders) | Creative/freeform card generation, the look of the original deck |
The forensic style pairs each known card with a structured [Subject/Action/Location/Composition/Lighting/Style] prompt analyzed from the reference images. The classic style uses the original personality-driven prompt ("You are creating a tarot card in the exact style of Ellen Lorenzi-Prince's Minoan Tarot deck...") without per-card overrides.
# Generate a specific card (forensic style, default)
python scripts/minoan_tarot.py card "The Priestess" --number II
# Generate with the original Jan 5 vivid palette
python scripts/minoan_tarot.py card "The Priestess" --number II --style classic
# Generate from archetype
python scripts/minoan_tarot.py archetype strength
python scripts/minoan_tarot.py archetype strength --style classic
# Continue a session (visual memory of previous cards)
python scripts/minoan_tarot.py session "new-arcana" --card "The Dreamer"
# Generate card back design (both styles supported)
python scripts/minoan_tarot.py back
python scripts/minoan_tarot.py back --style classic
# List all 78 traditional cards
python scripts/minoan_tarot.py list
"Sekhinat Daborat" — Ba'alat Tinit
Workflow G: Interactive Chat (Daimon Chamber)
When to use: User wants a real-time, browser-based conversation with all daimones. Toggle individual voices, see images inline, shared memory toggle.
Script: ui/server.py
python ui/server.py --port 4455
# Visit http://localhost:4455
Features:
- Toggle daimones: Flash, Pro, Dreamer, Director, Opus visible; Resonator and Minoan in "+ More"
- Thinking placeholders with unique animations per daimon
- Dynamic verb display (LLM chooses its action verb)
- Shared Memory toggle for frame accumulation
- Lightbox for full-size image viewing
- Real-time WebSocket updates
Core Concepts
Visual Memory (KV Cache)
Generated images become context for subsequent generations. The folder IS the memory:
canvas/
├── stream/{session}/frame_001.jpg
├── council/{session}/frame_001.jpg
└── resonance/{session}/plate_001.jpg
Dynamic Verb Protocol
Each daimon has a default verb but can override it per response:
[VERB: glimpsed] The pattern was always there.
UI displays: FLASH glimpsed
Environment Variables
| Variable | Required For |
|---|---|
GEMINI_API_KEY |
All Gemini daimones (Flash, Pro, Dreamer, Director, Resonator, Minoan) |
ANTHROPIC_API_KEY |
Claude daimones (Opus) and council.py reflections |
Quick Reference
| Script | Purpose | Key Flags |
|---|---|---|
analyze.py |
Multi-image style analysis | --images, --prompt, --model, --output |
resonate.py |
One-on-one visual dialogue | --context, --prompt, --output |
daimon.py |
Multi-daimon dialogue | --stream, --shared-memory, --only, --to |
faithful_colorize.py |
Describe-first transformation | describe, prompt, colorize, transform |
resonance_field.py |
MESSAGE TO NEXT FRAME plates | start, continue, zoom, inject |
council.py |
Claude reflects on Gemini | --shared-memory, --only, --session |
minoan_tarot.py |
Tarot card generation | card, archetype, session, back, --style {forensic,classic} |
ui/server.py |
Daimon Chamber web UI | --port |
Inspired by Danielle Fong's thread on persistent visual memory creating cross-model resonance.