nanoMuse 1.0.5 · Lookout
🐉 nanoMuse 1.0.5 “Lookout”: the day after Compass, a second look at the whole project together with the day's reports; the daily feed is written out of sight, the Android approval card fits the screen, the desktop's dead buttons work and a quit protects the work in progress, the Windows release can update itself, and the relay's console finds anything.
1.0.4 went out on 2026-10-13. The same day we read nanoMuse through once more, this time with the reports and pull requests that arrived while Compass was being built, and nine passes again went over the relay, the Python runtime, the web console, the desktop, the Android and iPhone apps, the hosted showcase, the documentation and the workflows (#444 to #455). What they found fills this version. Some of it you will see at once: the chat the daily feed is written in no longer sits in your chat list on any device, and a routine's turn opens with its result; a long command no longer pushes the Android approval card's buttons off the screen (#436, reported by @HBSTAR0501); the ChatGPT sign-in on a phone with a proxy has a way through (#441, reported by @Kooooooo-G); the iPhone's conversation scrolls under the header, Siri understands the app's phrases in nine languages, and an emoji face set on the desktop shows on the phone (#435, reported by @Yousanflics); eight desktop buttons that quietly did nothing do their job again, and quitting the desktop asks before it ends a reply, a hands run or a task another device is waiting on. Others you will not see and should not have to: a disabled account cannot be told apart from any other through the sign-in routes, the proxy file on the desktop is the owner's alone, a hub socket that died under the desktop is noticed within a minute, and one address is one endpoint on the runtime. Beside the check, @jiangkaiqi2005 built the quit and the Windows update feed (#442, #443), @cutey-none brought DeepSeek Harness to the Python runtime (#433), and @Mola-maker's two Android fixes are in (#429, #431). Nothing moves for a person upgrading: the Android package installs over 1.0.4 and keeps everything, the desktop keeps its settings, and a 1.0.4 client works against the relay (0.26.0) unchanged.
Highlights
- The daily feed is written quietly, and a routine speaks first. On Android, the iPhone and the desktop the conversation the feed is written in no longer appears in the drawer, the chat list or search, and Write today's feed. no longer stands anywhere as a message in your voice; on Android, posts written while the app was in the background are announced by one notification that opens the Feed. The prompt a routine sends is shown as one quiet line, Routine · 〈label〉 · 08:00, and the agent is told the turn is the routine's, so it opens with the result rather than thanking you for asking (#437).
- The Android approval card fits the screen, and the ChatGPT sign-in has a way through a proxy. A long command made the card taller than the screen, so Allow, Deny and the composer sat below the bottom edge and the chat looked frozen; the card now takes at most two thirds of the screen, a command longer than six lines is folded behind Show all, and the buttons stay in view (#436). The ChatGPT sign-in sends the browser back to
localhost:1455, which a proxy or VPN app on the phone can swallow; after ten seconds without the browser's call (at once when the phone's proxy would take the address) a note under Sign in explains it and offers a box to paste the address of the error page, and the code reaches the waiting sign-in without going through the proxy. The same box serves the Anthropic, xAI and OpenRouter sign-ins (#441, both in #449). The sign-in's tokens stay out of the log file, the identifier field's example is an e-mail address, and two of the relay's refusals read as sentences in 17 languages. - The iPhone, in detail. The conversation scrolls under the header and fades into its scrim, as it does under the composer, and on an iPad the agent's replies line up with the composer (#432). Siri understands Ask nanoMuse, New nanoMuse chat and the other shortcuts in all nine languages instead of English and Chinese alone; the page titles, the agent's name and the first-run pages follow Dynamic Type; Create routine on an idea opens the editor; Background & notifications says what the phone does; a hub failure (a computer offline, busy or on an older nanoMuse) is a sentence in your language; VoiceOver names the Library's and the usage pickers and the ••• menus (#451, #455). A face set to an emoji on the desktop or in the web console shows on the iPhone, after a drawn face and before the dragon, and the phone never pushes the dragon over an emoji chosen elsewhere (#435, #453).
- The desktop does what its buttons say. Default face, the clip preview's Cancel, Media's Check which models answer, the ChatGPT Open the sign-in page, Sign out and Cancel, and Download and Reset under Memory called the host without a body, which the window sent as a GET to routes that take POST only, so each click ended in a quiet 404; they post now, and a test checks every body-less call against the host's routes (#438). Quit (the menu, Ctrl+Q, the tray, or the last window without a tray) first asks what is still on: a reply being written, the hands on the screen, a task another device asked for, an approval waiting on you; Keep running is the default, and a confirmed quit waits for the work to end (#442, by @jiangkaiqi2005). A hub socket that died under the app is dropped when nothing arrived between two pings, about 50 seconds, instead of after the many minutes the operating system takes; an endpoint or connector address with a password in it is refused, a redirect is followed with the key only to the endpoint's own origin;
desktop.jsonis written at mode 0600; the host's refusals of a form are said in your language (#452, #455). - The Windows release carries the files an in-app update needs. Beside the installer, the release has
latest.yml, which names the installer and its SHA-512, and the installer's.exe.blockmap, covered bySHA256SUMS-desktop.txt; before anything is attached, CI hands the set to electron-updater itself, which must find the version, download the installer from a test feed and verify it (#443, by @jiangkaiqi2005, for #341). The download mirror serves the feed atnanomuse.cn/dl/win/, pointing it at the newest release whose three files are all present and match, and leaving it on the previous release while a Windows build is still running (#454). The Intel Mac installer builds again, since the workflow installs pnpm from npm (#444). - DeepSeek Harness on the runtime, and one address per endpoint. A computer running
nanomuse servelists the chats ofdsh weband DeepSeek's desktop app under~/.dshbeside Cursor, Codex and Claude Code, shows a transcript and sends into one withdsh --profile headless --json; the Muse'scoding_agentstool takesdsh, andzstandardis a new dependency (#433, by @cutey-none). Adding a custom endpoint at an address the list already has is refused with 409 naming the endpoint that has it, the list is changed one request at a time so a rename is no longer written over by a slower refresh,PUT /api/connections/guiand/handscheck their bodies, a DingTalk stream that fails to start says so, a failed update check is tried again after an hour, the web push files are owner-only from the first byte, fetched pages are parsed off the event loop, and two more relay refusals read as sentences (#450, #455). - The relay's console finds anything, and a disabled account cannot be probed. On People the search reaches the number or e-mail, the account id, both addresses, device names, the client and its version, the region, the inviter and the invite code, several words at once, with Joined, Came and Version filters beside it;
/starts a search on any page; the account drawer's statement and timeline filter by kind and text on the relay's side; Activity reads on past its first page (#440). A code asked for a disabled account is answered with the same204as for anyone, and/v1/auth/loginsays403 account_disabledonly to the right password; a wrong one is answered like any wrong password (#447, #455). - The web console's small text reads, and its fields have names. The faint red, amber and grey of overdue, blocked, failed and the device section labels meet the contrast small text needs in both themes; the reminder, routine, trigger, goal, memory, coding, password and side-chat fields are announced by a screen reader with what they are for; a middle-click in a hands step is no longer called a right-click; the permission log shows an approval's scope in words; the hashed script and style files are cached for a year (#448). Outside mainland China the sign-in field's example is an e-mail address alone, and a lapsed bot sign-in says so in your language (#455).
- Android, the smaller fixes. Styled shell output stays whole, since terminal colour and title codes are removed before carriage returns are folded (#429, by @Mola-maker); the font-size labels under Appearance speak the app's language (#431, by @Mola-maker); the goal-shaping prompt and the missing-image-model prompt no longer hold the agent up against another app's assistant.
- The showcase and the project. A refusal of any shape from nanoMuse Cloud or the image provider reaches the browser as the refusal it was rather than a 500, and the mirror never lists half a package (#446); the docs describe nanoMuse in its own words, screen by screen, without another product as the model (#445); the READMEs' News notes the thousandth star (#439).
- TestFlight. Build 22 (1.0.3) and build 26 (1.0.4) passed Apple's beta review on 2026-10-13, so the public link installs build 26 today; 1.0.5 goes up as build 28 and is submitted to the same review. A build reaches the link once its review has passed, the internal testers before that.
Upgrade Notes
- Android installs over 1.0.4 and keeps your data.
nanoMuse-1.0.5-arm64.apk(Android 8.0+, arm64; versionCode 48) is signed with the same key as every version before it. Verify withsha256sum -c nanoMuse-1.0.5-arm64.apk.sha256. The chat the daily feed was written in disappears from your chat list; its posts stay in the Feed. - iPhone and iPad come through TestFlight. The public link installs build 26 (1.0.4), which passed Apple's beta review with build 22 on 2026-10-13; build 28 (1.0.5) is submitted when it is uploaded, and reaches the link once its review has passed, the internal testers before that.
- The desktop installers are built by CI from the tag
v1.0.5. 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. This is the first release whose Windows assets includelatest.ymland the.exe.blockmap, the files electron-updater reads; the desktop's update metadata is built forhttps://nanomuse.cn/dl/win/, which the mirror points at this release once the three files are there, so a 1.0.5 desktop on Windows can take the next version from inside the app. Your settings stay where they were; the proxy filedesktop.jsonis set to mode 0600 on its next write. - The relay is 0.26.0; a 1.0.4 client works against it unchanged. For operators: the console searches and filters further and reads Activity past its first page (
?before=on/v1/admin/events,?kind=&q=on an account's/ledgerand/events);POST /v1/auth/codeanswers204for a disabled account too, and/v1/auth/loginanswers403 account_disabledonly to the right password; atokensor annthat is not a number is a400; the hub's log lines carry the first twelve characters of a device id and no device name. docs/self-hosting.md (github.com) and cloud/README.md (github.com) have the details. - The runtime has a new dependency and refuses one thing it used to accept.
zstandardreads DeepSeek Harness's chat store;pip install -e .or the Docker image brings it. Adding a custom endpoint at an address another endpoint already has is a 409 now; nothing inconfig.tomlchanges, andGET /api/cloud/eventstakeslimit1 to 200. - 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.5-arm64.apk |
| iPhone, iPad | TestFlight, a beta that passed Apple's review; the link installs build 26 (1.0.4) today, build 28 (1.0.5) once its review has passed |
| Windows 10+ | nanoMuse-Desktop-1.0.5-win-x64.exe (the desktop app, on DeepSeek Harness; not signed) |
| macOS 12+ | nanoMuse-Desktop-1.0.5-mac-arm64.dmg / -mac-x64.dmg (or the .zip: unzip, drag to Applications; not notarized) |
| Linux x64 | nanoMuse-Desktop-1.0.5-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.5.tgz, dsh plugin --profile desktop add … (how) |
| Docker | ghcr.io/nano-muse/nanomuse:1.0.5 (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.5/ 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 any of the four jobs, and 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 @jiangkaiqi2005 for the desktop's quit and the Windows update feed (#442, #443), to @cutey-none for DeepSeek Harness on the runtime (#433), to @Mola-maker for the shell output and the font-size labels (#429, #431), and to @HBSTAR0501, @Kooooooo-G and @Yousanflics for the reports that became #436, #441 and #435. 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.5 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
- ci(desktop): install pnpm from npm so the Intel Mac installer builds by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/426
- fix(android): strip ANSI before folding carriage returns by @Mola-maker in https://github.com/nano-muse/nanoMuse/pull/429
- fix(ios): the conversation scrolls under the Muse header, and the agent's rows meet the composer on an iPad by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/432
- fix(android): localize appearance font scale labels by @Mola-maker in https://github.com/nano-muse/nanoMuse/pull/431
- feat(runtime): DeepSeek Harness as a fourth coding agent by @cutey-none in https://github.com/nano-muse/nanoMuse/pull/433
- feat(apps): write the feed quietly and let a routine speak first by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/437
- fix(desktop): post the body-less calls the host serves to POST only by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/438
- docs(readme): the News opens with the thousandth star by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/439
- feat(relay): the operator's console searches and filters further by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/440
- feat(release): the Windows update feed's assets, built whole and checked by the updater by @jiangkaiqi2005 in https://github.com/nano-muse/nanoMuse/pull/443
- feat(desktop): a real exit protects the work it would end by @jiangkaiqi2005 in https://github.com/nano-muse/nanoMuse/pull/442
- fix(showcase): refusals of any shape, a mirror that hides half packages, mypy for the gateway by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/446
- feat(showcase): the download mirror serves the Windows update feed at dl/win by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/454
- ci: pnpm from npm in the harness workflow, time limits, the iPhone Ideas copy under test by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/444
- fix(relay): refuse a disabled account's code request quietly, and the fourth audit pass by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/447
- fix(web): readable small text, named form controls, cached assets by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/448
- fix(android): the approval card fits the screen and the sign-in has a way through a proxy by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/449
- fix(desktop): a silent hub socket, user:pass@ addresses, desktop.json mode, and a hook check that vouched for itself by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/452
- fix(ios): Siri in nine languages, titles that scale, the routine editor from an idea, honest background copy, hub failures in your language by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/451
- docs: describe nanoMuse in its own words across the design and desktop pages by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/445
- fix(runtime): endpoint list changed one request at a time, one address per endpoint, and smaller audit-4 fixes by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/450
- feat(ios): an emoji face set on another device shows on the iPhone by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/453
- fix: audit-4 follow-ups across the relay, runtime, web, desktop and the phones by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/455
- build(release): 1.0.5 Lookout by @lgy0404 in https://github.com/nano-muse/nanoMuse/pull/456
New Contributors
- No first-time contributors in this release; yours could be the next one: good first issues.
Contributors
@cutey-none · @jiangkaiqi2005 · @lgy0404 · @Mola-maker
Full Changelog: https://github.com/nano-muse/nanoMuse/compare/v1.0.4...v1.0.5