Skip to content

Roadmap ​

nanoMuse is an open-source personal agent for every device you own. This page is a map for people who want to help: what we are working on now, what comes after, and where to put your hands first in each area. No dates — a thing ships when it works on a real phone and a real computer.

The 0.1 versions are a preview. We use the phone, the desktop, the web and the relay every day and know where they are rough; the list below is honest about it. What does not change: one agent rather than a framework, an approval between it and anything irreversible, secrets that never reach the model, memory you can read and edit, any OpenAI-compatible model, free software.

Now — catching up with Muse ​

Meta's Muse set the shape of this kind of agent; these are the places where ours is still behind it, and the first task in each.

Memory ​

The agent keeps SOUL.md, USER.md, MEMORY.md and HEARTBEAT.md and a remember tool; consolidation runs, recall is embeddings over the store. What is missing: memory that surfaces on its own at the right moment, forgetting that you can see, and the same memory on every device rather than per device.

  • Module: nanomuse/memory/ (store.py, consolidate.py, embeddings.py); the phone's io.github.nanomuse.sysfiles; the desktop's profile panel Memory.
  • Read: desktop-muse.md (the Memory page), android.md.
  • First task: a test in tests/test_memory_recall.py for a fact the agent should bring up unprompted in a later conversation, then make it pass.

Proactivity ​

Goals are checked on a schedule, routines run with the app closed, the feed is written each morning. What is missing: the agent noticing things between schedules — a mail that arrived (nanomuse/triggers/mail.py is the first trigger), a calendar entry coming up, a device that came online — and deciding whether it is worth a word.

  • Module: nanomuse/goals/, nanomuse/triggers/, nanomuse/nudges.py; the phone's io.github.nanomuse.feed and goals.
  • Read: every-device.md for how a nudge reaches the device you are holding.
  • First task: a second trigger next to mail.py (calendar is the obvious one) with the same interface, and the feed entry it produces.

The conversation ​

The chat is where everything happens, and it still feels like a chat client. Presence — the face reacting while the agent works, the status line in words — is uneven between the clients; voice is input only since the calls were removed in 0.1.22 (calls.md), and a voice that answers is an open question; the live stage (harness/dsh-nanomuse/src/client/LiveStage.tsx, Android HandsStage.kt) shows the hands but not yet what the agent is thinking in a way a person can follow.

  • Module: harness/dsh-nanomuse/src/client/ (AvatarChat.tsx, LiveStage.tsx, Capsule.tsx), Android io.github.nanomuse.chat and hands, iOS NanoMuseChatCards.swift, NanoMuseComposer.swift.
  • Read: desktop-muse.md, parity.md — the open items between the clients.
  • First task: pick one row of parity.md that is open on a client you can run, and close it.

Hands that succeed more often ​

