Talking to a voice model today often feels like speaking into a well-lit void. The answers can be sharp, the TTS can sound human, and still something is missing: there is no presence on the desk. No glance when the model starts. No small gesture when a thought lands. Just a waveform, a chat log, or a black window that happens to speak.
That gap is why we built AVATAR — an open-source desktop companion from ARPA Hellenic Logical Systems that puts a VRM character on your screen, moves it with VRMA motion, and lipsyncs to live audio. It is not another chatbot. It is a thin, local-first presenter: your agents, tools, and listening habits stay yours; AVATAR gives them a body to occupy while you work.
AVATAR runs primarily as an Electron transparent, always-on-top overlay on Windows. You drag a glass bar to move it, pin it over your IDE or browser, and let it follow sound from system output, a chosen app window, the mic, or a file. Bundled sample characters get you started; Settings → Directories points at your own .vrm
and environment folders; optional VRoid Hub (bring-your-own OAuth) loads link-only characters for the session. Preferences live in a plain config.yaml
. Contributors can also run the Vite app in the browser for UI and VRM work — the full companion experience is the desktop shell.
Under the hood it is deliberately boring in the best way: standard VRM / VRMA, Three.js, no mandatory cloud avatar SaaS. If your audio is local, the companion can stay local.
People wiring local LLMs, voice pipelines, or agent stacks are an obvious audience — a face next to Ollama, a TTS demo, or a custom loopback makes the system feel finished instead of experimental.
It is also useful when the “agent” is not an agent at all:
Same app; different reasons to keep it pinned.
v0.7.0 is less “new product” and more “the companion grows teeth for motion.” You can point Directories at a folder of your own .vrma
clips. A validated stage command layer now owns play/set paths so triggers share one surface. Motion Deck (Settings → Motion) lets you shortlist gestures, bind keys, and fire a clip once without stealing the Animations selection you were looping — useful for streamers, demos, and anyone tired of opening Gear mid-conversation. Environment pickers got lighter (posters instead of hauling full GIFs into every thumb), and production builds keep trial custom/
media out of the installer by default.
None of that replaces the core loop — overlay, audio, VRM — it makes the loop easier to drive from the keyboard and from whatever comes next (local buses, keyword maps, richer expression work).
Windows, no Node: grab the installer from the v0.7.0 release — AVATAR-Setup-0.7.0.exe. Accept the EULA, launch, pick audio, leave it on top of whatever you already use.
From source (desktop):
git clone https://github.com/ARPAHLS/avatar.git
cd avatar/avatar
npm install
npm run desktop
Contributors / UI sandbox: npm run dev
→ http://localhost:5173 (browser; system loopback and overlay chrome stay Electron-only).
Docs live in the repo (Using the app, installation). Source, issues, and changelog: ARPAHLS/avatar. MIT-licensed; cite via CITATION.cff if you use it in research.
Voice models will keep getting better. The interesting question is whether they still sound like they are speaking from nowhere. AVATAR is our answer on the desk: open source, local-first, and finally a face for the things you already listen to.