OpenCharm is an open-source project that provides a "body" for AI agents that are already running. The official description is: it is an open-source body for the AI agent you are already using (Claude Code, Codex, Hermes Agent, OpenClaw, or any ACP agent)—a face, a voice, and a single button. It currently appears as a desktop charm at the top of the screen on macOS or Windows, and in the future it can run on a small development board that users build themselves.
[Purpose and Positioning] The official description emphasizes that it is not a new assistant and does not replace anything: the agent keeps its own memory, skills, and model, and what OpenCharm provides is the part it lacks—a pair of eyes, a voice, and a button you can press without looking. The core aim is to let users see what the agent is doing and talk to it or approve actions without opening their phone or typing a prompt.
[Main Capabilities]
- Expression and status feedback: two characters serve as eyes and one character serves as a mouth, recognizable from a distance. The official list includes 22 emotions and 13 agent states: breathing, blinking, looking around, following a finger on the screen, eyes bulging when the button is pressed, greeting after unlocking, being happy after helping, dozing off with a z character after about four minutes alone, and reacting differently when poked (quickly poking three times in a row causes dizziness). The agent's events are converted into corresponding expressions, such as thinking, working, stuck, completed, learned something new, needs input or approval (orange ring plus one prompt sound), retry pileup, error, created or improved a skill, saved information about the user, spent more than the set limit, or is in a do-not-disturb period (the agent keeps running, and the surface stays quiet).
- Voice interaction: hold the button to speak; the microphone is turned on only while held and turns off when released, with no wake word. This rule is written into OpenCharm OS itself, and the agent cannot turn on the microphone on its own.
- Decision and approval: when the agent needs user confirmation, an orange ring appears; holding means agree, and pressing means reject, which the official description describes as an operation similar to a walkie-talkie.
- Customization: optional colors, naming, and choice of face shape; these choices are not saved or sent. The desktop version settings or the workspace's opencharm.json can sync the same configuration (greeting, sound, movement amplitude). charmd is a small daemon on the machine, responsible for sending voice to the agent and bringing back voice, expressions, and questions.
- Data and keys: the device does not store API keys and does not save the PIN (charmd only stores a hash). VoiceUnderstands on the user's computer. By default it uses Microsoft's free text-to-speech for replies, and the official documentation explicitly states that this means the text of each reading is sent to Microsoft; you can also switch to local speech to keep everything on the machine, or use your own OpenAI key.
[How to use]
- Desktop shortcuts: on macOS it is ⌥ Option + Space, on Windows it is Ctrl + Alt + Space. It can be used in any app and can be changed in settings. Hold to talk; for other actions, press once.
- How to get it: download from GitHub Releases. The official documentation says it is built from the code by the repository's own CI, with checksums and build provenance provided; you can also build it yourself from the code. It supports macOS and Windows.
- Pairing with an agent: run opencharm init, then run opencharm serve alongside an agent such as Claude Code, Codex, or Hermes, and then say hello.
- Supported agents: any agent that uses ACP (Agent Client Protocol), including Claude Code, Codex, Gemini CLI, goose, Hermes Agent, OpenClaw, or any server that provides an OpenAI-compatible API; connect to one at a time. The official documentation says Claude Code has been tested end to end.
- Local or server operation: the agent can run on the local machine, reading files, running tests, editing code, and using permitted apps; it can also run Hermes, OpenClaw, or any OpenAI-compatible service on your own server, accessible from anywhere over an encrypted link. The official documentation says any risky operation will turn the face orange and wait for a keypress confirmation.
[Hardware and cost] The software, including the desktop version, is free and open source. The official hardware cost given is about $32 (excluding shipping): the Waveshare ESP32-S3-Touch-AMOLED-2.16 with battery version, an off-the-shelf development board that already includes the screen, microphone, speaker amplifier, battery, and enclosure. The official documentation says OpenCharm will be flashable to this board after the device port is completed; until then it runs on the computer as the desktop version. Printing the enclosure is optional, and the official description is three parts, no supports needed, with a strap at the seam. The enclosure can be printed in one of six colors or any color. The official documentation states that nothing is sold, and users themselvesBuy parts in rows.
[Applicable scenarios] The typical uses listed officially include: conversing with an agent (hold down to ask anything and hear a clear answer); the agent needing confirmation (hold down for yes, press for no); knowing when a task is complete (after starting a long task, leave, and the expression will indicate completion); remembering information (say it once, the agent saves it, and the list can be viewed); learning (a five-minute adaptive quiz, with a reaction to every answer); morning briefing (pick it up and hear the single most important thing of the day); hands-free cooking (step-by-step guidance including timers, so you can still look while your hands are covered in flour); saying one sentence when leaving to control lights, heating, and doors; while traveling, seeing door changes, walking times, and the correct platform; when sleepy, it is sleepy too, preparing for tomorrow.
[Design principles and limitations] The design goals given officially include: usable within ten seconds after pressing a button, one thing per screen, glyphs in pure black, using orange only when the user is needed, and a target response time below 100 milliseconds. The project is open source down to the enclosure files and firmware, and can be customized at three levels: write one sentence (a text file in the workspace about the charm's identity and knowledge), add an MCP server, modify the body (fork OpenCharm OS, a C++ core that serves both the desktop version and the development board, and develop and test in a simulator on a computer). The limitations and risks stated officially: the project is provided as is, with no warranty, and users bear the risk of building and using it themselves; this is an open-source project, and the official party does not sell hardware. The desktop version runs OpenCharm OS, and the official party says it uses about 2% of a single core when idle, with the app at about 4 MB. The official party mentions that flashing the development board firmware depends on a device port that is not yet complete, and the Waveshare factory firmware can be restored at any time. The official party clearly states that there is no affiliation with Meta. More details about the specific functional differences between the development board and the desktop version are not fully laid out in the official materials.