OpenCharm is an open-source companion project whose goal is to give an already-running AI agent a "body." It is not a standalone AI agent, but rather the face and voice of your existing agent. It supports Claude Code, Codex, Gemini CLI, Hermes Agent, OpenClaw, any ACP agent, or any OpenAI-compatible agent. It serves one agent at a time.
Purpose OpenCharm gives AI agents visual expressions and voice interaction capabilities. It exists as a desktop widget beside the Mac notch, where the user interacts with the agent through a single button and learns the agent's state through a simple facial expression. The project also plans to release a small hardware board that you can build yourself, which can be placed next to a laptop or attached to a keychain.
Main capabilities
- Expressive face: two characters represent the eyes and one character represents the mouth (such as ^ ^, o O, > <), displayed in their own color on a pure black background.
- One button, three actions: hold to speak, press for other operations, tap the face.
- Multi-agent support: the desktop widget and the charmd daemon support multiple agent presets, including Codex, Gemini CLI, goose, Hermes, OpenClaw, and adapters for OpenAI-compatible agents. These adapters have test coverage (using stand-in agents), but have not yet been tried one by one in real environments.
- Hardware solution: provides a hardware build guide, including an approximately $32 (September 2026 pricing) Waveshare board, a small speaker, and an optional 3D-printed enclosure.
- Simulator: provides an OpenCharm OS simulator that runs in a browser tab, for developing firmware and the board before the hardware is available. Note that the simulator is not the way to use OpenCharm.
How to use Desktop widget (macOS): download from the latest release, select the agent's folder in settings, then hold ⌥ Space to speak. The Windows build has not been tested on real hardware. Command-line method: use the published CLI (requires Node 24, git, and an agent such as Claude Code). Running from source requires Emscripten; run npm run firmware:sim, then npm run cli -- serve, and in another terminal run npm run sim,Then pair using npm run cli -- pair <code>. In the simulator, hold Space to talk. Hardware build: see docs/build.md for exactly what to buy and print, or list it with npx opencharm hardware. OpenCharm will be installed onto the hardware via the device port (spec 009).
Use cases
- Users who want to add voice and expression interaction to an existing AI agent.
- Developers and hobbyists who want to build their own desktop companion device.
- Daily interaction on macOS with a supported agent.
Limitations
- The project is in an early stage. It has been tested end to end on macOS (October 3, 2026), including opencharm init, charmd, the simulator, and Claude Code, from pairing to getting a voice answer through a real microphone.
- The desktop widget is macOS only; the Windows build has not been tested on real hardware.
- Firmware for the real board (spec 009) is not yet complete.
- Although the adapters have been tested, they use stand-in agents and have not yet been verified one by one on real agents.
- The project does not sell any devices; there is no sales, preorder, payment, or waitlist, and no finished devices are shipped.
- The built widget has no CE, FCC, UL, or other finished-product certification.
- It must not be used for safety, medical, emergency, or time-critical purposes.
- The behavior of the agents used and configured is the responsibility of the user and their software.
- The project is not affiliated with Meta, Nous Research, OpenClaw, Waveshare, or Espressif.
- Everything is provided "as is", without any express or implied warranty.
- Lithium batteries carry a risk of swelling, overheating, or fire; follow section 3 of docs/build.md, never charge unattended, and stop using swollen, hot, or damaged batteries.