layers: body · head · antenna · eyes · mouth · arm_r · arm_l
Can't rebuild it faithfully? You'll see the side-by-side and decide. We never swap in a lookalike.
Character engine for products
Upload the mascot you have, or start from an idea. Lumorig rebuilds it as a rigged vector character that moves instantly and ships as one line of code.
Free to start · 15 motions included · No card
<lumorig-player src=…>Two ways in
Most tools redraw your character from a reference. We rebuild yours: Claude Opus 5.5 traces it into clean, layered vector parts and rigs it, so the art you paid for is the art that moves.
layers: body · head · antenna · eyes · mouth · arm_r · arm_l
Can't rebuild it faithfully? You'll see the side-by-side and decide. We never swap in a lookalike.
Every example above is a real upload and its rebuild.
Instant motion
Presets are fitted to your character's rig, so they play instantly and cost nothing. Need something specific? Ask for it in plain words.
Or ask for it
do a tiny victory hop, then look embarrassed about it
Added victory-hop · 1.6 s · loops
custom motions use credits · cost shown before you confirm
Consistency
Video generators redraw your mascot in every frame, and ears, eyes and colours wander. A rig can't wander: every pose moves the same parts.
In your product
The moments that make people quit are the moments a character helps most.
Welcome to Ledgerly
Three steps and your books are live.
A face on step one.
What you'd ship: <lumorig-player animation="wave" trigger="auto">
Canvases
Canvases turn motions into behaviour. Wire states to your app's events and the mascot listens, thinks, talks, celebrates, or sulks, blending smoothly between them.
Pip
idleHi, I'm Pip. Ask me anything.
State graph · chatbot
blend 0.2–0.3sconst pip = document.querySelector("lumorig-player");
input.addEventListener("input", () => pip.setInput("listening", true));
chat.on("request", () => pip.setInput("thinking", true));
chat.on("token", () => pip.setInput("talking", true));
chat.on("done", () => pip.setInput("talking", false));Ship anywhere
Export the same character as true-vector Lottie, animated SVG, video with alpha, or stickers, or skip files entirely and embed it live.
686 KB → 4.4 KB. Same loop, 99.4% smaller, and still sharp at 4×.
Lottie
iOS, Android, web, Framer
4.4 KB gz
Animated SVG
An <img>, no JavaScript
8.6 KB gz
<lumorig-player>
Live, interactive, one line
~8 KB player
React
Props mirror attributes
MP4
Social, ads, product videos
98 KB
WebM (alpha)
Transparent video on the web
147 KB
GIF
Email, Slack, docs
686 KB
WebP
Animated, smaller than GIF
675 KB
APNG
Lossless with alpha
Sprite sheet
Unity, Godot, PixiJS
PNG / SVG stills
Any pose, any size
4.2 KB svg
Stickers & logo
Die-cut and badge crops
<script type="module" src="https://lumorig.com/player.js"></script>
<lumorig-player
src="https://lumorig.com/api/v1/mascots/pip/bundle"
animation="idle"
trigger="hover"
follow-cursor>
</lumorig-player>Sizes measured on a 2-second wave, 512px, 30fps.
Built for agents
Everything in the studio is also an API call, an MCP tool and a CLI command, so Claude Code, Cursor or your own agent can make, animate and embed mascots without leaving the editor.
https://lumorig.com/api/mcpclaude mcp add --transport http lumorig \
https://lumorig.com/api/mcp \
--header "Authorization: Bearer $LUMORIG_API_KEY"create_mascotNew character from an idea, or rebuild an imagelist_mascotsEverything in the workspaceget_mascotParts, palette, motions and a preview imageedit_mascotChange it in plain words, or branch a look variantrecolor_mascotSwap palette tokens instantlyanimate_mascotA preset (free), a described motion or a reference videosuggest_animationsSignature-motion ideas for your productexport_mascotLottie, SVG, MP4, WebM, GIF, stickers…get_embed_codeA ready <lumorig-player> or Lottie snippetcreate_canvasChatbot, AI-agent or onboarding behaviourcreate_sceneThe mascot in an illustrated vector sceneanalyze_websiteThree mascot concepts from a brand's sitewait_for_jobBlock until a long job finisheslist_jobsRecent jobs, status and costHosted over HTTP or local over stdio — the same twelve tools either way.
Pricing
Presets, the player and exports of motions you already have never cost credits. You only pay when Claude creates something new: a character, a rebuild, a custom motion or an edit.
$0forever
Your first characters are on us.
$12/mo
For one product with a character in it.
$36/mo
For teams shipping characters across products.
FAQ
Yes. It's rebuilt from your art, not reinterpreted. If a faithful rebuild isn't possible (heavy textures, photoreal, 3D renders), we show you the side-by-side and say so before you spend anything.
Real vector paths and a real rig. The Lottie has no embedded bitmaps; open it in any Lottie editor and every part is a named layer.
Yes. Every part is a named layer, so you can recolour it in code, or ask for changes in chat and re-export. Embeds pick up the new version.
All 15 presets, always. They're fitted to your rig without a model call. Custom motions and edits use credits, and the cost is shown before you confirm.
Web (HTML or React), iOS and Android through Lottie, video anywhere, and sprite sheets for game engines.
You own your characters and your exports, and we don't train on your uploads. Free-plan characters are for personal use; paid plans include commercial use.
Add the hosted MCP URL, or run npx @lumorig/mcp locally. The lumorig CLI works too. That's it.
Keep them. Those are tools for animating; Lumorig hands you a finished, rigged character that already knows 15 moves, and it exports Lottie those tools can open.
Drop in the one you have, or start from a sentence. It will be waving in under a minute.