Use case · AI agent mascot
A mascot that shows what your agent is doing.
Agents work for minutes, then quietly wait for approval. A character that shows working, waiting for you, done or failed means you stop checking the terminal every thirty seconds.
Works with Claude Code hooks, the CLI and any agent loop
Try it
Simulate a build.
The ai_agent canvas, live. Run a build, or one that fails, and watch the states change.
lumorig companion
idle$ claude "fix the flaky auth test"
State graph · ai_agent
now: idleWhere it runs
Terminal, browser or your own app.
Claude Code, in a side terminal
lumorig companion draws your character in the terminal; these hooks keep it in sync with the agent.
{
"hooks": {
"UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "lumorig state working" }] }],
"PreToolUse": [{ "matcher": "*", "hooks": [{ "type": "command", "command": "lumorig state working" }] }],
"Notification": [{ "hooks": [{ "type": "command", "command": "lumorig state waiting" }] }],
"Stop": [{ "hooks": [{ "type": "command", "command": "lumorig state done" }] }]
}
}Your agent UI, in the browser
Embed the character with <lumorig-player> and set one input from your run events.
const agent = document.querySelector("lumorig-player");
// ai_agent canvas: 0 idle · 1 working · 2 waiting · 3 done · 4 failed
run.on("start", () => agent.setInput("status", 1));
run.on("needs-approval", () => agent.setInput("status", 2));
run.on("finish", () => agent.setInput("status", 3));
run.on("error", () => agent.setInput("status", 4));Why a character
Status you notice without reading.
Waiting is the expensive state
An agent blocked on approval wastes the most time. A waving character in the corner of your eye gets noticed; a line of terminal text doesn't.
Done and failed feel different
A small celebrate or a sad beat tells you the outcome before you read the log.
Made by your agent, too
With the MCP server, your agent can create, animate and embed its own mascot.
For agents
Give your agent the whole toolkit.
claude mcp add --transport http lumorig \
https://lumorig.com/api/mcp \
--header "Authorization: Bearer $LUMORIG_API_KEY"FAQ
Agent status questions.
Which states does the agent template have?
Five: idle, working (loops), waiting for you (a looping wave), done (celebrates, then back to idle) and failed (a sad beat, then idle). One numeric input, status, moves between them with short blends.
How do I connect it to Claude Code?
Run lumorig companion in a side terminal, then lumorig hooks --write. It merges hooks into .claude/settings.json that call lumorig state working, waiting and done at the right moments, keeping your existing hooks.
Does it only work with Claude Code?
No. The companion only watches a small state file, so any tool can drive it with lumorig state <name>: a build script, a CI job, another agent. In a web app, set the status input on <lumorig-player> from your agent's events.
Can my agent create the mascot itself?
Yes. Add the hosted MCP server and your agent gets tools to create, animate, export and embed characters, including create_canvas for this template. The REST API and CLI do the same.
Is it free to run?
Running the companion, the player and canvases never costs credits. Creating the character does; the free plan includes 200 credits a month, enough for a couple of new characters.
Keep exploring
- Chatbot avatar An animated chatbot avatar that listens, thinks and talks in step with your chat widget.
- Developers Mascots as an API: REST, TypeScript SDK, hosted MCP server and CLI.
- Lottie generator Generate true-vector Lottie character animations (no embedded bitmaps) from a prompt or an upload.
- MCP guide Hosted and local MCP setup, and all fourteen tools.
Give your agent a face.
Start from a sentence or your own mascot, then pick the AI agent template.