Give your AI
more character.

Welcome to the age of Awesome Intelligence.
Shows what your agent is doing.
Tinted per agent, with faces, poses and shapes.

Powered by Kosmos
Expression
Shape
Clip
Mouth
Effect
Tint

What you get

  • Kamiji hand available

    One rigged GLB with a finger skeleton, face morph targets and four clips: Idle, Wave, Think, Celebrate. The React component adds more motions such as Spin, Bounce and Typing.

  • Tint per agent available

    Any CSS colour. A helper picks a stable colour from an agent name, so every agent keeps its own look.

  • Expressions and poses available

    Eight expressions (neutral, happy, excited, thinking, sad, angry, surprised, sleepy), hand poses, and a talking mouth.

  • Shape morphs available

    The hand blends into a sphere or a rounded cube and back.

  • Emotes and Git icons available

    Small animated emotes over the avatar, and GitHub status icons, as React components.

  • 14 Kamikin mochi available

    Skinned GLB characters with idle clips and six swappable face states (neutral, blink, happy, joy, surprised, sad). Listed in assets/mochi/index.json.

  • 16 Rubbernose characters available

    Skinned 1930s cartoon GLBs (eraser, alarm clock, soda can, sunflower, mug, pudding, light bulb, rocket, bell, cake, gift box, trash can, padlock, apple, cloud, trophy) with nine clips, six face states and a tintable body. Listed in assets/rubbernose/index.json.

  • Emoji prop library available

    24 clay-style 3D props (heart, star, check, fire, gear and more) in assets/props/, tintable by material colour. First batch; a React component for them is in progress.

  • Framework-free core and web component planned

    A <kamiji-avatar> element so non-React apps can use the hand.

In motion

Live Kamiji samples cycling through movements and expressions. Around each one, a 3D emoji from the prop library pops in, stays a moment and pops out. Never more than one at a time, and every accessory is followed by a beat with none. Prototype: Spin, Bounce, TurnPoint, Hello and Typing come from the component; Nod, Shake, Droop and Sway are demo-only.

Accessory
normal
  • Loading 3D samples

Emoji are the 3D props from assets/props. Loading starts when a sample scrolls into view.

In conversations

How the component libraries look inside a threaded conversation: avatars, moods, emotes, reactions, Git status with a metadata rail, thread layouts and the subtitle stack. Pick a library on the left. Prototype.

A pocket Kamiji

A playful demo: feed, play with and tuck in a tiny Kamiji, or switch the style and meet Kamiji in seven other tiny game genres. Prototypes, mini versions of familiar genres. Nothing is sent anywhere; each style saves only in your browser.

Install

Private repository. You need access to the repo to follow the Today steps. There is no public download, npm package or CDN build yet.

Today works now

Use the React component by vendoring it into your app. This is how OpenHands uses it.

  1. Clone the repository (access required):
    git clone https://github.com/FraterCCCLXIII/kamiji.git
  2. In your app (React 19 or newer), install the three dependencies the library uses, at the pinned versions:
    npm install three@0.186.1 react-icons@5.6.0
  3. Copy src/ and assets/kamiji.glb into your app, keeping that layout, for example:
    vendor/kamiji/src/
    vendor/kamiji/assets/kamiji.glb
    The component finds the model with new URL("../assets/kamiji.glb", import.meta.url), so the relative path must stay, and your bundler must support that pattern (Vite does).
  4. Use it:
    import { KamijiAvatar } from "./vendor/kamiji/src";
    import "./vendor/kamiji/src/kamiji.css"; // emote animations
    
    export function Agent() {
      return (
        <KamijiAvatar
          color="#ffd23f"
          expression="happy"
          pose="peace"
          size={96}
          alt="Planner agent"
        />
      );
    }

Props: color, expression, animation, pose, poseDurationMs, speaking, lockFace, shape, shapeDurationMs, size, className, alt. The index also exports KamijiWithEmote, KamijiGitIcon and KamijiHandsUp.

The 3D scene loads lazily and one WebGL renderer serves every avatar. Without WebGL, or with reduced motion on, it shows a flat SVG hand.

