Skip to content

Releases: nano-muse/nanoMuse

nanoMuse 0.1.41 · Choice

Choose a tag to compare

@lgy0404 lgy0404 released this 07 Oct 13:48
3507091

nanoMuse 0.1.41 · Choice

🐉 nanoMuse 0.1.41 “Choice”: a person with a key of their own now chooses which model does each of four jobs, on every client, and nothing falls back to nanoMuse Cloud on its own.

People who added their own API key told us the same story: they could not find where to pick the model for the chat, for the hands, for the pictures or for the clips, so everything kept going through nanoMuse Cloud, and the free allowance was gone before they had tested their key. The entry points were there, but scattered and hard to find, and saving a key changed nothing by itself.

This version puts the four choices on one page, Settings › Models, on Android, the iPhone and the desktop, and the same four slots on the web console's Connections page. After a key is saved a card asks what it should handle; a row nobody set follows one order under an Automatic entry; and when a model of your own fails, the card offers Use nanoMuse Cloud this time for that one turn instead of switching behind your back. Around it: the desktop draws pictures through your own key and picks up a new hands model without a restart, the runtime gained connection routes for pictures and clips, the README opens with the film, the paper is on arXiv, and the docs site has a 简体中文 edition.

Highlights

  • Settings › Models: four rows on every client. Chat (the model that talks with you), Operating the screen (looks at the screen and acts for you; needs a model that can see images), Making pictures (portraits of your Muse and the pictures you ask for) and Making clips (short clips of your Muse). Each row shows provider · model and opens a picker: the nanoMuse Cloud group first while signed in, its recommended model marked, then one group per provider of your own holding only the models that fit; a provider without the capability does not appear in that row, and a row nothing covers says who could and offers Add a provider. A chat pick is the default for new chats. On Android the card at the top of Settings opens the page and Settings → Hands and the old Image & video models page use the same choices; on the iPhone it is the first card of Settings, with the screen row disabled (Not on iPhone: your computer uses its own setting); on the desktop it sits right after General and the two pickers left the nanoMuse Cloud page; on the web console Connections has the Chat model card, the Hands model select and new Making pictures and Making clips rows (docs/own-key.md).
  • After a key is saved, Use it for. One toggle per thing the provider can handle (chat, the screen, pictures, clips), all on, each naming the model it would get; Use it switches those rows to the provider on the catalogue's default model for each job, Not now changes nothing, and saving alone no longer switches anything. Signed in, the card says nanoMuse Cloud keeps the rest.
  • Automatic, with one order. The screen, pictures and clips rows open with an Automatic entry that says what it gives right now (Currently nanoMuse Cloud · qwen3.8-27b, say). When you have not chosen, a row follows the chat model's provider when it is one of yours and can do the job, else nanoMuse Cloud while signed in, else the first provider of yours that can. A choice you made always wins, and nanoMuse Cloud never steps in front of a provider you chose; picking Automatic drops a choice and lets the row follow the order again. Each device keeps its own choice, because keys never leave the device where they were entered.
  • No silent fallback. When a model of your own fails under a turn, the error card offers Use nanoMuse Cloud this time while signed in: that one message is sent again through the account, the chat goes back to its model when the turn ends, and the Models page stays as it was. The desktop shows the same button after a failed studio round and a failed set of clips. Nothing switches on its own, so a misconfigured key shows itself and the allowance is not spent without you knowing.
  • Desktop: pictures through your own key, and the hands without a restart. Pictures through a key of yours go straight to that provider (Model Studio's native image API, OpenRouter's image API, the OpenAI shape for OpenAI, Zhipu, SiliconFlow, Volcengine and xAI) and nothing is billed to the account; the avatar studio says Drawn with provider · model in place of the cost line, and the Media page's image row became a picker. The plugin now mounts the hands' MCP client itself: a change under Operating the screen restarts nanomuse mcp with the new model at the hands' next step, no cold restart, and a local server without a key is passed to the hands too (docs/desktop.md).
  • Runtime and web: every slot through the app layer. PUT /api/connections/gui takes a catalogue id (bailian, openrouter, ...) as PUT /api/connections/llm does; the new PUT /api/connections/image and /video (with GET) write the [image] and [video] slots and answer what each resolves to, a provider without the capability refused with the one sentence. [video] api_key now goes to the video host. The web console's Making pictures and Making clips rows are these routes, with Automatic first and a Currently provider · model line under each control; the Pictures and clips field under the chat model is gone (docs/configuration.md, docs/web.md).
  • The film, the paper, the News. The README and its nine translations open with the 74 s film in place of the four screenshots; nanomuse.cn and the docs home play it too. The paper is on arXiv (2610.08699, nanoMuse: An Open-Source Personal Agent for Every Device You Own): the READMEs carry the badge, a News list of milestones and a Citation section with the BibTeX, CITATION.cff names the paper, and the docs site's home pages have a Paper button. The docs site has a 简体中文 edition under /zh/, looks like the homepage, and nanomuse.cn has a 404 page of its own; the showcase has an embed mode for the frame on the homepage.
  • The relay's console, and the clients. A sign-in for the app store's reviewer (REVIEW_ADDRESSES, REVIEW_CODE, both empty by default); the web console says why the relay refused, in Chinese and English; the star card's sentence can be set from the console (star.text, star.text_zh) and every client shows it; X-Forwarded-For is read only behind a proxy (TRUSTED_PROXIES); cloud/.env.example lists every setting. The desktop has a Coding agents page, a proxy for the model providers under Settings → nanoMuse Cloud → Network with Restart now, a Permissions page that lists every standing grant by risk tier, and Report a bug fills in the issue form's fields. The web console's first conversation happens in the chat, with a Proxy (optional) field on the own-key form; the runtime owns the first conversation and PUT /api/connections/llm takes proxy. On Android the lights while the hands work breathe instead of running; on the iPhone the sign-in sheet shows the app's mark and says which numbers get a code, the Devices list shows when an offline device was last seen, and a fresh install no longer flashes the home screen (CHANGELOG.md).