The screen as a hand works on Android and on the desktop (the desktop operator is a port of UI-TARS-desktop's). It fails on grounding — the model names the wrong element — and on recovery after an unexpected dialog, and we have no fixed set of tasks to measure it against.

  • Module: nanomuse/computer/ (operator.py, coords.py, screen.py), nanomuse/phone/ (operator.py, trace.py), harness/desktop/src/operator.ts, Android io.github.nanomuse.hands.
  • Read: gui.md for the operator's contract, troubleshooting.md.
  • First task: record one failed run with nanomuse/phone/trace.py, write down the step where it went wrong, and open an issue with the trace. Ten of those become the evaluation set.

Self-hosting in one command ​

scripts/self-host.sh brings up the relay with TLS; the web runtime has its own docker-compose.yml. What is missing: one command for both, updates that keep the data, and a page that says how much it costs to run for a family.

  • Module: cloud/ (docker-compose.yml, docker-compose.local.yml, Dockerfile), scripts/self-host.sh, the root docker-compose.yml.
  • Read: self-hosting.md, cloud.md, deployment.md.
  • First task: run bash scripts/self-host.sh --local on a clean machine and report every place the instructions were wrong.

Internationalisation ​

The apps are in English and Chinese; the Android app carries fifteen more locales from upstream, and our strings in them (nm_strings.xml) have had far less attention than the English and Chinese. The READMEs are in ten languages.

  • Module: android/src/android/app/src/main/res/values-*/nm_strings.xml, android/src/ios/Localizable.xcstrings, harness/dsh-nanomuse/src/client/locales.ts, the relay's console under cloud/nanomuse_cloud/.
  • Read: the Every string in every language section of CONTRIBUTING.md.
  • First task: open the app in a language you speak, note every string that reads wrong, and fix the file for that locale.

Next ​

  • An open evaluation suite. The hands' failures above, turned into a fixed set of phone and computer tasks anyone can run, with the simulated phone from the showcase (showcase.md, demo/mobilegym/) as the harness. A number per release, not an impression.
  • A hands model of our own, on open data. The traces people choose to contribute (Data controls, privacy.md) are the training set; the evaluation suite is the yardstick. Small, open weights, good at Chinese apps.
  • Shareable skills. A skill is a folder today (nanomuse/skills/); it should be something you can hand to a friend, install from a link, and trust because its risk is declared.
  • More devices as hands. A browser extension so the agent can act in your signed-in browser; a watch for the shortest front door; the car and the home as places the agent can see and act. Each is a new client of the hub (hub.md), not a new agent.

Later — looking up ​

  • The physical world. The hub frames already carry look, act and ask; a robot arm or a camera is one more device. We do not know yet what a personal agent should be allowed to do with a body.
  • An agent that lasts years. Memory that grows for a decade without becoming noise; a face and a name that stay yours through model changes; an export you could move to another runtime.
  • Legible personal data. Everything the agent knows about you readable as plain files, understood by other programs too, so the agent is a view onto your data rather than the owner of it.

Where the code is ​

Two trees. android/ is a modified copy of OpenMinis 1.13 pulled in with git subtree; our Android code is in io.github.nanomuse.*, our iOS code in android/src/ios/NanoMuse/ (CONTRIBUTING.md says how to work there). nanomuse/, harness/, cloud/, web/ are ours end to end: the Python runtime that gives the desktop and the web their hands, the desktop app as a DeepSeek Harness plugin, the relay, the web console. architecture.md draws the whole thing; AGENTS.md is the one-screen version with the check commands.

Past releases ​

Every version is a GitHub release built from its tag, titled nanoMuse <version> · <Codename>; the notes for each are in releases/ and the line-by-line record is the CHANGELOG.

VersionCodenameIn one line
0.1.1 – 0.1.11Foundation … HatchOpenMinis as nanoMuse: the name and face, one home conversation, approvals with scope, memory files, the feed, the avatar studio, the dragon
0.1.12 Hands · 0.1.15 StageThe phone's screen as a hand, and the stage that shows it working
0.1.13 ReachThe phone drives your computer (replaced by the hub in 0.1.24)
0.1.17 – 0.1.18 Doorstep · OpennanoMuse Cloud: start without a key, sign-up open to everyone
0.1.19 EnsembleEvery device: the desktop app, the runtime on the hub, nanoMuse Web
0.1.20 – 0.1.25Presence … MirrorThe account first, a voice, invitations, phone-number sign-in, one look on every device
0.1.26 – 0.1.30Window … RoomsThe showcase; the desktop moves to DeepSeek Harness and takes Muse's shape and rooms
0.1.31 LocksThe audit's open points closed: no token in any URL, remote control by consent
0.1.32 – 0.1.35Union … AccordThe iPhone and the desktop catch up with the phone, screen for screen
0.1.36 – 0.1.38Thread · Weave · LoomOne conversation across the devices, the main one first; the desktop's hands ported from UI-TARS-desktop, with a helper app for the Mac's permissions; a docs site and self-hosting in one command
0.1.39KeysOne provider catalogue with what each key covers, on every client and the relay; a ChatGPT plan as a sign-in; each account sees its own conversations on a shared device; the hands' clicks land on Ubuntu, the Mac helper keeps its grants, the iPhone no longer crashes after onboarding; every language complete; the Terminal edition dropped
0.2.0BetaThe first beta, when the list under Now is short

GPL-3.0-or-later. nanoMuse is an independent community project, not affiliated with Meta.