Mochi: copy assets/mochi/ and load the GLBs with three.js yourself. There is no mochi React component yet.

Soon planned

None of this is published. The names and snippets show the intended shape and may change.

npm planned

# planned, not published
npm install kamiji

Web component planned

<!-- planned, not published -->
<script type="module" src="kamiji-avatar.js"></script>
<kamiji-avatar color="#ffd23f" expression="happy"></kamiji-avatar>

The plan is a framework-free core, a custom element with color, expression, pose, animation, shape and emote, and a React wrapper over it with the same API as today.

Works with

  • OpenHands works today

    Vendored in OpenHands Agent Canvas for feed and agent avatars.

  • Odysseus planned

    Plain JS UI. Drop <kamiji-avatar> into the HTML strings that build today's initials circle. First adapter planned.

  • Hermes WebUI planned

    Plain JS UI with no avatar today. Add an avatar slot beside the assistant turn.

  • OpenClaw planned

    Lit control UI. Custom elements work natively; keep the existing image or emoji as a fallback.

  • openclaw-os planned

    pnpm workspace. Not yet checked for a fit.

  • VS Code planned

    A webview that hosts the web component.

  • JetBrains planned

    A JCEF panel that hosts the web component.

  • MCP and ACP planned

    A mood hook so any agent can signal status, mood, colour and emote through a small JSON protocol.

  • Terminal planned

    Terminals have no WebGL, so pre-rendered sprite sheets (PNG or ANSI).

Logos are trademarks of their owners. Listed to show compatibility, not endorsement.

History

Kamiji grew out of several earlier face and avatar engines. Dates come from git history and file times; items marked unverified in docs/history.md are not certain.

  1. Loading history

Licence and trademarks

  • Code: MIT.
  • Characters and assets (the hand, Kamikin mochi, models, textures, props): free for non-commercial use under CC BY-NC 4.0, with credit.
  • For-profit apps need the paid Premium Licence. It is a draft term sheet, not yet a contract. Contact openartist@gmail.com.
  • "Kamiji" and "Kamikin" are trademarks of Paul Bloch.

Credit line: "Kamiji by Paul Bloch" (or "Kamikin by Paul Bloch"), with a link to the licence and a note of any changes. Full text is in LICENSE.md, LICENSE-COMMERCIAL.md and TRADEMARKS.md in the repository.

Plush with a screen face

A concept: a soft plush animal whose head is a screen, showing a Kamiji face. Your brand's mascot as a plush with a screen face.

  • Kamiji faces on the screen

    The same expressions, eyes, mouth and colour as the 3D characters on this page, drawn on the screen: happy, thinking, sleepy, surprised.

  • Your animal, your face style

    A bear, a bunny, a cat or your own mascot, with a hand-drawn crayon look. Colour dots pick the pen colour, and a stylus draws.

  • Could speak too

    It could speak with the same voice setup as the site.

Contact us

Concept render of a cream teddy-bear plush with a glossy screen face showing a smiling drawn face and a row of colour dots
Concept render

Your own branded Kamiji

Commission a Kamiji set made for your brand: your colours, your mascots, emoji and hands, your expressions, motion and props, delivered in formats you can use in your product.

Contact us

The button opens an email to openartist@gmail.com. Nothing is sent from this page.

  • Your colours

    The hand, the sphere head and the mochi tinted to your palette, with matching outline and shading options.

  • Your mascots, emoji and hands

    A mascot, a small cast or a set of emoji and hands built like the ones on this page, so they work in the same avatars, reactions and threads.

  • Your expressions, motion and props

    Faces, poses and short animation cycles for the moments your product needs, such as thinking, success, errors and waiting, plus props to go with them.

  • Delivered to use

    Rigged glTF models and the React component that plays them, as in the install steps above. A web component for non-React apps is planned, not built.

  • Licensing

    Custom sets for commercial use come under the Premium Licence, which is still a draft term sheet. We will agree the terms with you before any work starts.

Tell us about your brand, where the characters will appear and roughly when you need them, and we will reply with what a set could include. No prices or delivery times are fixed yet. Your mascot as a plush with a screen face is a concept we can talk about too.

Built with