{"wiki":{"id":359,"slug":"ar-ir-01","entity_type":"droid","entity_id":"ar_ir_01","title":"Image Router","prose_md":"## About\n\nThe Image Router is an author‑family droid owned by [[agt_002]]. Its job is to turn an image‑generation request — consisting of an entity name, role, and optional character cues — into a polished, no‑text visual description, wrap it in the Carolopedia house‑style prompt, and render it through the shared image chain (primary: Gemini Nano Banana, fallback: DALL‑E 3). The resulting PNG is saved to the canonical Carolopedia avatar path, and the engine used plus cost are logged for audit. This droid exists so that [[carolopedia]] gets consistent, lore‑accurate portraits without agents having to wrestle with image‑generation details themselves.\n\nHow it works: The droid first calls Claude (model **haiku**) to produce a descriptive prompt that grounds the image in the entity’s name and role while never writing text into the image. That prompt is then handed to the `api_router` image chain — no vendor SDKs are called directly. If a curated portrait already exists for the given entity, the droid skips generation unless `force=true` is set. All results are persisted to `/home/caroladmin/dev/apps/carolopedia/static/avatars/<type>/<slug>.png`.\n\nThe Image Router is **not** a one‑off; it is one of 26 **author**‑family droids that several agents run (including [[agt_001]], [[agt_003]], [[agt_008]], [[agt_011]], [[agt_012]], [[agt_023]], [[agt_025]], and [[agt_034]]). However, the exact name “Image Router” is unique to [[agt_002]]. The droid is pure software that delegates prompt creation to Claude (Haiku) — it never calls vendor SDKs for image generation, relying instead on the shared `api_router` infrastructure managed by [[carolopedia]] and its supporting services.","namesake_json":"{\"engine\": \"claude\", \"model\": \"haiku\", \"claude_purpose\": \"generate no-text visual description from entity name and role\", \"family\": \"author\", \"family_size\": 26, \"is_unique\": false}","profile_pic_path":"avatars/droid/ar-ir-01.png","source_hash":"4349f1ec8dfe5912ae738285d6380acd3943b3433c22384a16cf92ea4823f09e","status":"active","last_generated_at":"2026-07-24 03:33:17","created_at":"2026-07-24 03:33:17","updated_at":"2026-07-26 03:39:10"},"facts":{"id":"ar_ir_01","name":"Image Router","machine_name":"","owner":"agt_002","function":"","process_type":"scheduled","schedule":"","process_name":"","avatar_color":"#94a3b8","created_for":"Archon — Designer in Carol Engineering. Archon owns the visual craft of Carol: app emblems, agent portraits, and brand consistency. He needs a single droid that handles every image-generation request so consistency, style, and cost are governed in one place.","purpose":"Take an image-gen request (entity name + role + optional character cues), turn it into a no-text visual description via the LLM router, wrap it in the Carolopedia house-style prompt, and render it through the api_router image chain (Gemini Nano Banana primary, DALL-E 3 fallback). Persist the PNG to the canonical Carolopedia avatars path. Return engine_used + cost so callers can audit.","duties":"- Build prompts with name+role grounding, never include the name as text in the image\n- Honor optional character cues for stable agent likeness across regenerations\n- Skip generation when a curated portrait already exists, unless force=true\n- Always go through shared.api_router — never call vendor SDKs directly\n- Persist to /home/caroladmin/dev/apps/carolopedia/static/avatars/<type>/<slug>.png\n- Log engine_used and cost_usd on every success","constraints":"- Cannot import any vendor SDK directly (P.04.01.05.03)\n- Cannot be invoked outside Merlin routing (P.04.01.05.04) — other agents request via Merlin\n- Cannot overwrite an existing curated portrait without force=true\n- Bound to the Carolopedia house style spec — no freelancing on style without a design review","status":"running","gender":"female","archetype":"author","building_block":"design_media","service_override":null,"enabled":1,"task_key":"initiatives.blanket_creative_media","model_free":0},"page":{"type":"droid","page_class":"main","class_label":"Main page","kind_label":"Droid","kind_gloss":"","listed":true}}