Upgrade Notes

  • Android installs over 0.1.40 and keeps your data. nanoMuse-0.1.41-arm64.apk (Android 8.0+, arm64; versionCode 42) is signed with the same key as every version before it. Verify with sha256sum -c nanoMuse-0.1.41-arm64.apk.sha256.

  • iPhone and iPad: build 14 on TestFlight; the public link delivers it once Apple's beta review has passed. The screen row of the Models page is disabled on the iPhone; the pictures and clips pickers list, besides nanoMuse Cloud, only your providers on a DashScope host (Alibaba Cloud Bailian).

  • Desktop: the chat and hands pickers moved from the nanoMuse Cloud page to Settings → Models, which links back; a hands change takes effect at the hands' next step, no restart. The hands speak OpenAI's shape, so an Anthropic or native Gemini key is named under the screen row and not offered for the hands. Pictures through a Gemini key go through Google's OpenAI-compatible layer: images/generations accepts gemini-2.5-flash-image, but Google's page does not document images/edits there, so the pose pictures of the avatar studio may not work with a Gemini key.

  • Web console and runtime: an existing [gui], [image] or [video] block in config.toml keeps working as it is; [llm] image_model and video_model still work. The new routes write app-settings.json, layered over the file as before. A runtime without the new routes shows no media rows in the console.

  • The relay stays at 0.22.0. Nothing on the wire changed: the hub frames, the conversation sync and /v1/models are as in 0.1.40, and a 0.1.40 client works against it unchanged.

  • The desktop installers are not notarised. On macOS open the app once from System Settings → Privacy & Security → Open Anyway (or right-click → Open); on Windows click Run anyway. They arrive a little after the APK, since CI builds them from the tag, and SHA256SUMS-desktop.txt lists every checksum.

  • 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-0.1.41-arm64.apk
    iPhone, iPad TestFlight, a beta; build 14, delivered once Apple's beta review has passed
    Windows 10+ nanoMuse-Desktop-0.1.41-win-x64.exe (the...
Read more

nanoMuse 0.1.40 · Clear

Choose a tag to compare

@lgy0404 lgy0404 released this 06 Oct 14:27
9ef54bd

nanoMuse 0.1.40 · Clear

🐉 nanoMuse 0.1.40 “Clear”: the iPhone's input field is in the clear again, every account's chats are kept clearly apart on a shared device, every refusal from the relay is one clear sentence on every client, the Mac takes a true picture of the screen or says why it cannot, Windows starts again after the update that moved the app, and the operator of a relay can close the door with a switch.

Four releases reported a chat with no input field on the iPhone and iPad. It was there the whole time — behind the bottom bar, which was a safe-area inset that the chat stopped keeping clear of once the keyboard had come and gone. The bar is a row now, the composer is a row, and a page in Settings shows where the app laid it out, in a frame and in numbers. On Windows, 0.1.39 moved the app to a new folder and the profile's link to the plugin still pointed at the old one; the app starts over it now.

On the desktop every working light breathes at the phone's rhythm, the glow and the capsule while the hands work are the phone's, and the run's trajectory sits in the chat where the Live stage was. When nanoMuse Cloud refuses a turn — the allowance spent, a message too large, a sign-in expired, a switch turned off by the operator — the desktop shows a card and the web app and the runtime say one sentence, never the relay's raw reply. On a Mac the helper takes the screen with ScreenCaptureKit, checks the Screen Recording grant truthfully and no longer substitutes a picture when it cannot take one. On the phones every chat belongs to an account, signing out asks one question, a refused key keeps the data and a deleted account removes it; the ChatGPT plan and your own providers get plain cards and a proxy setting. The relay's console has Controls, Stats and Site pages.

Highlights

  • iPhone and iPad: the input field stays. Four releases reported a chat with no input field; it was there — behind the bottom bar, a safe-area inset of the home screen that was hidden while the keyboard was up, and once it had left and come back the chat no longer kept clear of it: the field showed when the app opened and was gone for good after the first dismissed keyboard. The bar is now a row under the rooms, as on Android, and the composer column (the cards, the tool strip, the input bar) a row under the message list — plain layout, no overlay of the UIKit list, no second host to switch to. Settings → Appearance → Composer check draws a red frame around the column and writes a report — the window and its safe area, the column's frame, every UIKit ancestor with its frame, hidden flag and alpha, the watch's events — with Copy for a bug report: the view hierarchy a device can give without a Mac, in nine languages (docs/ios.md).
  • Windows starts again after the update that moved the app. 0.1.39 installed to Programs\nanomuse-desktop where 0.1.30 had been under Programs\nanoMuse\…; the profile's link to the plugin pointed at the old folder, and the launch died on EEXIST: file already exists, symlink … — the stale junction was being removed through a call that follows the link first and, finding nothing at its end, left it standing. The link is now removed as a link and remade; if that still fails, the message names the path to remove by hand (docs/desktop.md).
  • The desktop moves as the phone does. Every light that said "working" — the chat and status dots, the other device's dot, the thinking dots, the microphone, the glow round the screen — breathes at the phone's rhythm (2.4 s in, 2.4 s out) instead of running or rippling, and is a steady light under the system's reduce-motion setting. The glow and the capsule while the hands work are the phone's: a light breathing along the four edges (blue working, amber waiting), the marker at the exact point of each click, a dashed path for a drag, and a pill at the top with the face, Step N, what the hands are doing, I'll take it and Stop. The picture-in-picture Live stage is gone; in its place the chat shows the trajectory of a hands run during and after it — each step's screenshot with the action drawn on it and the agent's words before it, with previous/next, Open large and Copy this step (docs/gui.md).
  • What the relay refused, as a card or one sentence. When nanoMuse Cloud refuses a turn the desktop's chat shows a card instead of the relay's reply — the allowance used up (the ways on and Try again), a message too large for the model (New chat), a sign-in that expired (Sign in), the relay busy — and a refusal is no longer retried five times as a rate limit before it shows. The cards know the operator's switches: the allowance paused rather than spent, the service, sync or hub paused — one sentence each. The web app and the hands runtime say the same in one plain sentence, in English and Chinese, instead of "The model provider answered with an error", and the ChatGPT plan's own failures (unreachable, region blocked, signed out, no quota, rate limited) get the same treatment. An own-key provider's refusal gets one sentence by kind with the reply folded under What came back, the ways-on block in Settings → nanoMuse Cloud reads the relay's guidance for where you are, and a one-line heads-up appears above the composer at 80 % of the allowance, as the phones show it. On both phones every refusal is one plain sentence in the phone's language with the right button — too large → New chat, a key the relay no longer takes → Sign in, a private relay or closed sign-ups → Open Settings, a busy provider with the wait, the operator's pauses → Try again — and when the operator pauses the allowance the card says paused, not used up; the ways on come from the relay's guidance for your region. The iPhone pins the allowance card under the chat header and shows the 80 % line too (docs/parity.md).
  • macOS: a true picture of the screen, or the reason. The helper nanoMuse Computer Use takes the screen with ScreenCaptureKit on macOS 14 and later (CGDisplayCreateImage returned nothing on macOS 26); 12.3 and 13 keep the CoreGraphics capture. The Screen Recording check asks ScreenCaptureKit, so the status says granted, denied or unknown truthfully and names the capture source. When the helper cannot take the picture the app no longer substitutes an Electron frame: the screenshot fails with the helper's own words — ScreenCaptureKit's error, the missing grant, or that the helper did not start. Window mode lists and captures windows through the helper too; a window it cannot capture parks the hands on the whole screen with the reason in the observation (docs/desktop.md).
  • Whose chats a phone shows. Every chat on Android and iOS now belongs to the account that was signed in when it was made (or to nobody, while signed out), synced or not; the lists, the search, the home, the Library, the Siri shortcuts and the push show the signed-in account's only — a side chat or a pre-0.1.39 chat no longer shows under the next account (contract C12). Signing out asks Keep this account's chats on this device (off by default): off, the account's chats, memory, feed, goals, routines and face leave the phone; on, they are put aside and come back at the next sign-in; signing in as another account and Change server ask the same. A key the relay refuses keeps the data on the phone, put aside until the same account signs in again; only a relay answer that the account was deleted removes it — the relay remembers a deleted account's keys for 90 days for exactly that answer, and Delete the account removes everything of it on the phone with no question. A fresh install starts empty on both phones: Android no longer takes part in the device backup, iOS keeps the relay's key out of iCloud Keychain and sweeps what a previous install left (docs/sync.md).
  • The ChatGPT plan and your own providers, on the phones. When chatgpt.com or an own-key provider cannot be reached, when OpenAI does not serve the region, when the ChatGPT sign-in has expired or the plan has nothing left in the window, both phones show a plain card that says what helps, with Try again, instead of the socket text. Settings → Network → HTTP proxy for own providers (host, port, optional user and password; off by default; this device only) is used for own-key providers and the ChatGPT plan, never for nanoMuse Cloud, with a Test row. The allowance card lists every way on — wait, your own key, a model of your own, your computer, invite — and the daily cap gets its own line. On the iPhone Use your own model key lists the whole catalogue — the region's providers first, what each key covers, Get a key, the key taken on the vendor's own sheet — and the plans you already pay for: ChatGPT (with the line about OpenAI's terms), Claude, Kimi, OpenRouter; a server on a computer of your own (Ollama, LM Studio, vLLM) takes its address (docs/own-key.md).
  • The operator's console: Controls, Stats, Site. Controls has switches for the free allowance, sign-ups, the cloud service, conversation sync and the device hub, applied at once and kept across restarts, each saying what turning it off does; threshold rules that close sign-ups, pause the allowance or sync, or send a notice when the account count reaches a number; and an audit log of who changed what and when (nanomuse-cloud admin controls list|set|audit from the shell). Stats shows accounts, devices, model calls and tokens, allowance use, sync volume, errors and API calls per UTC ...
Read more

nanoMuse 0.1.39 · Keys

Choose a tag to compare

@lgy0404 lgy0404 released this 06 Oct 03:42
05ce5b9

nanoMuse 0.1.39 · Keys

🐉 nanoMuse 0.1.39 “Keys”: the allowance is a start, your own key or a plan you already pay for is the way on, and every client now says exactly what each gives you. Eighteen providers sit in one catalogue — Alibaba Cloud Bailian, OpenRouter, OpenAI, Google Gemini, DeepSeek, Kimi, Zhipu, SiliconFlow, Volcengine Ark, MiniMax, Anthropic, xAI, Groq, Mistral and the servers on your own computer — each marked with what its key covers: chat, the hands, pictures, clips. A ChatGPT plan signs in on every client and covers chat and the hands; a provider without image or video models leaves pictures and clips off, and the app tells you in one sentence who could draw them instead of failing.

A device now shows and syncs the conversations of the account that is signed in and nothing of an earlier one's: a phone handed on, a family tablet, a work laptop with a personal account on it keep each account's chats apart, hidden rather than deleted, never pushed under the wrong key. On Ubuntu the hands' clicks land again — the glow drawn around the screen had been taking them. On a Mac the Computer Use helper asks for its permissions under its own name and keeps them. On the iPhone and iPad the crash after onboarding is gone. The fourteen Android and six iOS languages beyond English and Chinese are complete. The Terminal edition is no more; the desktop app is the desktop.

Highlights

  • Your own key, from a catalogue. One file, providers.json, shared by the phones, the desktop, the web console and the relay: eighteen providers with their endpoints, key pages, default models and what a key there covers — chat · screen · pictures · clips. The spent-allowance card leads with the region's provider (Bailian on the mainland, one key for all four; OpenRouter then OpenAI elsewhere), folds the rest under more providers, takes the key on the spot or opens the provider form filled in, and links to where a key is handed out. docs/own-key.md is the catalogue in prose; the relay's guidance carries it to older clients too.
  • Sign in with a plan you already pay for. Sign in with ChatGPT on the phones (the app's own sign-in; Claude, Kimi and OpenRouter too), on the desktop and in the web console (the runtime's nanomuse chatgpt login, the same PKCE flow as Codex, chat and the hands' screen reading through the Codex backend). A ChatGPT plan does not draw pictures or clips, and every client says so. The honest line stands under the row: OpenAI's terms cover a ChatGPT plan inside OpenAI's own Codex, other apps have lost that access before (OpenCode, January 2026), and a key keeps working if it stops.
  • One sentence, never a raw error. Pictures, clips and the hands pick only from providers with image, video or vision models; when none has it, the avatar studio, Image & video models, the hands settings and the web console show one line naming the providers that would — for your region, in your language — with a link to how. New [image] and [video] slots in the runtime's configuration let pictures come from one provider and chat from another.
  • Whose conversations a device shows. A synced conversation remembers the account that first pushed or pulled it. Sign in as someone else on the same phone or computer and the earlier account's chats leave the lists — they stay on the device, hidden, and are never pushed under the new key; the pull starts over for the new account; signing back in brings them back; signed out, everything local shows. Android, iPhone, the desktop and the runtime behind the web console follow the same rule (contract C10 in docs/cloud.md).
  • Ubuntu: clicks that land. The glow drawn around the screen while the hands work is an X window the size of the display with a one-pixel input shape; Chromium resets that shape to the whole window whenever the window's bounds change — on creation, on first map, after each setBounds and again when the X server's ConfigureNotify arrives — so the glow took the clicks: the hands' at the right coordinates, and the person's own after an approval card. The glow now steps aside for every pointer action, the shape is set again after every event that can clear it, and a watchdog restores it the moment a real pointer event reaches the glow. Measured in a nested X server with GNOME Shell at 3840×2160, scale 2: ten of ten hands clicks, seven of seven after an approval card (five of the hands', two of the person's), the person's clicks after a resize two of two where 0.1.38 had none of three.
  • macOS: Computer Use keeps its permissions. The dmg's quarantine flag was inherited by the bundled nanoMuse Computer Use helper, so macOS ran it from a translocated read-only path with a new identity on every launch — the Screen Recording pane never showed its row and the grant never stuck. The app clears the flag before the helper's first start, refuses a translocated copy and says to move nanoMuse to Applications, restarts the helper once rather than twice, and reports the display scale correctly on Retina displays; press and release hold a key across the actions that follow.
  • iPhone and iPad: no crash after onboarding. Build 9 died on an iPad every time the chat appeared: the chat screen's body was one chain of some sixty modifiers, 0.1.38 added four, and the Swift runtime's type decoder overflowed the main thread's stack instantiating the result. The chain is shorter than 0.1.37's now (grouped modifiers, the composer stack behind one AnyView), a test keeps it that way, and the app builds with Xcode 27.
  • Every string in every language. The fourteen Android locales beyond English and Chinese carried thirty-seven nanoMuse strings and showed 840 in English; six iOS languages carried about a hundred of 718. Both apps are complete now — German, Spanish, Filipino, French, Indonesian, Japanese, Korean, Malay, Polish, Brazilian Portuguese, Romanian, Russian, Thai, Turkish on Android; German, Spanish, French, Japanese, Korean, Russian and Traditional Chinese on iOS — and a test keeps the Android files at the same keys.
  • No Terminal edition. The nanomuse-desktop-terminal packages are no longer built; the desktop app is the one desktop shape, and the Python runtime stays for self-hosting and the web console (GET /api/providers and /api/chatgpt/* are new there).
  • The README shows its features as cards and the four clients around one account, and the project has a Discord.

Upgrade Notes

  • Android installs over 0.1.38 and keeps your data. nanoMuse-0.1.39-arm64.apk (Android 8.0+, arm64; versionCode 40) is signed with the same key as every version before it. The sync store migrates in place on the first start (Room v3, an owner per conversation; conversations synced before 0.1.39 belong to the account they were synced with). Verify with sha256sum -c nanoMuse-0.1.39-arm64.apk.sha256.

  • The relay is 0.21. GET /v1/me → spend.guidance and the allowance_exhausted refusal carry the provider catalogue by region; 0.20 clients ignore the new fields, 0.1.39 clients fall back to their bundled catalogue on a 0.20 relay. Deploy the relay first so the first cards are complete: cloud/deploy/…/deploy.sh or docker compose up -d --build.

  • Desktop and runtime. [image] / [video] in config.toml are optional — without them the chat provider's host draws, as before. nanomuse chatgpt login|status|logout|proxy are new; the callback lands on port 1455 of the machine the runtime runs on — a runtime on another machine takes the address the browser ended on, pasted into the web console's card, the CLI's prompt or POST /api/chatgpt/callback.

  • Linux desktop: nothing to do; the X11 fix is in the app. Wayland is still told plainly that the hands are off.

  • macOS desktop: install the dmg into Applications and open the app once (Open Anyway); the helper's quarantine flag is handled by the app, and the permission panes list nanoMuse Computer Use. Ad-hoc signed still: a new build starts the grants over.

  • iPhone and iPad: build 10 on TestFlight; the public link follows Apple's beta review. The single 0.1.38 sync table is re-filed under the account the first time it is seen signed in.

  • The desktop installers are not notarised yet. On macOS open the app once from System Settings → Privacy & Security → Open Anyway (or right-click → Open); on Windows click Run anyway. The checksum sits next to every file.

  • Where to get it.

    Browser nanomuse.cn/web — a phone in the browser with a Muse on it; a demo, after a sign-in
    Android 8.0+, arm64 nanoMuse-0.1.39-arm64.apk
    Windows 10+ nanoMuse-Desktop-0.1.39-win-x64.exe
    macOS 12+ nanoMuse-Desktop-0.1.39-mac-arm64.dmg / -mac-x64.dmg (or the .zip)
    Linux x64 nanoMuse-Desktop-0.1.39-linux-x64.AppImage / .deb / .tar.gz
    DeepSeek Harness Desktop dsh-nanomuse-0.1.39.tgz — dsh plugin --profile desktop add … (how)
    iPhone, iPad TestFlight (public link to follow)
    Your own relay bash scripts/self-host.sh — docs/self-hosting.md

    GitHub's own downloads are the fastest source from China too in our measurements; if they fail where you are, the same files are on nanomuse.cn/dl/v0.1.39/ within fifteen minutes.

Community

nanoMuse is open source and free. 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](https://github.com/nan...

Read more

nanoMuse 0.1.38 · Loom

Choose a tag to compare

@lgy0404 lgy0404 released this 05 Oct 14:56
70524d9

nanoMuse 0.1.38 · Loom

🐉 nanoMuse 0.1.38 “Loom” is the thread from 0.1.37 made to carry its weight. Side chats stay on the device that made them unless you say otherwise, so a device signing in gets the main conversation's newest three hundred lines in one pull instead of the account's whole history; a device at work says so under its line on the others, instead of leaving a prompt that looks interrupted; and the computer-use turn that failed with 413 Request too large cannot any more — the hands keep at most four screenshots of two megapixels in a request on every client, and the relay accepts sixteen megabytes. The desktop no longer re-reads every session log every two seconds while idle, which is where the slowness of 0.1.37 came from.

The hands were taken apart on two systems. On a Mac they have a helper app of their own, nanoMuse Computer Use, the way Codex does it: the Screen Recording and Accessibility grants belong to the helper, the panes list it by that name, and switching Screen Recording on no longer needs the app restarted. On Ubuntu the hands were run on this machine, under a nested X server, and fixed where they failed: the glow around the screen was swallowing every click, Shift was dropped for symbols, and an approved step came back Not done because the app and the runtime signed the approval ticket differently.

The iPhone's composer is a native text field now, with a second place to stand if the first is taken away; the launch screen is the mark, not the words of the app we are built on. Every client can point at a relay of yours, and scripts/self-host.sh brings one up. The README is half as long, AGENTS.md says how to work in the tree, the docs are a site at nanomuse.cn/docs, and the roadmap says where a contributor can start.

Highlights

  • Main first. Only the main conversation syncs by default; side chats stay on the device that made them. Also sync side chats in Data controls, per device, sends this device's side chats to the account and brings the others' here. The first pull after sign-in is the newest 300 messages (tail=300), so a new device shows the conversation at once; the relay's /v1/sync/changes takes scope and tail (Cloud 0.20).
  • {device} is working… When another device is answering a prompt, the line says so under it for up to ten minutes (POST /v1/sync/working, a working hub frame); on Android the 已中断 · 继续 banner no longer appears under a prompt another device is handling, on every client a line written elsewhere never shows interrupted/continue.
  • No more 413. The relay accepts 16 MiB (was 6) and says both sizes when it refuses; the runtime keeps the newest four screenshots at ≤ 2 Mpx in a request and replaces the older ones with a note; the desktop's harness carries the same image budget in its provider row; Android elides tool-result images beyond four; the desktop operator's screenshots are capped at 2 Mpx on every path.
  • The desktop is quick again. A push with nothing new re-marked every session dirty and ran again two seconds later, reading every session log each time — ~50 % of a core on a large account, a wait behind every click. Idle CPU is 0.1 % now and the UI's p95 went from 60–80 ms to 4 ms on a 33-session account. Session titles come from the harness's projection, a log is read once per change, hub frames arriving together become one pull.
  • macOS: nanoMuse Computer Use. A Swift helper in Contents/Helpers takes the screenshots (CGDisplayCreateImage) and posts the mouse and keyboard events (CGEvent, text of any script typed as characters). The permission panes list it instead of the app; the app restarts it by itself when a grant changes. Without the helper bundle everything works as in 0.1.37. Still ad-hoc signed, so a new build starts the grants over until the Developer ID certificate exists — docs/desktop.md says how to reset them.
  • Ubuntu: the hands work. Clicks and keystrokes land (the glow's X11 input shape is re-applied after it maps and after each action); *, @, () come out right (libnut dropped Shift); Allow once and Always allow run the step (the approval ticket now verifies); a Wayland session is told plainly that the hands are off, in Settings and in the chat, instead of a black picture; HiDPI roots click in root pixels. Tested in Xephyr with a calculator, gedit, approvals, Stop and the first-run page.
  • iPhone: the composer, for real. The field is a SwiftUI TextField; the UIKit host iOS left empty when the naming card went away is gone with it, and a fail-safe shows the composer from a second attachment point if it still reports no height a second after the chat appears or a message goes out. The launch screen is the mark on the system background.
  • A relay of yours, from every app. Use a different server on the sign-in page of Android and iOS (address → Check → Use this server; http:// for private addresses only), Server: host / Change in Account; the desktop and the runtime through their configuration. scripts/self-host.sh asks five questions and brings up a relay with TLS (--local for a loopback one), proven end to end on this machine.
  • For contributors. README in 110 lines (and nine translations in the same shape), AGENTS.md with the layout, the checks and the conventions, a roadmap that says what we are catching up with Muse on and where to start, and the docs as a VitePress site.
  • Sign-in outside mainland China. Every client says, before a code is requested, that text-message codes reach mainland-China numbers only and to use an e-mail address; Android has 18 new strings in 17 languages, iOS 17 in nine.

Upgrade Notes

  • Android installs over 0.1.37 and keeps your data. nanoMuse-0.1.38-arm64.apk (Android 8.0+, arm64; versionCode 39) is signed with the same key as every version before it. Verify with sha256sum -c nanoMuse-0.1.38-arm64.apk.sha256.

  • The relay is 0.20. /v1/sync/changes?scope&tail, POST /v1/sync/working, working in /v1/sync/state, MAX_REQUEST_BYTES 16 MiB. Clients of 0.1.38 still work against a 0.19 relay, but the main-first pull and the working line need 0.20; a self-hosted relay: cloud/deploy/…/deploy.sh or docker compose up -d --build. If a proxy sits in front of your relay, let it pass 20 MB bodies.

  • Side chats stop syncing by default. A device that had side chats on the account keeps the ones it has; new side-chat turns stay on the device until Also sync side chats is on there. Turn it on on the devices you want them on — each device decides for itself.

  • macOS: grant the permissions once more, to the helper. System Settings → Privacy & Security → Screen Recording and Accessibility now list nanoMuse Computer Use; the rows for nanoMuse Desktop can be removed. The build is still ad-hoc signed: a later build asks again. tccutil reset ScreenCapture io.github.nanomuse.desktop.computer-use resets.

  • Linux is X11 only for the hands; a Wayland session says so and points at an Xorg session. Nothing to grant on X11.

  • iOS is on TestFlight, internal testers for now; the public link follows Apple's beta review. The launch screen changes after a reinstall (iOS caches it per install).

  • The desktop installers are not notarised yet. On macOS open the app once from System Settings → Privacy & Security → Open Anyway (or right-click → Open); on Windows click Run anyway. The checksum sits next to every file.

  • Where to get it.

    Browser nanomuse.cn/web — a phone in the browser with a Muse on it; a demo, after a sign-in
    Android 8.0+, arm64 nanoMuse-0.1.38-arm64.apk
    Windows 10+ nanoMuse-Desktop-0.1.38-win-x64.exe
    macOS 12+ nanoMuse-Desktop-0.1.38-mac-arm64.dmg / -mac-x64.dmg (or the .zip)
    Linux x64 nanoMuse-Desktop-0.1.38-linux-x64.AppImage / .deb / .tar.gz
    DeepSeek Harness Desktop dsh-nanomuse-0.1.38.tgz — dsh plugin --profile desktop add … (how)
    iPhone, iPad TestFlight (public link to follow)
    Your own relay bash scripts/self-host.sh — docs/self-hosting.md

    GitHub's own downloads are the fastest source from China too in our measurements; if they fail where you are, the same files are on nanomuse.cn/dl/v0.1.38/ within fifteen minutes.

Community

nanoMuse is open source and free. 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 — Alibaba Cloud Bailian in mainland China, OpenRouter elsewhere (how). 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.

This is a preview. We use it every day and know where it is rough; tell us where it broke for you and what you want it to do. The roadmap says where help is wanted. Thanks to everyone who tried a build and reported what broke. Open an issue · send a pull request · Discussions · star the repo — if...

Read more

nanoMuse 0.1.37 · Weave

Choose a tag to compare

@lgy0404 lgy0404 released this 05 Oct 10:00
10a6992

nanoMuse 0.1.37 · Weave

🐉 nanoMuse 0.1.37 “Weave” weaves the thread tight. 0.1.36 made your conversations travel between your devices; 0.1.37 makes them one: every device signed into the account shows the same main conversation and the same side chats, merged in time, backfilled all the way to the first conversation — the one where your Muse got its name — with each turn written elsewhere saying where it came from. Another device's main chat no longer turns up as a side chat here; a side chat started on the phone is the same chat on the desktop, continued under the same id. And the Muse's name goes with the thread: given on one device, it is worn on all — a desktop signing in no longer resets it to the default on the way.

The app wears its own mark where it speaks for itself: the splash is the blue N on its tile in a quiet ring with the wordmark and one status line (the ring stops and the error shows when the start fails), and the sign-in and permission pages open with the same mark rather than a face that is not yet anyone's. The agent's steps are shown by default on every client. Devices is a page of cards: this device first with what it can do, the others with when they were last seen.

Three things that got in the way are fixed. On Linux the launcher icon "did nothing" after the window was closed — the process was still there, hidden; it now quits when the window closes and a second launch opens the window again. On a Mac the app asks for Screen Recording and Accessibility at launch through the system's own dialogs, screenshots take one path, and a black frame comes back as a plain permission message rather than a black picture handed to the model. On an iPad the composer could vanish with the keyboard; it comes back.

Highlights

  • One thread. Every device shows the account's one main conversation and the same side chats. Turns from the other devices sit between this device's own in time order, each marked From Pixel 8 (or whichever device wrote it); a message deleted on one device disappears on all; a chat deleted elsewhere is archived on the desktop (the harness forgets nothing). Signing in — or turning sync back on — pulls first and then sends the whole history, oldest first, so the first conversation is there on every device. The desktop keeps the other devices' turns beside its sessions (sync-remote.json) and briefs the model on what arrived meanwhile before its next step; a second desktop joining an account whose conversation is underway does not begin the first conversation again.
  • The Muse's name follows you. Named on the phone, named on the desktop, the name is applied and pushed on every client. The bug behind "the avatar syncs but the name does not" is gone: a desktop sharing its connections wrote the whole — still default — profile before its first pull, which renamed the account's Muse back to nanoMuse and took a drawn face off every device. Connections now go up alone.
  • The blue mark. The splash (loading.html), the sign-in door, the code and password pages and the permissions page on the desktop, the web, Android and iOS carry the brand mark from docs/brand.md; the face arrives with the conversation. The dragon icon leaves the desktop package.
  • The agent's steps show by default on the desktop (nanomuse.prefs.showSteps), the web (nm.show_steps), Android and iOS (nanomuse.show_steps); a stored off stays off.
  • Devices as cards. This device first — glyph, name renamed in place, OS and version, the online dot, what it can do as chips, the hub and remote-control switches — then the others in a grid with Online · just now / Last seen 2 h ago, the @name hint and Forget this device behind the dots (desktop and web; Android says when an offline device was last seen).
  • Linux opens again from the icon. With the menu bar off, closing the window quits the process (the glow and capsule overlay windows were keeping it alive); a second launch opens the window or focuses it and says which in the log. A .tar.gz sits next to the AppImage for machines without FUSE.
  • The Mac asks at launch. Screen Recording and Accessibility are requested through the native TCC calls (@computer-use/node-mac-permissions, @computer-use/mac-screen-capture-permissions — the packages UI-TARS-desktop uses) and the settings pane opens when refused; the Permissions page reads the same status. When the desktop app's operator is there, screenshots go through it alone — no second path through mss or pyautogui, no second prompt, no second kind of error. A screenshot that comes back black returns a permission error with the Screen Recording text instead of a black picture. Restart runs through app.quit() so the host and the operator stop cleanly; Chromium's ThumbnailCapturerMac / ScreenCaptureKit picker features are off to dodge the known dropped-frame bug (electron#44504); package-mac.sh signs the native modules unpacked from the asar. docs/tasks/mac-check-0.1.37.md lists what still wants a Mac with the certificate.
  • iPad: the composer comes back. The tool strip could end up on the tab bar with no composer under it and no way to the keyboard — the composer's UIKit host had been torn down and SwiftUI, with nothing in the subtree changed, never rebuilt it. A watchdog notices and rebuilds it (NanoMuseComposerWatch.swift).

Upgrade Notes

  • Android installs over 0.1.36 and keeps your data. nanoMuse-0.1.37-arm64.apk (Android 8.0+, arm64; versionCode 38) is signed with the same key as every version before it. Verify with sha256sum -c nanoMuse-0.1.37-arm64.apk.sha256.

  • If your Muse's name was reset by a desktop sign-in, give it once more on any device; it stays this time.

  • The relay is unchanged (Cloud 0.19.0, /v1/sync/*): a self-hosted relay from 0.1.36 serves 0.1.37 as it is.

  • The agent's steps are on now. If you had turned them off in Settings → Appearance (General on the desktop), they stay off.

  • macOS: still untried on a Mac by the maintainer (the build machine is Linux) — the launch-time permission dialogs, the single screenshot path and the black-frame message are on the task sheet above; a report from a Mac decides what changes next.

  • iOS is on TestFlight. A public link is being set up (it opens once Apple's beta review clears); until then, internal testers.

  • The desktop installers are not notarised yet (the Developer ID certificate is in progress). On macOS open the app once from System Settings → Privacy & Security → Open Anyway (or right-click → Open); on Windows click Run anyway. The checksum sits next to every file.

  • Where to get it.

    Browser nanomuse.cn/web — a phone in the browser with a Muse on it; a demo, after a sign-in
    Android 8.0+, arm64 nanoMuse-0.1.37-arm64.apk
    Windows 10+ nanoMuse-Desktop-0.1.37-win-x64.exe · nanomuse-desktop-terminal-0.1.37-windows-x64-setup.exe (terminal)
    macOS 12+ nanoMuse-Desktop-0.1.37-mac-arm64.dmg / -mac-x64.dmg (or the .zip) · nanomuse-desktop-terminal-0.1.37-macos-arm64.pkg / -x64.pkg (terminal)
    Linux x64 nanoMuse-Desktop-0.1.37-linux-x64.AppImage / .deb / .tar.gz · nanomuse-desktop-terminal-0.1.37-linux-x64.deb / .tar.gz (terminal)
    DeepSeek Harness Desktop dsh-nanomuse-0.1.37.tgz — dsh plugin --profile desktop add … (how)
    iPhone, iPad TestFlight (public link to follow)

    GitHub's own downloads are the fastest source from China too in our measurements; if they fail where you are, the same files are on nanomuse.cn/dl/v0.1.37/ within fifteen minutes.

Community

nanoMuse is open source and free. 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 — Alibaba Cloud Bailian in mainland China, OpenRouter elsewhere (how). With an account, the text of your conversations is kept on nanoMuse Cloud so that your devices show the same chats — one switch in Data controls turns it off and deletes it; nothing is sold (privacy policy); delete the account whenever you want.

This is a preview. We use it every day and know where it is rough; tell us where it broke for you and what you want it to do. Thanks to everyone who tried a build and reported what broke. Open an issue · send a pull request · Discussions · 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 v0.1.37 plus the android/deps/proot submodule (nano-muse/proot). The whole repository is GPL-3.0-or-later. nanoMuse Harness 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

  • feat: one thread on every device, blue launch, steps on by default, Mac permissions, Linux relaunch by @lgy0404 i...
Read more

nanoMuse 0.1.36 · Thread

Choose a tag to compare

@lgy0404 lgy0404 released this 05 Oct 05:27
74329de

nanoMuse 0.1.36 · Thread

🐉 nanoMuse 0.1.36 “Thread” makes your conversations one thread across your devices. Signed in, the phone, the iPhone, the Mac and the PC show the same chats: what you asked on the bus is on the desktop when you sit down, and the answer the desktop wrote is on the phone when you leave. The text travels through nanoMuse Cloud; files and images stay where they were made. And from any device you can hand work to another — start a message with @Mac and the Mac's Muse does it and reports back; the iPhone takes such tasks too while the app is open.

The other story is the desktop's hands. On a scaled display they clicked beside their targets, and their effects were poor. Both are gone — not by more trial and error of our own, but by taking the wheels ByteDance's UI-TARS-desktop has already proven: its operator (nut.js) now lives in the desktop app, screenshots come at the display's size, the model's coordinates are pixels of the picture it saw and are mapped exactly once, and the prediction marker turns at the point of every action. On a 4K display at scale 2 the click lands within a pixel.

The iPhone is brought level with the phone on the things that showed: a way back from voice to the keyboard, the pill composer and grey bubbles, a floating header, Rename chat, the missing settings rows. And the small things: the face takes the click on a Mac, the splash is the logo, Ubuntu shows the icons, the console saves the Star asks again.

Highlights

  • One conversation on every device. After each finished turn the text of the chat — what you wrote and the final answer, never tool steps, tool results or the system prompt — goes to nanoMuse Cloud and comes back on every device signed into the account: pulled at launch, on return to the foreground, the moment another device pushed, and once a minute. All devices' main chats are one conversation; a chat deleted on one device is deleted on all; chats from another device carry From Pixel 8. Routines, goals, the feed and work done for another device stay on the device that ran them. Settings → Data controls → Sync conversations between my devices is on when you are signed in; Delete synced conversations empties the store; both act for the whole account. The relay keeps at most 20,000 messages per account and cuts a message at 16 KB; the operator sees counts, not text. On the desktop the other devices' chats appear under From other devices and Continue here makes a session of them.
  • Work on another device from the chat. A message that starts with @<device name> — the full name or its first word, case-insensitive, an online device of the account — is handed to that device's Muse through the hub, and the answer comes back to this chat as a turn. Devices has Ask this device, which prefills the composer; the web composer offers the devices when you type @. Computers take work whenever they are online, phones while the app is open — the iPhone now answers such calls itself.
  • The desktop's hands are UI-TARS-desktop's. The operator moved into the Electron main process (@computer-use/nut-js): screenshots through desktopCapturer at the display's size, move-then-click with a 100 ms rest, drag, scroll in each platform's unit, clipboard typing for non-ASCII text, the hotkey table (⌘ for ctrl on a Mac), served to the runtime over a per-launch loopback server with a random token. The runtime's rule is the picture is the unit: computer_screen says the picture's size, computer_act takes x/y or a box in it, the picture is snapped to Qwen's 28-pixel grid so the model's own resize is the identity, and one mapping turns picture pixels into the operator's screen. [hands] coords = "norm1000" for models that answer on a 0–1000 grid. The glow draws the prediction marker — a turning dashed ring and a dot at the exact point, the action's name beside it, a trail for drags — from the operator's own coordinates. A Wayland session says why there is no operator. Apache-2.0 attribution in THIRD_PARTY_NOTICES.md.
  • iPhone: back from voice, and the phone's chat. The voice panel's header has a keyboard button that keeps the transcript and brings the keyboard back, and the tab bar hides while the panel is open. The composer is the phone's one-row pill (a bare + for camera, photos, files and commands; a bare mic that becomes the send arrow); your bubbles are flat grey; the main chat's header floats on a blur over the transcript and side chats get the same bar. Rename chat in the menu and on a long press in the drawer, Delete chat next to it. Settings gained Background & notifications and Hands in the phone's places; the Face ID row and the old settings' nanoMuse entry are gone from the shell; the old Cloud welcome banner is deleted.
  • The face takes the click on a Mac. The chat header is no longer a drag region with holes cut into it — nothing draggable lies under the face at all; one empty strip above the face moves the window, and on macOS the face sits below the title-bar band. Windows keeps the strip to the left of the caption buttons; full screen puts the header back.
  • A splash that is only the logo — the app icon in a quiet ring, the wordmark, one status line; the start screen no longer reads anyone's face.
  • Icons on Ubuntu. The GNOME grid showed gears: the Electron package shipped a single 1024 px icon, a size the hicolor index does not have, and the terminal package shared its name — one overwrote the other. The Electron package carries 16–512 px icons now; the terminal package is nanomuse-desktop-terminal, with its own icon and desktop entry and a lower-priority nanomuse-desktop alternative, so both can be installed at once.
  • A task sheet for a Mac. docs/tasks/mac-check-0.1.36.md is written for an agent on a Mac: what to build, how to find the face click, the permission texts, the restart dialog, the capsule's focus, window mode's clicks and Retina mapping, the new operator's native addon and coordinate space — and how to send the fixes back.
  • Console. The Star asks card saves again (typing enables Save); the operator's page shows sync as counts.

Upgrade Notes

  • Android installs over 0.1.35 and keeps your data. nanoMuse-0.1.36-arm64.apk (Android 8.0+, arm64; versionCode 37) is signed with the same key as every version before it. Verify with sha256sum -c nanoMuse-0.1.36-arm64.apk.sha256.

  • Your conversations start syncing when you are signed in. The first launch of each device pushes the text of its chats and pulls the others'; from then on each finished turn travels. This is a change to what the relay keeps: before 0.1.36 it kept no conversation text unless Help improve nanoMuse's AI models was on; now the text of your chats lives there, readable by your devices only, for as long as you keep the switch on. Settings → Data controls → Sync conversations between my devices turns it off and deletes what is stored, on every app; deleting the account deletes it too. The privacy policy says what is stored, exactly. If you run your own relay, Cloud 0.19.0 adds /v1/sync/*; an older relay simply has no sync.

  • @<device> is read at the start of a message only. @Mac tidy the downloads folder goes to the Mac; tidy the downloads folder @Mac stays here. Only devices that are online are matched, so a name that is not matched is sent as text.

  • The desktop's hands drive differently. auto picks the app's operator when it is there, pyautogui / xdotool otherwise; [hands] backend = "desktop" insists. The screenshots the model sees are snapped to multiples of 28 pixels; [hands] coords = "pixels" (default) or "norm1000". On macOS the same two permissions as before — Accessibility and Screen Recording for nanoMuse Desktop — are enough; nothing new to grant. On Wayland there is no operator, and the Hands card says so.

  • macOS: still untried on a Mac by the maintainer (the build machine is Linux) — the face click, the permission words, the restart dialog, the capsule, window mode and the new operator's native addon are on the Mac task sheet above; a report from a Mac decides what changes next.

  • iOS is TestFlight-internal. Left from the alignment: on iOS 16–18 the transcript starts below the floating header's edge rather than scrolling under it.

  • The desktop installers are not notarised. On macOS open the app once from System Settings → Privacy & Security → Open Anyway (or right-click → Open); on Windows click Run anyway. The checksum sits next to every file.

  • Where to get it.

    Browser nanomuse.cn/web — a phone in the browser with a Muse on it; a demo, after a sign-in
    Android 8.0+, arm64 nanoMuse-0.1.36-arm64.apk
    Windows 10+ nanoMuse-Desktop-0.1.36-win-x64.exe · nanomuse-desktop-terminal-0.1.36-windows-x64-setup.exe (terminal)
    macOS 12+ nanoMuse-Desktop-0.1.36-mac-arm64.dmg / -mac-x64.dmg (or the .zip) · nanomuse-desktop-terminal-0.1.36-macos-arm64.pkg / -x64.pkg (terminal)
    Linux x64 nanoMuse-Desktop-0.1.36-linux-x64.AppImage / .deb · nanomuse-desktop-terminal-0.1.36-linux-x64.deb / .tar.gz (terminal)
    DeepSeek Harness Desktop dsh-nanomuse-0.1.36.tgz — dsh plugin --profile desktop add … (how)
    iPhone, iPad TestFlight, internal testers for now

    GitHub's own downloads are the fastest source from China too in our measurements; if they fail where you are, the same files are on nanomuse.cn/dl/v0.1.36/ within fifteen minutes.

Community

nanoMuse is open source and free. 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 you...

Read more

nanoMuse 0.1.35 · Accord

Choose a tag to compare

@lgy0404 lgy0404 released this 05 Oct 01:34
48fd40d

nanoMuse 0.1.35 · Accord

🐉 nanoMuse 0.1.35 “Accord” brings the iPhone and the desktop to the phone's design, screen for screen. On the iPhone the Muse header — the face, the name, the live status line — sits on every room, Settings are the phone's cards in the phone's order, and a face you had drawn gets its four motion clips. The desktop meets you the way the phone does: the pages of the first run, then a first conversation where the app speaks first and asks what to call you — no more multiple-choice question about its name.

The other story is the small things that break trust: on a Mac the face did not react to clicks, Ideas was empty, the splash showed a dragon that may not be your Muse at all. All three are gone. And when the apps ask for a star on GitHub is no longer a constant in the code: the relay serves the policy — never in the first conversation; the 3rd task, a week in, a goal reached — and every client picks it up within a day, so the moments can change without an update. Every client also shows the version it is running next to the latest one.

Highlights

  • The iPhone's chrome and settings after the phone's. The Muse header (face disc, name pill, status line, round drawer and menu buttons) on the chat and on Feed, Ideas, Goals and Library; the side drawer after Android's; the agent's replies in Muse's grey bubble; the agent page's toolbar as round buttons. Settings → nanoMuse rebuilt as Muse cards in the Android order — Image & video models, Avatar, Computers, Appearance (avatar size, the model under the name, the steps, the theme), Notifications, Account, Coding, Scheduled tasks, Shared folders, Chat files, System files, Version. A Notifications page joined the first run.
  • Motion clips on the iPhone and the desktop. A drawn face gets four 4-second clips — idle, working, waiting, happy — from wan2.2-i2v-flash through the relay or your own Bailian key, the phone's prompts word for word; the face plays them where it is large enough. Animate the avatar after a change (on by default) and Make / Redo clips under Image & video models on the iPhone and Settings → Media on the desktop; the studio's cost estimate counts the clips.
  • The desktop's first run is the phone's. Welcome, sign-in, a password, which model answers, models, the macOS permissions, Meet — kept by the host in firstrun.json, never skipped on a fresh install. Then the first conversation: the app speaks first (three scripted lines, no tokens), asks what to call you, and the model's nanomuse-naming block becomes the naming card. The multiple-choice take_name question is gone.
  • Three desktop bugs from the Mac. The header face reacts to clicks on macOS and Windows again (the draggable region was computed from an untransformed box, so a centred header was all drag bar); Ideas is no longer empty when the bundle runs from lib/chunks/; the splash is the wordmark, a quiet loader and the person's own face when there is one — never the dragon.
  • Star asks from a policy. The relay's GET /v1/nudges (public, cached an hour) and nudges in /v1/me say when the apps may ask: at sign-in, after the 3rd / 10th / 30th task, on the 7th / 30th day, when a goal is reached, after a new look, when the allowance is spent — seven days apart, four times per device at most. A task is a turn you started that got a reply: never the first conversation, never a routine, a feed post or a goal check-in. The operator edits the policy on the console (Star asks); every client — Android, iPhone, desktop, web — reads it once a day and keeps the same defaults built in.
  • Installed and latest, side by side. Settings → Version on the phones, About and the Settings row on the desktop, Settings on the web: the version you run and the newest release — Latest 0.1.x — you have it / 0.1.x is out — Update / Could not check — tap to try again. The check reads nanomuse.cn/dl/index.json first and GitHub second, once a day.
  • The Feed is never blank. It opens on the phone's intro card with Write it now, says when the daily routine runs (08:00; adjustable), and writes its first day when the first conversation ends — on the desktop, the web, the iPhone and the phone alike. Memory, Skills and Devices on the web explain themselves while empty.
  • macOS permissions, re-audited. macOS attributes the bundled runtime's captures and events to the app that started it, so only nanoMuse Desktop has to be switched on under Accessibility and Screen Recording — the words say so now, and there is no second entry to hunt for. A restart dialog when Screen Recording flips on; a black-screen notice with Relaunch; Try it rows (a test screenshot, a mouse move) and the runtime row under Computer use and on the first run's permissions page. Window mode keeps auto as its default with a fail-safe: when the Quartz layer itself fails, the hands stay on the whole screen for that target and say so once.
  • Words. A native-speaker pass over the nine README translations and the website; 104 more iPhone strings in 简体中文 and 繁體中文; the README says the iPhone app ships (TestFlight) and 0.2.0 is the App Store.

Upgrade Notes

  • Android installs over 0.1.34 and keeps your data. nanoMuse-0.1.35-arm64.apk (Android 8.0+, arm64; versionCode 36) is signed with the same key as every version before it. Verify with sha256sum -c nanoMuse-0.1.35-arm64.apk.sha256.

  • The star asks move. The first ask after a task comes at the third, not the first, and never during the naming conversation; a device that was already asked keeps its ledger. If you run your own relay, Cloud 0.18.0 serves the policy (/v1/nudges, /v1/admin/nudges, the console's Star asks card); older relays are fine — the clients keep the defaults.

  • The desktop's first run shows once more for installs that never finished it: the host now keeps firstrun.json, and an install without that file meets the pages (and the first conversation, when the agent has no name yet). Help & support → See the first run again reopens the pages on purpose.

  • Motion clips cost tokens like pictures do. With a Cloud account the four clips count against the allowance (the estimate says how much before anything is drawn); with your own Bailian key they run on it. Animate the avatar after a change is on by default and can be switched off under Image & video models (iPhone) or Settings → Media (desktop).

  • macOS: still untried on a Mac by the maintainer (the build machine is Linux) — the permission words, the Try it rows, the restart dialog, window mode's clicks and Retina mapping follow Apple's documented behaviour; a report from a Mac decides what changes next. [hands] mode = screen is the whole-screen behaviour.

  • iOS is TestFlight-internal. The composer and your own bubbles are still OpenMinis's; the header is fixed, not floating. Both are on the list.

  • The desktop installers are not notarised. On macOS open the app once from System Settings → Privacy & Security → Open Anyway (or right-click → Open); on Windows click Run anyway. The checksum sits next to every file.

  • Where to get it.

    Browser nanomuse.cn/web — a phone in the browser with a Muse on it; a demo, after a sign-in
    Android 8.0+, arm64 nanoMuse-0.1.35-arm64.apk
    Windows 10+ nanoMuse-Desktop-0.1.35-win-x64.exe · nanomuse-desktop-terminal-0.1.35-windows-x64-setup.exe (terminal)
    macOS 12+ nanoMuse-Desktop-0.1.35-mac-arm64.dmg / -mac-x64.dmg (or the .zip) · nanomuse-desktop-terminal-0.1.35-macos-arm64.pkg / -x64.pkg (terminal)
    Linux x64 nanoMuse-Desktop-0.1.35-linux-x64.AppImage / .deb · nanomuse-desktop-terminal-0.1.35-linux-x64.deb / .tar.gz (terminal)
    DeepSeek Harness Desktop dsh-nanomuse-0.1.35.tgz — dsh plugin --profile desktop add … (how)
    iPhone, iPad TestFlight, internal testers for now

    GitHub's own downloads are the fastest source from China too in our measurements; if they fail where you are, the same files are on nanomuse.cn/dl/v0.1.35/ within fifteen minutes.

Community

nanoMuse is open source and free. 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 — Alibaba Cloud Bailian in mainland China, OpenRouter elsewhere (how). Messages are not stored by default and nothing is sold (privacy policy); delete the account whenever you want.

This is a preview. We use it every day and know where it is rough; tell us where it broke for you and what you want it to do. Thanks to everyone who tried a build and reported what broke. Open an issue · send a pull request · Discussions · 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 v0.1.35 plus the android/deps/proot submodule (nano-muse/proot). The whole repository is GPL-3.0-or-later. nanoMuse Harness 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; THIRD_PARTY_NOTICES.md). nanoMuse is not affiliated with Meta; Muse is a trademark of Meta Platforms, Inc. The desktop follows what Muse'...

Read more

nanoMuse 0.1.34 · Turns

Choose a tag to compare

@lgy0404 lgy0404 released this 04 Oct 17:15
4f644c9

nanoMuse 0.1.34 · Turns

🐉 nanoMuse 0.1.34 “Turns” is about whose turn it is. When the hands reach a login, a code, a payment or a CAPTCHA, the agent hands over and waits — on the phone since 0.1.33, now on the desktop and in the browser too — and you say Done where you are: on the live stage, on the capsule, in the browser viewer, in the chat. The same places answer Allow once / Deny for an approval, so a running task no longer sends you back into the app. And your nanoMuse can now answer in 飞书, 钉钉, 企业微信 and Telegram.

The other story is parity. The iPhone and the desktop get what the Android phone had: the face opens the agent page, change your look to … is caught in the chat with four candidates, Goals, Feed and Ideas are real rooms (the iPhone has a scheduler now), the first run is the same four pages. Under all of it, two model settings — deepseek-v4.1-flash for the chat, qwen3.8-27b for the hands — and the account knows where you are, so when the allowance is spent a mainland account is pointed to Alibaba Cloud Bailian and everyone else to OpenRouter. The connections you signed into on one device show on the others, without a credential ever leaving the device that holds it. What is still open is in docs/parity.md.

Highlights

  • Holds: the hands are handed over, and wait. A hold belongs to one chat and one kind of hands — the browser, this computer, the phone. The agent opens one with the new hand_over action (a reason is required: sign in, the code from your SMS, confirm the payment), you open one with Take over, and Done closes it; while it is on, every action of that tool waits instead of failing, and the agent goes on from the page as you left it, told never to redo your work or type credentials. One hold event, one card everywhere: the desktop's stage (Your turn — Done, I'll take it), the web's browser viewer, the phone's capsule, the chat.
  • Approvals where you are. The desktop's live stage carries Allow once / Always in / Deny (always = a per-application grant, revocable on the agent page); a small always-on-top capsule shows the same card when the main window is behind the app being driven; the showcase phone's capsule answers Allow once / Deny on the spot. Only questions still open the app.
  • A browser you can drive (web). The viewer takes over, clicks, types, scrolls, opens a URL, goes back, says paused, waiting for you while the agent waits, and Done hands it back.
  • Hands that do not fight you (macOS). The hands can work in one application's window while you keep the mouse — the window is captured, the events go to its process — and each application asks once: Let use ? ([hands] mode = auto | screen | window). Around the screen a transparent, click-through glow with the face at the pointer, amber while a hold is on; every overlay, and the window itself, is kept out of the screenshots. Written against the Quartz APIs and not yet tried on a Mac by the maintainer — see Upgrade Notes.
  • Chat apps. 飞书, 钉钉, 企业微信 and Telegram over the vendors' long connections — no public address needed, after nanobot's design. One conversation per chat, replies streamed in place where the vendor allows editing, approvals answered with 允许 / 拒绝 or a button, files both ways. The first message from a stranger gets a six-character pairing code to approve in the app or with nanomuse channels approve; allowlists, group policy, deliver here chats for background results. Settings → Chat apps in the web app and the desktop; nanomuse channels login feishu creates the bot from a QR code. Optional extras nanomuse[channels]; the Docker image has them.
  • Two model settings. With a nanoMuse Cloud account the chat opens on DeepSeek V4.1 Flash (reads pictures, thinks before it answers) and the hands see the screen with Qwen 3.8 27B; the relay's menu says which model is for which lane, and every client reads that before its own defaults. Your own key fills both — Bailian or OpenRouter.
  • Where you are decides the way on. The account carries a region; sign-in, onboarding, the allowance card, the account page and the presets put Alibaba Cloud Bailian first for a mainland account and OpenRouter first elsewhere, with one line that says why (Bailian only signs up accounts from mainland China). OpenRouter joined the own-key presets on every client, with its OAuth sign-in on the phones.
  • Connections travel with the account. The remote MCP servers one device connected go into the profile — a name, an address, how it signs in; never a key — and the other devices list them as Connected on — sign in here to use it on this device, with the sign-in prefilled.
  • The iPhone catches up. The face opens the agent page (Activity, Approvals, Daily, Soul & memory, share sheet); change your avatar to … is caught in the chat with four candidates and a pick by words; Goals, Feed and Ideas are real rooms with a scheduler (foreground catch-up, a background refresh task, a local notification at the set time: Check-in: — open to run it); the four-page first run; a nanoMuse settings page; coding agents over the hub; the iPad runs the Muse shell too; 249 strings in three languages.
  • The desktop catches up. The face opens the agent page; the phone's avatar flow word for word, with the same memory line; Goals, Feed and Ideas on the phone's fence protocol with the phone's own idea list (byte for byte, with a test); guided macOS permissions in order; a real version line and update check — nanoMuse Desktop · harness in About and Help, a daily check against GitHub's releases with nanomuse.cn/dl/index.json as the fallback, a dot on the ••• menu and an Update to 0.1.x entry when there is one.
  • Plainer words, everywhere. The community notice is Free, open source, non-profit and says who pays and what is kept; the star asks say what a star does; 你, not 您; no exclamation marks; the README and its nine translations in the same voice.
  • Three runtime fixes. Adding a remote MCP server that is down gave a 500 and Attempted to exit cancel scope in a different task (now a 502 with the real cause, SSE tried after streamable HTTP); a message typed during a background pass was filed as that pass's work and left the chat for the Feed; unknown /api/* paths answered the app's HTML with a 200 (a 404 in JSON now).

Upgrade Notes

  • Android installs over 0.1.33 and keeps your data. nanoMuse-0.1.34-arm64.apk (Android 8.0+, arm64; versionCode 35) is signed with the same key as every version before it. Verify with sha256sum -c nanoMuse-0.1.34-arm64.apk.sha256.

  • The chat model changes for Cloud accounts. The chat opens on deepseek-v4.1-flash (¥2 / ¥8 per million tokens at 0.7× against your allowance; it reads pictures and thinks before it answers). A model you picked yourself is kept. The hands keep qwen3.8-27b.

  • macOS window mode is untried on a Mac by the maintainer (the build machine is Linux): the capture, the posted events, the Retina mapping and the per-application ask follow Apple's documented APIs and the Codex app's behaviour, but the first reports from a Mac decide whether auto stays the default. [hands] mode = screen is the 0.1.33 behaviour.

  • Chat apps need a bot of your own at the vendor (飞书开放平台, 钉钉开放平台, 企业微信智能机器人, @Botfather); the settings screen lists the steps and the console link. No vendor was connected end to end from the build machine — the SDK calls were checked against the real packages offline — so the first report of a chat that does not answer, with its vendor, is the most useful thing to send. Android and iOS do not have the settings screen yet; set a chat app up in the web app or the desktop.

  • Running a relay? Cloud 0.17.0: /v1/models entries carry nanomuse.for and nanomuse.recommended_for, /v1/me carries region and spend.ways, the profile carries connectors (the database migrates itself), OPENROUTER_URL is new and optional, and CLOUD_MODELS takes for / recommended_for. Older clients ignore all of it.

  • iOS is TestFlight-internal. The Muse shell is on the iPhone and the iPad now. A routine runs in the background only when iOS gives the refresh task a slot; at the set time the phone reminds you to open it.

  • The desktop installers are not notarised. On macOS open the app once from System Settings → Privacy & Security → Open Anyway (or right-click → Open); on Windows click Run anyway. The checksum sits next to every file.

  • Where to get it.

    Browser nanomuse.cn/web — a phone in the browser with a Muse on it; a demo, after a sign-in
    Android 8.0+, arm64 nanoMuse-0.1.34-arm64.apk
    Windows 10+ nanoMuse-Desktop-0.1.34-win-x64.exe · nanomuse-desktop-terminal-0.1.34-windows-x64-setup.exe (terminal)
    macOS 12+ nanoMuse-Desktop-0.1.34-mac-arm64.dmg / -mac-x64.dmg (or the .zip) · nanomuse-desktop-terminal-0.1.34-macos-arm64.pkg / -x64.pkg (terminal)
    Linux x64 nanoMuse-Desktop-0.1.34-linux-x64.AppImage / .deb · nanomuse-desktop-terminal-0.1.34-linux-x64.deb / .tar.gz (terminal)
    DeepSeek Harness Desktop dsh-nanomuse-0.1.34.tgz — dsh plugin --profile desktop add … (how)
    iPhone, iPad TestFlight, internal testers for now

    GitHub's own downloads are the fastest source from China too in our measurements; if they fail where you are, the same files are on nanomuse.cn/dl/v0.1.34/ within fifteen minutes.

Community

nanoMuse is open source and free. 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 ...

Read more

nanoMuse 0.1.33 · Steps

Choose a tag to compare

@lgy0404 lgy0404 released this 04 Oct 11:02
df18207

nanoMuse 0.1.33 · Steps

🐉 nanoMuse 0.1.33 “Steps” is about the words under the face. On every client the line under the agent's name now says what the running step is in the model's own words — 打开携程网站, Check the login page — not Running: <command>: every tool takes a step argument, stripped before the tool runs, shown under the face and as the pill's title. The iPhone gets the Muse shell — the face, that status line, the drawer, the rooms, the avatar studio, the connectors, data controls, Reach — and so stands with the Android phone, the desktop and the web app. What is still open for a decision is written down in docs/parity.md.

Three of this version's fixes came out of using the desktop for a day. A click on the face in the profile drawer looked like nothing — its menu was being drawn below the window. The app forgot its preferences on every launch — the host's port changed each time, and the port is the key to everything the browser side keeps. And the hands' screenshots came back black on a Mac without Screen Recording granted to the fresh process, and went to the model as if they were the screen. Each is fixed, and each is the kind of thing a report with a screenshot finds faster than any test; keep sending them.

Highlights

  • The step's own words, under the face and on the pill. The runtime asks the model for step on every tool call, in the person's language; nanomuse mcp carries it to the desktop's hands; Android keeps the running step's title between steps; the web app's pills show it. The status line stops reading like a terminal.
  • The iPhone's Muse shell. NanoMuseRoot takes the root on the iPhone (the iPad keeps upstream's split layout): the chat's title is the face, the name and the status line — waiting for you, the step's words, writing the reply, On it: …, the model's name when idle — with the face breathing and popping in its five moods. The bottom bar carries the rooms: Ideas and Library are real, Feed and Goals are empty states until the phone has something to run them with. The avatar studio draws through the relay and pushes the look to the account; the connectors catalogue (75 services) with the client-id ask; Data controls; Reach to the other devices; the star asks. Three upstream edits, each marked.
  • The browser is handed over, not described (Android). A page that needs the person — a login, a code, a payment, a CAPTCHA — used to end the turn with please log in yourself. browser_use has a hand_over action: the agent's own tab opens for the person with its session, a Your turn card says what the page asks with Open the page and Done, continue, and the agent waits and goes on from the page as it is, told never to ask for or type credentials. Hands approvals are answered on the floating capsule — Allow / Deny — without coming back into the app (money still asks in the chat card with the screen lock).
  • Connectors that need an app of your own say so. Eight services — GitHub, Slack, Discord, HubSpot, Render, Bitrise, PagerDuty, Box — register no clients by themselves, and Connect used to fail there with one line. On the desktop, Android and iOS the sheet now walks through making an OAuth app at the vendor's developer page with our callback address (shown, copyable) and pasting its client id; the id is kept like a registration. Six services join the catalogue (Attio, GitLab, Miro, QuickBooks, YNAB, Oura — 75). On Android, Connectors and MCP are one Settings entry, with Your own servers at the end.
  • The desktop, after a day's use. The face's menu is where the face is; the host's port is kept across launches so the preferences, the star asks' memory and the stage's place survive; the trace view has a way out (a Chat · Trajectory pill at the top right, Esc); theme swatches are gone (the accent follows the avatar, as everywhere); the typing dots are centred; permissions read back the moment you return from System Settings, Allow becomes Open System Settings once pressed, and Screen Recording granted while the app runs gets a notice with Restart now (macOS applies it only to freshly started apps); the live stage moves and resizes and remembers where it was; the preset's own routes are admitted like the harness's /api.
  • A black screenshot is an error, not a picture. A capture that comes back all black — macOS without Screen Recording for this process, Wayland on Linux — raises BlackScreen with what to do, and no black frame reaches the model or the stage.
  • ?token= is refused. Announced in 0.1.31, kept one more version in 0.1.32: a token in a query string is a 401 that says so; a socket that opens with one gets legacy_token and a 4401 close.
  • Also in this version. Star asks with a thank-you's tone at the tenth task and after a new look, on every client; a run the desktop host started on its own (the first meeting) is not counted as the person's task; the avatar studio says sign in first in the person's language; nanoMuse Cloud 0.16 sets a pool to any figure, one account or all (/v1/admin/pool, /batch), already in production.

Upgrade Notes

  • Android installs over 0.1.32 and keeps your data. nanoMuse-0.1.33-arm64.apk (Android 8.0+, arm64; versionCode 34) is signed with the same key as every version before it. Verify with sha256sum -c nanoMuse-0.1.33-arm64.apk.sha256.

  • The desktop remembers from this version on. The first launch of 0.1.33 picks a port and writes it to ~/.nanomuse/desktop/port; what 0.1.32 kept in the browser's storage under its random port of the day is not carried over — the onboarding slides and the star asks may show once more.

  • ?token= links no longer work against a 0.1.33 runtime. The web app and the phone have used first-frame auth and #token= since 0.1.31; a script that still appends ?token= gets a 401 whose body says what to change.

  • Connectors. The client-id path and the browser hand-over compile and follow the desktop's flow, but neither has been signed into or handed over on a device by the maintainer yet (no emulator on the build machine) — a report of a service that does not complete, with its vendor, is the most useful thing to send.

  • iOS is TestFlight-internal. The Muse shell is on the iPhone only; the iPad keeps upstream's layout. No public link yet.

  • Running a relay? 0.16.0 adds POST /v1/admin/pool and /v1/admin/pool/batch with the events pool.set / pool.set.many; no migration.

  • The desktop installers are not notarised. On macOS open the app once from System Settings → Privacy & Security → Open Anyway (or right-click → Open); on Windows click Run anyway. The checksum sits next to every file.

  • Where to get it.

    Browser nanomuse.cn/web — a phone in the browser with a Muse on it; a demo, after a sign-in
    Android 8.0+, arm64 nanoMuse-0.1.33-arm64.apk
    Windows 10+ nanoMuse-Desktop-0.1.33-win-x64.exe · nanomuse-desktop-terminal-0.1.33-windows-x64-setup.exe (terminal)
    macOS 12+ nanoMuse-Desktop-0.1.33-mac-arm64.dmg / -mac-x64.dmg (or the .zip) · nanomuse-desktop-terminal-0.1.33-macos-arm64.pkg / -x64.pkg (terminal)
    Linux x64 nanoMuse-Desktop-0.1.33-linux-x64.AppImage / .deb · nanomuse-desktop-terminal-0.1.33-linux-x64.deb / .tar.gz (terminal)
    DeepSeek Harness Desktop dsh-nanomuse-0.1.33.tgz — dsh plugin --profile desktop add … (how)
    iPhone TestFlight, internal testers for now

    GitHub's own downloads are the fastest source from China too in our measurements; if they fail where you are, the same files are on nanomuse.cn/dl/v0.1.33/ within fifteen minutes.

Community

Free, open source, non-profit — open source, built together: a personal agent for all. Sign in with a phone number or an e-mail and the model comes with a free allowance, paid by the developer — the account page says how much is left and how to go on when it is spent (your own key, a friend's invitation). If nanoMuse has been useful, a star on GitHub is the one thing we ask for: your support is what keeps us going.

This is a preview, and the people building it use it every day; what breaks for you, and what you wish it did, is the most useful thing you can send. What we are after is bigger than one app — a personal agent that belongs to the person who runs it, on every device they own, open to anyone who wants to build on it.

Based on OpenMinis 1.13 (GPL-3.0), modified since 2026-09-24. The complete corresponding source of this build is tag v0.1.33 plus the android/deps/proot submodule (nano-muse/proot).

What's Changed

  • feat: the step's own words on every client, the iPhone's Muse shell, the browser handed over, connectors with a client id by @lgy0404 in #81
  • build(release): version 0.1.33 Steps (code 34) by @lgy0404 in #82

New Contributors

  • No first-time contributors in this release — yours could be the next one: good first issues.

Contributors

@lgy0404

Full Changelog: v0.1.32...v0.1.33

简体中文

🐉 nanoMuse 0.1.33「Steps」:这一版说的是头像下面那行字。现在每个端上,智能体名字下面的那一行说的是正在进行的这一步本身——「打开携程网站」「检查登录页」——用的是模型自己的话,而不是「正在执行:<命令>」:每个工具都多了一个 step 参数,在工具运行前被剥掉,显示在头像下方,也作为胶囊的标题。iPhone 有了 Muse 外壳——表情、这行状态、抽屉、房间、形象工坊、连接器、数据控制、Reach——从此和 Android 手机、桌面端、网页版站在一起。还没定的事写在 docs/parity.md。

这一版有三个修复来自把桌面端用了一天。点抽屉里的头像像是没反应——它的菜单被画到了窗口下面。应用每次启动都忘掉设置——宿主端口每次都变,而端口正是浏览器那一侧所...

Read more

nanoMuse 0.1.32 · Union

Choose a tag to compare

@lgy0404 lgy0404 released this 04 Oct 05:56
3c27ca3

nanoMuse 0.1.32 · Union

🐉 nanoMuse 0.1.32 “Union” brings the four clients — the Android phone, the iPhone, nanoMuse Desktop and nanoMuse Web — to the union of what each of them could do. Whatever one had, the others have now: the whole account page, the catalogue of services to sign into, the agent's steps kept out of the chat unless asked for, a status line that says what it is on, and a star asked for at three moments. What stays platform-specific, and what is still open for a decision, is written down in docs/parity.md.

Since 0.1.31 the desktop had grown the fastest — laid out like the Muse desktop screen for screen, a catalogue of about seventy remote MCP servers to connect by signing in, a face that moves, a quick-chat key of your own, the first run as a recording of Muse shows it — while the phone had the account and the star asks the desktop lacked, and the iPhone had neither. This version evens that out. The phone gets the same seventy connectors, with the OAuth sign-in done on the phone and the token handed to the sandbox's MCP client; the desktop gets the account page the phone has had — the pool in yuan with the ways on when it runs low, the invite code, usage by kind and by model, the password, every device holding a key, the timeline, deletion; the iPhone gets all of that plus a password, an invite code and Sign in to nanoMuse Cloud — free on its start screen; and the web app gets the switch for the agent's steps. Under all four, nanoMuse Cloud 0.15 sets the allowance at runtime, so the figures the apps print are the relay's — nobody updates an app when the amounts change.

Highlights

  • One account page, on every client. Settings → Account on the desktop and nanoMuse Cloud on the iPhone now have what the phone's page has: the allowance in yuan with the 80 % heads-up and, when it runs low, the ways on — your own key (→ Models, with the how-to), an invitation, and a star once; the invite code and link with what they earned; usage by kind (today / all time) and by model; the password — set, change, remove; every device holding a key, Sign out on each and Sign out of every device; the account's timeline; Delete account. The desktop reads it through its host's pass-through routes and keeps none of it on the computer. The iPhone also signs in with a password now (Sign in with a password / Use a code instead), takes a friend's invite code with the six digits, and prints the free amount above the form; so does the desktop's welcome.
  • Connectors on the phone. Settings → Connectors on Android is the desktop's catalogue — Notion, Linear, Atlassian, Asana, GitHub, Sentry, Vercel, Cloudflare, Supabase, Stripe, PayPal, Figma, Canva, Dropbox, Box, Hugging Face, Context7 and the rest, about seventy, grouped as the desktop groups them with one line about each. Open servers add with a tap; a key service asks for the key; an OAuth service signs in with the account you already have — the phone discovers the server's authorization server, registers itself as a client, runs the PKCE flow in a Custom Tab and writes the token into the entry's Authorization header, which is how the sandbox's MCP client reads it; tokens about to lapse are refreshed when the app starts. A connected service is an MCP server entry under the catalogue id, so Settings → MCP shows it too. The catalogue is one file shared with the desktop (scripts/connectors-json.mjs).
  • The desktop in Muse's likeness. The harness bundle (dsh-nanomuse) has the rail with the face as the agent's state (Chats · Search · Feed · Ideas · Goals · Library, a recent document, the hamburger), the chats column with the main and the side chats, the face and name over the conversation with a live status line and Stop, Muse's permission card over the harness's approvals, the live stage, the profile panel with memory, Settings as Muse's sheet in Muse's order (General with the account card, usage and theme swatches; Connectors; Computer use; File system access; Dictation; Wallet; Secure storage; Permissions; Message channels; Devices; Data controls; Help & support; Legal). Connectors is a catalogue — search, Connected and Available, a detail per connector — with the seventy remote servers to sign into and everything the agent can really reach (hands, mailbox, calendar, address book, your other devices, web, files, terminal, rooms, schedule, any MCP server). The dragon's four states are the phone's clips, looped silently wherever the face is drawn 44 px or larger; the quick-chat key is yours to change (⌥ Space on macOS, Ctrl+Alt+Space elsewhere); after signing in, three first-run pages ask for the computer, the files and the microphone, each skippable.
  • The steps out of the chat, the status in words. On every client the agent's steps — tool pills, reasoning blocks, the Computer sheet on the phone, the floating step bar — are off by default and one switch away (Android Settings → Appearance → Conversation, Desktop Settings → General → Conversation, Web Settings → Appearance, iOS Settings → Chat → Steps). What stays is the line under the face, which names the work and never a state of mind — nanoMuse is using Shell, Writing the reply, On it: 〈the request, briefly〉; the iPhone's typing line reads 〈name〉 is on it. No client says Thinking… any more. Fixed on the way: a finished tool step left the phone's Computer sheet stuck (#67).
  • A star, asked for at three moments. When the free allowance is claimed (the account page after signing in), after the first task the agent finishes (a card on the phone and the web, the header line on the desktop — First one done. Liked it?), and when the allowance is used up (a third way on the card, next to the key and the invitation). Each is shown once where it happens; none comes back after Star on GitHub. The iPhone asks at the first and the third moment for now.
  • The amounts are the relay's — nanoMuse Cloud 0.15. ALLOWANCE_CNY, INVITE_BONUS_CNY and SIGNUP_OPEN are changed while the relay runs — Settings › Runtime on the operator's page or POST /v1/admin/settings — in force on the next request, and every client prints what GET /v1/config and the account sheet say (¥10 of use to start, +¥5 for each of you, the exhausted-allowance message) instead of a number baked into the app. Cloud 0.14 before it made the operator's page eleven views behind a side navigation, each a link.
  • iOS, on TestFlight. The first iPhone build was archived, signed and uploaded by the iOS · TestFlight workflow — signed manually with the team's distribution certificate, made without a Mac — processed by App Store Connect and handed to the internal testers. With this version the iPhone has the whole account, the sign-in entry on the start screen, the steps toggle and the status line; the Muse shell — face, rooms, avatar studio, Reach — is the largest item on the open list.
  • Also in this version. nanomuse mcp carries the runtime's connectors (mailbox, calendar, address book) into the desktop agent; a remote MCP server 250 ms away no longer fails to fetch from the harness (the dual-stack connect window is 1.5 s); the web app's status line, invite figures and the three star asks match the others.

Upgrade Notes

  • Android installs over 0.1.31 and keeps your data. nanoMuse-0.1.32-arm64.apk (Android 8.0+, arm64; versionCode 33) is signed with the same key as every version before it. Verify with sha256sum -c nanoMuse-0.1.32-arm64.apk.sha256.

  • Connectors on the phone are new. Open and key services are plain MCP entries and behave as before. The OAuth sign-in follows the desktop's flow line by line but is in its first build on a device — if a service's sign-in does not complete, the entry is under Settings → MCP to retry or remove, and an issue with the service's name is the most useful thing to send. The token sits in the sandbox's servers.json next to API keys, as upstream keeps them.

  • The desktop's account page needs a relay that answers /v1/me with the pool (nanoMuse Cloud 0.15); against an older relay the tokens and the plan's bar are shown as before and the free amount falls back to ¥10 / ¥5.

  • Running a relay? 0.15.0 adds the settings table (migrated at start), GET /v1/config (public), POST /v1/admin/settings and Settings › Runtime on the operator's page; 0.14.0 is the page in views. The environment's ALLOWANCE_CNY / INVITE_BONUS_CNY / SIGNUP_OPEN remain the defaults the runtime settings fall back to. The clients in this release work with 0.13 (fixed figures) but print the relay's amounts only from 0.15.

  • ?token= stays one more version. 0.1.31 said the query-string token would go in 0.1.32; the clients that would be cut off are still in use, so the runtime keeps accepting it (first-frame auth and #token= are the way; the query form lands in access logs) and the removal moves to the next version.

  • iOS is TestFlight-internal. No public link yet; the maintainer's smoke test on a phone comes before Apple's beta review.

  • The desktop installers are not notarised. On macOS open the app once from System Settings → Privacy & Security → Open Anyway (or right-click → Open); on Windows click Run anyway. The checksum sits next to every file.

  • Where to get it.

    Browser nanomuse.cn/web — a phone in the browser with a Muse on it; a demo, after a sign-in
    Android 8.0+, arm64 nanoMuse-0.1.32-arm64.apk
    Windows 10+ nanoMuse-Desktop-0.1.32-win-x64.exe · nanomuse-desktop-terminal-0.1.32-windows-x64-setup.exe (terminal)
    macOS 12+ nanoMuse-Desktop-0.1.32-mac-arm64.dmg / -mac-x64.dmg (or the .zip) · nanomuse-desktop-terminal-0.1.32-macos-arm64.pkg / -x64.pkg (terminal)
    Linux x64 `nanoMuse-De...
Read more