OpenCharm is an open-source body for the AI agent you already run. It gives that agent a face, a voice and one key, and it works with Claude Code, Codex, Hermes Agent, OpenClaw or any agent that speaks ACP, the Agent Client Protocol, as well as any server with an OpenAI-compatible API. One package: one agent at a time. Today it lives at the top of your Mac or Windows screen as the desktop charm — its eyes sit on either side of the notch on a Mac, or above a small black pill at the top centre on Windows — and next it is designed to run on a small ESP32-S3 board you build yourself. It exists for people who already trust an agent and want a glanceable, hands-free companion for it.
The question the product asks is a simple one: why not just an app? The page acknowledges that a phone app could do most of this. The rest is the reason OpenCharm is a small thing that sits by your laptop or hangs from your keys. Your phone lies face-down and locked, so checking on an agent means picking it up and getting pulled into your inbox; the charm sits by your keyboard and a glance tells you whether your agent is busy, stuck or done. It does one job, then goes quiet. The page also positions OpenCharm against earlier AI gadgets: the Humane AI Pin and Rabbit R1 both promised to replace your phone, and both were slow, missed the basics and asked you to learn a new way of doing things. OpenCharm replaces nothing. Your agent keeps its memory, skills and model; the charm is the part it was missing — eyes, a voice, and a key you can find without looking.
The charm's face is deliberately simple and readable. It is built from two characters for eyes and one for a mouth, which makes it readable from across the room, cheap to draw, and easy for anyone to write a new one and share it as text. There are 22 moods across 13 agent states, ranging from Neutral, Happy, Joy, Cute, Wink and Loved through Listening, Thinking, Focused, Curious, Confused, Surprised, Doubtful and Unamused to Strain, Sad, Oops, Dizzy, Sleepy, Learned, Money and Needs You. The face is never static: it breathes all the time and more slowly when asleep, blinks quickly, doubly or slowly, glances around and wanders up while it thinks, follows your finger on the screen and squashes when the key goes down, its eyes swell with your voice while you hold the key, it greets you after you unlock it and is pleased after it helps, and it falls asleep after about four minutes alone, with z's. A poke gets a different reaction each time, and three quick pokes make it dizzy.
Beyond the idle animation, the charm turns your agent's events into faces so you can see what it is doing without asking. It shows Hello when you pick it up or sit down for the first touch of the day; Listening while you hold the key and talk; Thinking while the agent works on an answer; Working while a tool or a long task is running; Needs You for an approval request or a clarifying question, with an orange ring and one sound; Done when a turn completes or a cron job finishes, with one line before it returns to the face; Stuck when three tool errors pile up in a row; Failed when a run breaks, saying what in one line; Learned when a skill is created or updated; Noted on a memory write such as user.md or memory.md; Cost when spend passes a limit you set; Asleep when the charm is face-down or during quiet hours while the agent keeps running; and Idle when nothing is going on, with slow blinks and glances.
Interaction is built around a single key with three moves, so there is nothing to learn: hold, press, tap. Holding the key is like a walkie-talkie — you talk to it, and the microphone is on only while you hold it. Pressing the key does everything else: wake it, stop it talking, dismiss, or say no. When the orange ring is showing because your agent has a question or wants an approval, holding means yes and pressing means no. Tapping its face is just for a reaction; you never need a swipe. On the desktop charm the key is Option + Space (Ctrl + Alt + Space on Windows) and works in any app; you can change it in Settings.
Speech and decisions each get their own simple representation on screen. When the charm answers, the words type out under the eyes or in a panel below the notch — long answers scroll like captions and nothing runs off the screen. When your agent needs a decision, an orange ring appears around the screen or the panel and the key says what it will do. The design rules stated on the page are strict: one thing per screen, glyphs on true black, orange only when it needs you, and a target reaction time of under 100 ms.
You can make the charm your own without touching code. Pick its colour — White, Cobalt, Lime, Lilac, Sun or Coal, or your own, which lights the glyphs but should not be orange or too dark — give it a name of up to 12 letters, digits and spaces, and choose one of the 22 faces. The same settings can be made in the desktop charm's Settings or in your workspace's opencharm.json, and the notch follows them, as will the board, along with its greeting, voice and how calm it moves. On the board you print the shell in one of the six colours or any colour you like. On a real charm, your agent's state picks the face, and your agent can try on a new look when you ask. Nothing you pick on the page is saved or sent.
Underneath, OpenCharm is deliberately thin. The charm holds no API keys and runs no model; it is a small body for a brain you already have. charmd, a small daemon that runs on your machine next to your agent, carries the charm's voice to your agent and brings back speech, faces and questions. It handles pairing and the PIN, speech on your machine or with your own key, and the charm's own tools for your agent. It can run on your laptop, a Mac mini or a server, and the desktop charm brings its own. Your agent — Claude Code, Codex, Gemini CLI, goose, Hermes Agent or OpenClaw, one at a time — keeps its memory, skills and model, and the charm asks you before it acts. Anything risky turns the face orange and waits for your key.
The desktop charm is the version you can use today, without hardware. It lives at the top of your screen and is the same OpenCharm OS the board will run; it uses about 2% of one core at rest and is a 4 MB app. By the notch on a Mac, its eyes sit on either side of the notch, breathing and blinking, and holding the talk key in any app opens a panel below. On Windows it is a small black pill at the top centre. In Settings you choose the agent's folder, the agent (Claude Code, Codex, Gemini CLI, goose, Hermes, OpenClaw, any ACP command or an OpenAI-compatible server) and the voice: local on a Mac, OpenAI with the key in your keychain, or none. It runs its own charmd and pairs by itself. It is available for macOS and Windows, downloaded from GitHub Releases, built by the repository's own CI from the same code with checksums and build provenance, or you can build it yourself.
If you want the physical version, the build is short: one board, one evening. The hardware is a ready-made Waveshare ESP32-S3-Touch-AMOLED-2.16 board with a battery, which already has the screen, microphones, speaker amp, battery and a case: a 2.16-inch 480 x 480 AMOLED, ESP32-S3, two mics, in a 46 x 46 x 22.5 mm case for $31.99. You need a USB-C cable that carries data, and optionally a printed shell — about 14 cm3 of matte PLA in your colour with a little of a contrast colour for the key, for roughly $1 — and any thin phone-charm strap for about $2, bringing the total to $32-35. The charm already runs on your computer as the desktop charm; flashing the board comes with the device port, and Waveshare's factory firmware can always be restored.
There are three levels of making it yours. On level one, no code is needed: who the charm is and what it knows are text files in its workspace, and you can ask your coding agent to change them — for example a skill file that makes it wrap up your day in three lines when you say "wrap up". On level two you give it tools by adding MCP servers to its workspace; it already has the charm's own tools: show_face, ask, notify, say and set_look. On level three you change the body by forking OpenCharm OS, one C++ core for the desktop charm and the board, developed and tested in an emulator on your computer. A C++ ESP-IDF snippet on the page shows how an Ask server kind triggers the decision view.
Whatever your agent can do, the charm does — it adds a face, a voice and one key, while the skills and tools are your agent's. Described examples include talking to your agent by holding the key and hearing one clear answer; approving what your agent wants to do, holding for yes and pressing for no; walking away from a long task and knowing from the face when it is done; telling your agent something once so it remembers it; five-minute quizzes that adapt to you and get a reaction on every answer; a morning brief with the one thing that matters today; hands-free cooking with one step at a time and timers, readable with flour on your hands; controlling lights, heating and the door through Home Assistant MCP; travel days with gate changes, walking time and the right platform; and winding down when it gets sleepy.
On safety and privacy, the product is explicit. The microphone opens only while you hold the key and closes when you let go; there is no wake word, and the rule lives in OpenCharm OS itself so your agent cannot open the microphone on its own. A PIN locks the charm on every power-on and five wrong tries block it; you can lock or revoke it from your machine. The charm keeps no API keys and never stores its PIN — charmd keeps only hashes. Everything runs with you: your agent runs on your own machine or server with its own memory and model, and what you say is understood on your computer. By default replies are spoken with Microsoft's free voices, which means the text of each spoken reply goes to Microsoft; you can keep everything local with the local voice instead, or use OpenAI with your own key. The software, the desktop charm included, is free and open source; the board is about $32 before shipping, there is no subscription, and the project sells nothing.
OpenCharm is therefore not a new assistant and not a phone. It is an open-source body for the agent you already run: a face made of typed glyphs, a voice, and one key, on your Mac or Windows screen today and on a board you build next. It replaces nothing — your agent keeps its memory, skills and model — and if the company were to disappear, nothing would happen, because your agent and charmd run on your machine and the code is yours.