nanoMuse 1.0.6 · Beacon
🐉 nanoMuse 1.0.6 “Beacon”: nine days after Lookout, a third look at the whole project with the forty-eight pull requests that arrived in between; nanoMuse Cloud serves one multimodal model and leaves pictures and clips to a provider of your own, the relay's sign-in gives nothing away, the runtime finishes what a restart interrupted, the desktop asks before a restart, and the phone reads the Feed posts you liked.
1.0.5 went out on 2026-10-14. Since then forty-eight pull requests were merged, more than in any week before, and this version reads the project through once more with them in: the relay, the Python runtime, the web console, the desktop, the Android and iPhone apps, the docs and the workflows, area by area. The largest change is to the account: nanoMuse Cloud now serves one model, Qwen/Qwen3.6-27B-FP8, which reads text and pictures and does both the chat and the operating of a screen, and it no longer pays for image or video generation (#536, #539, #545, #546). A drawn face, a picture asked for in a chat and the face's clips come from a provider of your own on every client, the pickers list only sources that can, and an empty row names who could; the default dragon and the four new preset looks are pictures already made, so a look is yours without a key. The relay is 0.27.0: a wrong password and an unknown account get the same answer, every limit is decided in one transaction, a Hub credential speaks for one device, and an invite bonus waits for real use (#465). The rest is the kind of thing a check finds: a reminder or a routine the runtime did not get to finish runs at the next start; the browser tool refuses local and private addresses as web_fetch always has; a streamed reply is retried only before its first word; restarting the desktop's Host asks first, as quitting does; a face drawn with your own key while signed out is worn rather than refused (#521); a remembered answer to an approval relayed from another device covers that step, not every step that starts the same way; hidden steps on the iPhone stay hidden after a reset (#548). Beside the check, @Mola-maker made forgetting a memory visible and undoable and gave the web console's settings a search (#533, #541) and fixed nine things on Android and the desktop; @jiangkaiqi2005 taught the Windows desktop to download its updates in the background and install them on quit (#458, #459, #460); @cutey-none's @ menu lists your other devices on the iPhone and a task sent to the desktop streams its text back (#506, #513, #515); @Battleplus added a fourth trigger kind and the data download (#487, #489); @Yicheng-1218 let each avatar mood carry a clip of your own (#427, #481); @isHeSatoshi put a search in the desktop's settings (#523); @hobostay kept a trimmed catalogue trimmed (#527, #530); @henrikdukefoss added Standard Compute (#482); @fenghaofenghao-ctrl kept the Android Codex sign-in aligned with its live models (#544); @Longfellow1 began the goals' evidence evaluation (#518). Nothing moves for a person upgrading, except that pictures and clips need a key of your own from now on: the Android package installs over 1.0.5 and keeps everything, the desktop keeps its settings, and a 1.0.5 client works against the relay (0.27.0).
Highlights
- nanoMuse Cloud is one model, for chat and for the screen. The account serves
Qwen/Qwen3.6-27B-FP8, a multimodal model that reads pictures, so the chat and the hands run on the same deployment; the phone, the iPhone and the desktop pick the model the relay recommends for each of the two and still understand an older relay's menu. Bursts of chat no longer overwhelm the deployment: the relay admits a bounded number of chat requests at once, queues the rest and retries an upstream failure only before any output starts. A Qwen behind vLLM stays fast on ordinary turns when the app did not ask for reasoning (#536, #545, #546). - Pictures and clips come from a provider of your own. nanoMuse Cloud stopped funding image and video generation: the Making pictures and Making clips rows on Android, the iPhone, the desktop and the web list only own providers that can, an empty row says who could and offers Add a provider, and asking the account for a picture is a sentence (
410 hosted_media_retired) before anything is charged. Four original preset looks (Moss Courier, Tide Tinker, Dusk Moth, Copper Acorn) are pictures already made, in every language, next to the dragon, so a look needs no key; drawing your own does. Wan 2.7 is in the clip pickers of all three apps and speaks its own protocol (#508). On the desktop a face drawn with your own key while signed out is worn on that computer at once instead of being refused at the last step after nine paid pictures; a sign-in only shares it with your other devices (#521, #539). - The relay's sign-in gives nothing away, and a credential is one device. A wrong password, an unknown account and an account without a password get the same answer; the code's window, the number of tries, a code being used once and the number of accounts a mail domain may open a day are each decided inside one database transaction, so two requests at once cannot slip past a limit. Gmail's dot and plus aliases are one account, throwaway mail domains cannot open one, and an invite bonus is paid once the invitee's own use reaches a small threshold rather than when a device says hello (#465). Each account key owns one Hub identity, the device it was issued to; another device presenting it is refused with
bad_device, and a fresh sign-in on the same installation takes the identity over. - The runtime finishes what it started. A reminder, routine, goal pass, check-in or trigger that the runtime did not get to finish is written to a small outbox before it joins the chat's queue and runs at the next start. A streamed reply is retried only before its first word, so a half-written answer is never repeated; an MCP server whose tool names collide is skipped rather than half-loaded. The browser's
navigaterefuseslocalhost, private network addresses and a public page that redirects into them, asweb_fetchalways has. A long tool turn that fills the context window no longer sends the model a tool result whose call was cut off, by @takiAA (#550). A device of the account coming online is a fourth trigger kind, by @Battleplus (#487); the web console can download your agent data as one zip, by @Battleplus (#489); forgetting a memory is named in the chat and can be undone, by @Mola-maker (#533); Serply searches Google results with a key, Standard Compute is in the own-key catalogue, by @henrikdukefoss (#482), and the ChatGPT sign-in knows the GPT-6 series. - An approval relayed to another device is remembered for that step alone. When the computer asks the phone whether a command may run and you answer always, the phone used to remember the answer by the first sixty characters of the card's text, so any later command that began the same way was allowed. The card now carries the Sentinel's own grant key, the tool and its whole command or path, and always and for this chat are kept on that; an older sender is remembered as before.
- The desktop, in detail. Restarting the Host (Restart now under the proxy row, and the restart macOS asks for after a Screen Recording grant) lists a reply, the hands, a task from another device or an approval still running and lets you keep them, as quitting does; a Host that no longer answers restarts without the question. The data export writes its zip one file at a time, leaves a link or a file over 64 MB out instead of stopping, and removes a proxy password.
desktop.jsonis replaced atomically with the previous copy kept beside it. Windows downloads a ready update in the background on an unmetered network, offers it in the corner menu and installs it on a real quit, by @jiangkaiqi2005 (#458, #459, #460); the settings dialog has a search, by @isHeSatoshi (#523); a trimmed provider catalogue stays trimmed in the pickers, by @hobostay (#527); each avatar mood can carry a clip of your own, by @Yicheng-1218 (#427); a task from the phone streams its text back while the model writes it, by @cutey-none (#515); the chat's model control is back in the composer, going back no longer returns to the starting screen (#492, @jiangkaiqi2005), synced turns from another computer keep their order, and the bundled runtime keeps its links, its start-up check no longer hangs and the Mac packaging stops on a failed check instead of shipping past it (#467, #469, #471, @Mola-maker). - Android and the iPhone. The Android agent can read which Feed posts you liked, as files in its sandbox under
/var/minis/feed/, read-only (#547); the Codex sign-in stays aligned with its live models, by @fenghaofenghao-ctrl (#544); voice input releases the recorder when capture cannot start, a quiet provider voice session returns to idle, a replaced set of avatar candidates is never changed by an old result, and an emulator build leaves the arm64 sandbox out, all by @Mola-maker (#358, #359, #466, #468, #472, #473); memory and date changes no longer invalidate the prompt prefix the provider caches (#503). On the iPhone, turning off execution steps survives resetting and reopening the main conversation (#548); the@menu offers your other devices and a task sent with@〈device〉shows its progress, by @cutey-none (#506, #513); a picked avatar clip keeps its preview open, by @Yicheng-1218 (#481); the drawer, the composer and the step bar line up, by @cutey-none (#462). - The project. The Community Contributors avatars in the ten READMEs are current;
scripts/release-apk.shstops rather than publish a release without its pull-request list, and the desktop workflow refuses to attach installers of another version to a release; the bug report form is back on the new-issue chooser, by @Battleplus (#496); the docs name the macOS helper as the entry to switch on, count four trigger kinds and say that TestFlight is run by hand. - TestFlight. Build 28 (1.0.5) was submitted to Apple's beta review on 2026-10-14; 1.0.6 goes up as build 29 and is submitted to the same review. A build reaches the public link once its review has passed, the internal testers before that.
Upgrade Notes
- Android installs over 1.0.5 and keeps your data.
nanoMuse-1.0.6-arm64.apk(Android 8.0+, arm64; versionCode 49) is signed with the same key as every version before it. Verify withsha256sum -c nanoMuse-1.0.6-arm64.apk.sha256. If Making pictures or Making clips pointed at nanoMuse Cloud, the row is empty now and names who could; add a provider of your own under Settings → Models. A face you already drew stays. - iPhone and iPad come through TestFlight. Build 29 (1.0.6) is submitted when it is uploaded and reaches the public link once its review has passed, the internal testers before that; until then the link installs the newest build that passed.
- The desktop installers are built by CI from the tag
v1.0.6. The Mac packages are not notarized: the first time, open the app from System Settings → Privacy & Security → Open Anyway (or right-click → Open). The Windows package is not signed: click More info and Run anyway once. On Linux prefer the.deb; the AppImage needs FUSE (--appimage-extract-and-runwithout). They arrive a little after the APK, andSHA256SUMS-desktop.txtlists every checksum. A 1.0.5 desktop on Windows can take this version from inside the app; from this version on, an update downloads in the background on an unmetered network, the corner menu offers it, and a real quit installs it. Your settings stay where they were;desktop.jsongains a.bakcopy beside it on its next write. - The relay is 0.27.0; a 1.0.5 client works against it unchanged, except that asking the account for a picture or a clip is refused with
410 hosted_media_retiredand a sentence. For operators:DASHSCOPE_KEYis a second, optional key for a self-hosted relay that keeps its media proxy on (CLOUD_MEDIA_ENABLED=1);CLOUD_MODEL_ALIASESmaps model ids saved by older clients to the current menu;CHAT_DEFAULTSunderstandschat_template_kwargs.enable_thinking;SIGNUP_PER_DOMAIN_DAYdefaults to 5 for domains that are not well known,SIGNUP_DOMAIN_BLOCKandSIGNUP_DOMAIN_ALLOWadjust the throwaway-domain list,INVITE_SETTLE_MIN_SPENT_UY(200) is the use an invitee must reach before the bonus is paid;POST /v1/auth/verifyand/logintake an optionaldevice_idanddevice_kind, and the hub refuses a key presented by another device withbad_device;+tagaddresses are separate accounts at providers other than Gmail from now on, and an account that 0.26 merged under the plain address is still reached by both. docs/self-hosting.md (github.com), docs/hub.md (github.com) and cloud/README.md (github.com) have the details. - The runtime writes one more file and refuses one more thing.
scheduled-deliveries.dbbeside the other state files is the outbox that lets interrupted scheduled work run at the next start. The browser tool'snavigaterefuseslocalhostand private network addresses, asweb_fetchdoes; a page on your own machine is still reachable through a tunnel with a public name. Nothing inconfig.tomlchanges. - Where to get it.
| Browser | demo.nanomuse.dev, a nanoMuse on a simulated phone, after a sign-in; a demo, the apps below are the real thing |
| Android 8.0+, arm64 | nanoMuse-1.0.6-arm64.apk |
| iPhone, iPad | TestFlight, a beta that goes through Apple's review; build 29 (1.0.6) once its review has passed |
| Windows 10+ | nanoMuse-Desktop-1.0.6-win-x64.exe (the desktop app, on DeepSeek Harness; not signed) |
| macOS 12+ | nanoMuse-Desktop-1.0.6-mac-arm64.dmg / -mac-x64.dmg (or the .zip: unzip, drag to Applications; not notarized) |
| Linux x64 | nanoMuse-Desktop-1.0.6-linux-x64.deb (preferred) / .AppImage (needs FUSE; --appimage-extract-and-run without) / .tar.gz (unpack anywhere, run ./nanomuse-desktop) |
| DeepSeek Harness Desktop you already run | dsh-nanomuse-1.0.6.tgz, dsh plugin --profile desktop add … (how) |
| Docker | ghcr.io/nano-muse/nanomuse:1.0.6 (also :latest), the runtime with the web console on port 8787 |
| Your own relay | bash scripts/self-host.sh, docs/self-hosting.md (github.com) |
In our measurements GitHub's own downloads are quick from China as well; if they fail where you are, the same files are on nanomuse.cn/dl/v1.0.6/ within fifteen minutes.
Community
nanoMuse is open source, free and non-profit. Sign in with a phone number or an e-mail and you get a starting allowance; the developer pays for it. The account page shows what is left and how to add more. When it is gone, use your own key or a plan you already pay for (how); the key you add can take over the chat and the screen, and pictures and clips are its from the start; the account can be switched off as a model source while you keep it for sync and your devices. With an account, the text of your main conversation is kept on nanoMuse Cloud so that your devices show the same chat, side chats only if you say so, and one switch in Data controls turns it off and deletes it; nothing is sold (privacy policy); delete the account whenever you want. The same relay runs on a server of yours: docs/self-hosting.md (github.com).
Thanks to @Mola-maker for the undoable forget, the Feed's errors and the settings search on the web, and nine fixes on Android and the desktop (#358, #359, #466 to #473, #533, #541), to @jiangkaiqi2005 for the Windows updates and the back button (#458, #459, #460, #492), to @cutey-none for the @ menu, the remote task's progress and the streamed text (#462, #506, #513, #515), to @Battleplus for the device trigger, the data download and the bug form (#487, #489, #496), to @Yicheng-1218 for the per-mood clips (#427, #481), to @isHeSatoshi for the settings search on the desktop (#523), to @hobostay for the catalogue and the Codex ids (#527, #530), to @henrikdukefoss for Standard Compute (#482), to @fenghaofenghao-ctrl for the Codex sign-in on Android (#544), to @Longfellow1 for the goals' evidence core (#518), to @takiAA for the context window that keeps a tool exchange whole (#550), and to everyone who reported #508, #521, #547, #548 and #549. The roadmap says where help is wanted, and docs/parity.md (github.com) says what each client has. Open an issue · send a pull request · Discussions · Discord · star the repo; if it is useful to you, a star helps others find it.
Based on OpenMinis 1.13 (GPL-3.0), modified since 2026-09-24. The complete corresponding source of this build is tag v1.0.6 plus the android/deps/proot submodule (nano-muse/proot); the desktop installers and the Docker image are built by CI from the same tag. The whole repository is GPL-3.0-or-later. nanoMuse Desktop carries DeepSeek Harness unmodified, with its licence files inside; harness in the name is the word, not DeepSeek's. The chat apps follow nanobot's design (MIT); the desktop's operator is ported from UI-TARS-desktop (Apache-2.0; THIRD_PARTY_NOTICES.md). nanoMuse is not affiliated with Meta; Muse is a trademark of Meta Platforms, Inc. The desktop follows what Muse's app looks like and does, written down from using it; none of Meta's assets, code or content is in it.
What's Changed
- fix(mobile): align Android and iOS chat bubbles, composer halo, tab icons and stop button by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/463
- fix(relay): canonicalise gmail aliases, block throwaway domains and tighten invite settlement by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/465
- fix(ios): UI layout fixes in the drawer, the composer and the step bar by @cutey-none in https://github.com/nano-muse/nanoMuse/pull/462
- fix(android): cancel HTTP response body reads by @Mola-maker in https://github.com/nano-muse/nanoMuse/pull/358
- feat(desktop): download a Windows update from the corner menu and restart into it by @jiangkaiqi2005 in https://github.com/nano-muse/nanoMuse/pull/458
- feat(desktop): download Windows updates in the background on unmetered networks by @jiangkaiqi2005 in https://github.com/nano-muse/nanoMuse/pull/459
- feat(desktop): a real quit installs a ready Windows update and stays closed by @jiangkaiqi2005 in https://github.com/nano-muse/nanoMuse/pull/460
- fix(web): show Feed request errors with independent retries by @Mola-maker in https://github.com/nano-muse/nanoMuse/pull/470
- fix(desktop): preserve staged runtime symbolic links by @Mola-maker in https://github.com/nano-muse/nanoMuse/pull/467
- fix(desktop): bound bundled runtime startup checks by @Mola-maker in https://github.com/nano-muse/nanoMuse/pull/469
- fix(desktop): enforce macOS bundle selection and verification by @Mola-maker in https://github.com/nano-muse/nanoMuse/pull/471
- fix(android): serialize avatar candidate publication by @Mola-maker in https://github.com/nano-muse/nanoMuse/pull/359
- fix(android): exclude arm64 sandbox assets from emulator builds by @Mola-maker in https://github.com/nano-muse/nanoMuse/pull/466
- fix(android): release VAD recorders when capture cannot start by @Mola-maker in https://github.com/nano-muse/nanoMuse/pull/468
- fix(android): finish quiet provider speech sessions by @Mola-maker in https://github.com/nano-muse/nanoMuse/pull/472
- fix(android): keep replacement speech pipes after stale writes fail by @Mola-maker in https://github.com/nano-muse/nanoMuse/pull/473
- feat(avatar): allow custom clips for each mood by @Yicheng-1218 in https://github.com/nano-muse/nanoMuse/pull/427
- fix(desktop): keep synced turns ordered and pull on in-flight frames by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/474
- feat(memory): surface newly stored facts on first turn of a new chat by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/478
- feat: support GPT-6 series and live Codex model refresh on ChatGPT OAuth by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/479
- fix(ios): keep custom clip preview open after PhotosPicker dismissal by @Yicheng-1218 in https://github.com/nano-muse/nanoMuse/pull/481
- feat(runtime): Standard Compute in the provider catalogue by @henrikdukefoss in https://github.com/nano-muse/nanoMuse/pull/482
- feat(runtime): Serply as a keyed web search provider for Google results by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/485
- fix(desktop): going back no longer returns to the starting screen by @jiangkaiqi2005 in https://github.com/nano-muse/nanoMuse/pull/492
- fix(project): keep the bug report form on the new-issue chooser (#495) by @Battleplus in https://github.com/nano-muse/nanoMuse/pull/496
- fix(desktop): keep the composer clear of the window edge by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/498
- feat(web): Download your agent data from the runtime, one zip (#488) by @Battleplus in https://github.com/nano-muse/nanoMuse/pull/489
- feat(triggers): a fourth kind, a device of the account coming online by @Battleplus in https://github.com/nano-muse/nanoMuse/pull/487
- fix(providers): dedupe Responses tool call ids by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/504
- perf(mobile): keep prompt cache prefix stable by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/503
- fix(ios): the @ menu lists the account's online devices by @cutey-none in https://github.com/nano-muse/nanoMuse/pull/506
- fix(desktop): keep mapped main sync replies by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/507
- feat(desktop): stream a task's text to the phone while the model writes it by @cutey-none in https://github.com/nano-muse/nanoMuse/pull/515
- fix(ios): an @device task shows its steps and text while the device works by @cutey-none in https://github.com/nano-muse/nanoMuse/pull/513
- feat(goals): add evidence evaluation core by @Longfellow1 in https://github.com/nano-muse/nanoMuse/pull/518
- feat(desktop): search in the settings dialog by @isHeSatoshi in https://github.com/nano-muse/nanoMuse/pull/523
- fix(desktop): respect trimmed provider model catalogs by @hobostay in https://github.com/nano-muse/nanoMuse/pull/527
- fix(runtime): dedupe Codex Responses tool call ids by @hobostay in https://github.com/nano-muse/nanoMuse/pull/530
- fix(desktop): start Windows ACL shell from Electron by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/535
- feat(cloud): split chat and media providers by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/536
- fix(cloud): keep health checks off the full ledger by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/538
- feat(cloud): retire hosted media and add static avatar presets by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/539
- fix(cloud): smooth bursts to the chat provider by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/545
- fix(cloud): hide retired media from every model list by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/546
- feat(web): a search in the settings, by a setting's own words by @Mola-maker in https://github.com/nano-muse/nanoMuse/pull/541
- feat(runtime): a forget is logged, named in the chat and undoable by @Mola-maker in https://github.com/nano-muse/nanoMuse/pull/533
- Fix/android codex oauth client version by @fenghaofenghao-ctrl in https://github.com/nano-muse/nanoMuse/pull/544
- fix(runtime): preserve tool exchanges in long context windows by @takiAA in https://github.com/nano-muse/nanoMuse/pull/550
- build(release): 1.0.6 Beacon by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/552
New Contributors
- @Battleplus made their first contribution in https://github.com/nano-muse/nanoMuse/pull/487
- @fenghaofenghao-ctrl made their first contribution in https://github.com/nano-muse/nanoMuse/pull/544
- @henrikdukefoss made their first contribution in https://github.com/nano-muse/nanoMuse/pull/482
- @isHeSatoshi made their first contribution in https://github.com/nano-muse/nanoMuse/pull/523
- @Longfellow1 made their first contribution in https://github.com/nano-muse/nanoMuse/pull/518
- @Mola-maker made their first contribution in https://github.com/nano-muse/nanoMuse/pull/358
- @takiAA made their first contribution in https://github.com/nano-muse/nanoMuse/pull/550
- @Yicheng-1218 made their first contribution in https://github.com/nano-muse/nanoMuse/pull/427
Contributors
@Battleplus · @cutey-none · @fenghaofenghao-ctrl · @henrikdukefoss · @hobostay · @isHeSatoshi · @jiangkaiqi2005 · @lgy0404 · @Longfellow1 · @Mola-maker · @takiAA · @Yicheng-1218
Full Changelog: https://github.com/nano-muse/nanoMuse/compare/v1.0.5...v1.0.6