Download Latest Version nanoMuse-Desktop-1.0.9-win-x64.exe (281.8 MB)
Home / v1.0.7
Name Modified Size InfoDownloads / Week
Parent folder
nanoMuse-Desktop-1.0.7-win-x64.exe 2026-10-25 269.3 MB
nanoMuse-Desktop-1.0.7-win-x64.exe.blockmap 2026-10-25 279.9 kB
nanoMuse-Desktop-1.0.7-mac-x64.zip 2026-10-25 348.1 MB
nanoMuse-Desktop-1.0.7-mac-x64.dmg 2026-10-25 463.0 MB
nanoMuse-Desktop-1.0.7-mac-arm64.dmg 2026-10-25 485.8 MB
nanoMuse-Desktop-1.0.7-mac-arm64.zip 2026-10-25 332.0 MB
latest.yml 2026-10-25 365 Bytes
nanoMuse-Desktop-1.0.7-linux-x64.AppImage 2026-10-25 322.9 MB
nanoMuse-Desktop-1.0.7-linux-x64.deb 2026-10-25 251.9 MB
nanoMuse-Desktop-1.0.7-linux-x64.tar.gz 2026-10-25 302.4 MB
SHA256SUMS-desktop.txt 2026-10-25 1.0 kB
dsh-nanomuse-1.0.7.tgz 2026-10-25 2.7 MB
SHA256SUMS-harness.txt 2026-10-25 89 Bytes
nanoMuse-1.0.7-arm64.apk 2026-10-25 39.4 MB
nanoMuse-1.0.7-arm64.apk.sha256 2026-10-25 91 Bytes
nanoMuse 1.0.7 _ Logbook source code.tar.gz 2026-10-25 53.9 MB
nanoMuse 1.0.7 _ Logbook source code.zip 2026-10-25 56.2 MB
README.md 2026-10-25 61.1 kB
Totals: 18 Items   2.9 GB 0

nanoMuse 1.0.7 · Logbook

🐉 nanoMuse 1.0.7 “Logbook”: two days after Beacon, the relay keeps the record of every conversation with the account's models, screenshots included, and the apps add the turns they ran on a key of your own, so your devices share one history whichever of them, and whichever key, answered; the drawn face's clips travel between devices; nanoMuse Cloud answers the nanoMuse apps only; the operator's console is rebuilt around what the model endpoint is doing; and Data controls on every app says what is held and deletes it with one tap.

1.0.6 went out on 2026-10-23. Since then twenty-seven pull requests were merged, and this version is the fourth look at the whole project, with one change at its centre: the record. From relay 0.29 nanoMuse Cloud keeps each chat turn it answered, in full: the request as it sent it to the model (the system prompt with your memory and SOUL, every message, what tools returned, the screenshots of a screen operation) and the answer as the model gave it; the pictures are stored once each as files named by their hash, so a screenshot an app resends on every step is one file. It is the account's own data: your devices read it back, the person running the relay can see a problem whole, nobody else can, and one tap under Data controls removes all of it. The 1.0.7 apps take part from both sides: each chat call names the device and the conversation it belongs to, and a turn answered on a key of your own goes up afterwards with its pictures, never the key or the address, so the record is whole wherever the model was (#579, #591). Around it, three more things the account does: the face's clips travel with the face, so a look drawn and animated on one device is worn and moves on the others without a second rendering job; each device says in its hello which provider and model answer its chats (the two ids, nothing else), so the Devices list and the operator's Platforms page can say what people run; and the models answer the nanoMuse apps only (relay 0.28): a pool worker, an SDK or a script on an account key is turned away with 403 client_not_supported and a sentence pointing to a key of its own, while every app of 1.0.6 and earlier goes on unchanged (#570, #573). The operator's console at /app/admin is a new application, in 简体中文 and English, with a Live page that reads the provider gate every three seconds and pages for platforms, retention, screen operation and data quality; the relay writes one row per chat call saying how it went, never what was said, and its heavy pages read on a second connection off the requests' path, so a month of the ledger costs the operator the wait and nobody else anything. The rest is the kind of thing a check finds: the runtime names itself on every model call, treats a remote MCP server as sending data out, asks before telling a coding agent what to do, keeps a webhook's key out of the transcript and shares connector addresses without their secrets; the desktop keeps a failed push's lines for the next one; the phone stops the account's work before signing out; the iPhone keeps a second account's profile and files apart from the first. Beside the check, @mongo027 made a thinking model's reasoning show while it thinks (#484); @cutey-none added Parallel as a web search provider (#566) and fixed the desktop settings' tint (#569); @Mola-maker let one scheduled task fire at several times a day (#558); @hobostay made the desktop check who stops or approves a remote task (#567); @z1010223zero-pixel fixed a skill's file list under a dotted path and a provider switch that sent the previous provider's key (#572, #581); @Yicheng-Mark made the runtime's own calls skip the environment's proxy, its console print on a non-UTF-8 code page and a write across drives report as the write it was (#587, #594, #595, #596); @takiAA bounded the relay's history page scans and took the counter writes off the event loop (#589, #590); @aiapienthusiast added Cheaper Inference to the catalogue (#554); @Longfellow1 gave the goals' evidence evaluation a fixed offline benchmark (#585). Nothing moves for a person upgrading: the Android package installs over 1.0.6 and keeps everything, the desktop keeps its settings, and a 1.0.6 client works against the relay (0.30.0); what is new is what the account keeps, and the privacy policy and Data controls say so in the same words.

Highlights

  • The record: every conversation, on every device, whichever key answered. nanoMuse Cloud keeps each chat turn it answered since relay 0.29, in full, with the pictures as files named by their SHA-256 (MEDIA_DIR, next to the database); a stream that broke off is kept as partial with the reason (client_gone, upstream_timeout, broken, or what a 1.0.7 app says of its own turn). It is written after the answer has left and never fails a chat, and it does not depend on Help improve, which now decides only what joins the training set. The 1.0.7 apps name the device and conversation on each chat call (X-NanoMuse-Device, X-NanoMuse-Conversation), send up the turns they ran on a key of your own (PUT /v1/blobs/{sha256} for the pictures, then POST /v1/turns; the key and the base URL never leave the device; the avatar studio's and the quick test's calls are not chat turns and stay out) and read the record back (GET /v1/turns, GET /v1/blobs/{sha256}, a file opening only for an account that holds a reference to it). Data controls on Android, the iPhone, the desktop and the web shows what is held (turns, those on your own keys, files, how long this relay keeps a turn), and its one delete removes the record and the training turns together and reports both. One account may send up RECORD_UPLOADS_PER_MINUTE (120) turns and files a minute and hold MEDIA_ACCOUNT_MAX_MB (2048) of files; RECORD_KEEP_DAYS sweeps older turns on a relay that wants that, MEDIA_MAX_GB (50) bounds the files, least recently used first, and RECORD_TURNS=0 keeps none of it (#579, #591).
  • The face's clips travel with the face, and each device says what answers it. A clip drawn on one device is put up and named in the profile's clips ({mood: {sha256, mime, bytes}}); another device takes it in instead of rendering its own, so a face is animated once per account, and the hourly trim spares the clips the profile names. Each device's hub hello carries device.llm {provider, model}: cloud while the account's models answer, else the catalogue's vendor id and the model id, never a key, a base URL or a setting; the relay keeps the two ids on the device row, the Platforms page shows which providers people configure for themselves, and the privacy policy says so.
  • nanoMuse Cloud answers the nanoMuse apps only. A sixth switch on the operator's Controls, nanoMuse clients only, is on by default: a chat request on an account key from software that is not one of the apps, the desktop app, the Python runtime or the web console (a pool worker, an SDK, a script, the unbranded upstream app) is answered 403 client_not_supported, the client's name in the body and a sentence pointing to a key of one's own. Members are answered from anything; sign-in, the account page, sync and the hub do not look at it; a refusal costs nothing and is one line on the account's timeline. The relay reads the User-Agent, so this stops honest programs and not impostors; the Non-app traffic page lists what was turned away, by family. The runtime names itself on every model call now (User-Agent: nanoMuse/<version>), where before only one vendor got the name and everyone else saw the OpenAI SDK's string; no app of 1.0.6 or earlier is affected (#573).
  • The operator's console is rebuilt, and the relay reads off the requests' path. /app/admin is a small React application (cloud/console, built into the relay package and checked by CI), in 简体中文 and English, with every filter and open account in the address bar. Live reads the provider gate every three seconds: slots in use and requests waiting, each request under way with its phase and age, the last hour by minute, latency percentiles, a verdict on the last ten minutes. Usage is a day × model matrix; Platforms, Retention, Screen operation, Data quality and Non-app traffic answer questions the old console could not. Behind them the relay writes one row per chat call (how long it waited for a slot, time to the first token, how it ended, tools offered and called by name, whether it operated a screen, the platform; never a word of the conversation; CALLS_KEEP_DAYS, 90) and a shape row beside each kept training turn. The console's pages, the analytics and the backfills go through a second, read-only connection in a thread; the Platforms page is computed in SQL; the counter writes are off the event loop, by @takiAA (#590), and older history pages are read through the index instead of rescanning newer rows, by @takiAA (#589). The hub counts frames in bytes, refuses a call id still in flight, and closes a socket past 60 a minute from one address or 32 per account with 4008 before any key is checked; the events timeline is kept EVENTS_KEEP_DAYS (365); deleting an account leaves no trace in other accounts' invite records; text-message codes go to mainland numbers only on both Aliyun services and the sign-in screen says so wherever it is opened; signing out of the web console takes the account's chats out of the browser's storage (#570, #582, #583).
  • The runtime, in detail. A thinking model's reasoning shows while it thinks, in the console and the web console's bubble, not only after the answer, by @mongo027 (#484); Parallel's Search MCP answers web searches, with or without a key, by @cutey-none (#566, #517); Cheaper Inference is in the own-key catalogue, by @aiapienthusiast (#554); a skill's files are listed when its folder sits under a dotted path, and switching providers with the key field left empty no longer sends the previous provider's key, both by @z1010223zero-pixel (#572, #581); a call to the runtime's own server never goes through the environment's proxy, the CLI prints its report on a console whose code page is not UTF-8, and a write into an extra root on another drive is reported as the write it was, all by @Yicheng-Mark (#587, #594, #595). The Sentinel treats a tool of a remote MCP server as egress to that host, and a handshake or a call that stalls is given up after connect_timeout_s and call_timeout_s; telling a coding agent what to do is a sensitive step, and stopping one stops its helpers; a webhook's key is no longer written into the chat; a connector URL's query, user:password and fragment stay on the device when the profile is shared; a device with remote control off answers info with its name and system and nothing more; the hub client waits for the calls in flight before it closes, cancels the inbound calls of a connection that went, and waits a whole minute after a refusal; a mailbox's high-water mark is filed under a hash and a busy look skips no mail; a tap, drag or click is checked against the picture and NaN is refused; a trigger for a device can be made and tested from the app; and the Sentinel's risk levels say what a step does, with strict asking before a search or a remembered fact. The goals' evidence evaluation has a fixed offline benchmark, by @Longfellow1 (#585).
  • The desktop. A device on the hub can no longer stop a task or decide an approval card belonging to another device, by @hobostay (#567); the settings pages are tinted only while a search is typed, by @cutey-none (#569, #568). The Gemini key travels in a header instead of the address; Data controls live on their own page and say what the relay keeps; on a Mac an action waits for the capsule to move out of the way; a failed push keeps its lines for the next one and a push the relay refused as too large goes up in halves; the status line says what an MCP or connector tool does in its own words; the capsule and glow windows carry a Content-Security-Policy. The desktop takes part in the record: its chat requests name the device, a turn on a key of your own goes up afterwards with its pictures (src/record.ts), its hello names what answers new chats, and a clip drawn here is put up for the other devices.
  • Android. One scheduled task can fire at several times a day, by @Mola-maker (#558, #557); a chats backup can leave the files out, so a package a server refused at 1.5 GB is a few MB, and nanomuse-backup run makes one from the shell, so a scheduled task can keep the phone backed up (#561, #560); the Feed shows a day's newest batch first (#555); signing out cancels and awaits a face being drawn, clips being rendered and a run of the hands before the account's data is put aside; a hub frame past the limit is not parsed; the feed's dates are formatted thread-safely; 简体中文 and 繁體中文 use the app's own words throughout (服务商 / 服務商, 形象, 审批). The phone takes part in the record as the desktop does (OwnTurns), with Data controls showing the figures and the one delete reporting both.
  • The iPhone. The Feed shows a day's newest batch first (#555); the phone takes part in the record (NanoMuseCloudHeaders.swift, NanoMuseOwnTurns.swift), with the wording in all nine languages; a pull or a push answered after the phone moved to another account no longer writes the first account's name, face and connections over the second's; the Library lists the workspaces of the chats the person can see, not every session folder, and the avatar studio's candidates, the routine wakes and the hub's conversation map are put aside and brought back with the account; the footer under Sync conversations says who can read the text, and PrivacyInfo.xcprivacy declares what the app sends to nanoMuse Cloud; 简体中文 and 繁體中文 name Hands as Android does; fifty-one of upstream's strings that had a Spanish translation only read in all nine languages (#592).
  • The project. The privacy policy, in both languages, describes the record, the per-call rows, the shape rows beside training turns, and what the hub keeps about each device, the two model ids included (#598); a Contributors workflow keeps the ten READMEs' contributors current every night; the READMEs' News notes the two-thousandth star and the first place on Trending; the hosted relay keeps fourteen days of database copies (#597); the test suite reads the iOS project and the avatar sources as UTF-8 on every platform, by @Yicheng-Mark (#596); the container images carry the OCI licenses and source labels.
  • TestFlight. Build 29 (1.0.6) was uploaded on 2026-10-24 and went to the internal testers; 1.0.7 goes up as build 30, and that is the build submitted to Apple's beta review. A build reaches the public link once its review has passed, the internal testers before that.

Upgrade Notes

  • Android installs over 1.0.6 and keeps your data. nanoMuse-1.0.7-arm64.apk (Android 8.0+, arm64; versionCode 50) is signed with the same key as every version before it. Verify with sha256sum -c nanoMuse-1.0.7-arm64.apk.sha256. Nothing to set: Settings → Data controls now shows what nanoMuse Cloud holds of the account and the one delete removes it; a turn you run on a key of your own joins the record from this version on.
  • iPhone and iPad come through TestFlight. Build 30 (1.0.7) is submitted when it is uploaded and reaches the public link once its review has passed, the internal testers before that; until then the link installs the newest build that passed.
  • The desktop installers are built by CI from the tag v1.0.7. The Mac packages are not notarized: the first time, open the app from System Settings → Privacy & Security → Open Anyway (or right-click → Open). The Windows package is not signed: click More info and Run anyway once. On Linux prefer the .deb; the AppImage needs FUSE (--appimage-extract-and-run without). They arrive a little after the APK, and SHA256SUMS-desktop.txt lists every checksum. A 1.0.6 desktop on Windows downloads this version in the background on an unmetered network, offers it in the corner menu and installs it on a real quit. Your settings stay where they were.
  • The relay is 0.30.0; a 1.0.6 client works against it unchanged. What changes for a person: the relay keeps the record of the turns it answers, from any client version, since 0.29 went live on 2026-10-24; only a 1.0.7 app adds the turns it ran on a key of its own. For operators: RECORD_TURNS (1), RECORD_KEEP_DAYS (0, forever), MEDIA_DIR, MEDIA_MAX_GB (50), MEDIA_ACCOUNT_MAX_MB (2048) and RECORD_UPLOADS_PER_MINUTE (120) shape the record, CALLS_KEEP_DAYS (90) and EVENTS_KEEP_DAYS (365) the call rows and the timeline, CLOUD_GEOIP=0 switches the location lookup off; the nanoMuse clients only switch is on by default, so a relay whose people call the models from scripts turns it off on Controls; the hub closes a socket past 60 a minute from one address or 32 per account with 4008 too_many_connections; the console's build (cloud/console) is committed under nanomuse_cloud/console/admin/ and ships in the package; backup.sh mirrors the record's files beside the database copies and the hosted unit keeps fourteen days of them. docs/cloud.md (github.com), docs/self-hosting.md (github.com), docs/hub.md (github.com) and cloud/README.md (github.com) have the details.
  • The runtime asks a little more and names itself. Every model call carries User-Agent: nanoMuse/<version> (a User-Agent in a slot's extra_headers still stands). In strict mode the Sentinel asks before a web search, a remembered fact, a cancelled reminder or a rewritten goal; the default ask mode asks nothing new. coding → send asks like the other sensitive steps. A remote MCP server counts as sending data out unless its settings say egress = false, and connect_timeout_s (30) and call_timeout_s (120) bound its handshake and calls. Nothing else in config.toml changes.
  • Where to get it.
Browser demo.nanomuse.dev, a nanoMuse on a simulated phone, after a sign-in; a demo, the apps below are the real thing
Android 8.0+, arm64 nanoMuse-1.0.7-arm64.apk
iPhone, iPad TestFlight, a beta that goes through Apple's review; build 30 (1.0.7) once its review has passed
Windows 10+ nanoMuse-Desktop-1.0.7-win-x64.exe (the desktop app, on DeepSeek Harness; not signed)
macOS 12+ nanoMuse-Desktop-1.0.7-mac-arm64.dmg / -mac-x64.dmg (or the .zip: unzip, drag to Applications; not notarized)
Linux x64 nanoMuse-Desktop-1.0.7-linux-x64.deb (preferred) / .AppImage (needs FUSE; --appimage-extract-and-run without) / .tar.gz (unpack anywhere, run ./nanomuse-desktop)
DeepSeek Harness Desktop you already run dsh-nanomuse-1.0.7.tgz, dsh plugin --profile desktop add … (how)
Docker ghcr.io/nano-muse/nanomuse:1.0.7 (also :latest), the runtime with the web console on port 8787
Your own relay bash scripts/self-host.sh, docs/self-hosting.md (github.com)

In our measurements GitHub's own downloads are quick from China as well; if they fail where you are, the same files are on nanomuse.cn/dl/v1.0.7/ within fifteen minutes.

Community

nanoMuse is open source, free and non-profit. Sign in with a phone number or an e-mail and you get a starting allowance; the developer pays for it. The account page shows what is left and how to add more. When it is gone, use your own key or a plan you already pay for (how); the key you add can take over the chat and the screen, and pictures and clips are its from the start; the account can be switched off as a model source while you keep it for sync and your devices. With an account, nanoMuse Cloud keeps the record of your conversations with its models, and from this version the turns your own key answered, so that your devices show the same history and a problem can be seen whole; your devices and the person running the relay can read it, nobody else; one tap under Data controls deletes it, and nothing is sold (privacy policy); delete the account whenever you want. The same relay runs on a server of yours: docs/self-hosting.md (github.com).

Thanks to @mongo027 for the live reasoning (#484), to @cutey-none for Parallel search and the settings' tint (#566, #569), to @Mola-maker for the several times a day (#558), to @hobostay for the hub's caller check (#567), to @z1010223zero-pixel for the skill files and the provider switch (#572, #581), to @Yicheng-Mark for the proxy, the console encoding, the cross-drive write and the UTF-8 tests (#587, #594, #595, #596), to @takiAA for the relay's page scans and counter writes (#589, #590), to @aiapienthusiast for Cheaper Inference (#554), to @Longfellow1 for the goals' benchmark (#585), and to everyone who reported #517, #553, #555, #557, #560, #561, #568, #571, #580, #586 and #588. The roadmap says where help is wanted, and docs/parity.md (github.com) says what each client has. Open an issue · send a pull request · Discussions · Discord · star the repo; if it is useful to you, a star helps others find it.

Based on OpenMinis 1.13 (GPL-3.0), modified since 2026-09-24. The complete corresponding source of this build is tag v1.0.7 plus the android/deps/proot submodule (nano-muse/proot); the desktop installers and the Docker image are built by CI from the same tag. The whole repository is GPL-3.0-or-later. nanoMuse Desktop carries DeepSeek Harness unmodified, with its licence files inside; harness in the name is the word, not DeepSeek's. The chat apps follow nanobot's design (MIT); the desktop's operator is ported from UI-TARS-desktop (Apache-2.0; THIRD_PARTY_NOTICES.md). nanoMuse is not affiliated with Meta; Muse is a trademark of Meta Platforms, Inc. The desktop follows what Muse's app looks like and does, written down from using it; none of Meta's assets, code or content is in it.

What's Changed

New Contributors

Contributors

@aiapienthusiast · @cutey-none · @hobostay · @lgy0404 · @Longfellow1 · @Mola-maker · @mongo027 · @takiAA · @Yicheng-Mark · @z1010223zero-pixel

Full Changelog: https://github.com/nano-muse/nanoMuse/compare/v1.0.6...v1.0.7

简体中文 🐉 **nanoMuse `1.0.7`「Logbook」**:Beacon 之后两天,中继把你和账号模型的每一轮对话完整记下来,截图也在,App 再把用自己的 key 跑的轮次补上去,所以不管哪台设备、哪把 key 回答的,你的几台设备共用一份历史;画出来的脸的短片在设备之间同步;nanoMuse Cloud 只回答 nanoMuse 的 App;运营者控制台围绕模型端点正在做什么重做了一遍;每个 App 的「数据控制」都说清保存了什么,一下就能删掉。 1.0.6 在 2026-10-23 发布。之后合进来二十七个 PR,这个版本是对整个项目的第四次通读,中心只有一件事:**记录**。中继 0.29 起,nanoMuse Cloud 把它回答过的每一轮聊天完整保存:发给模型的请求原样(带你的记忆和 SOUL 的系统提示词、每一条消息、工具返回的内容、屏幕操作的截图)和模型给出的回答原样;图片按哈希命名、每张只存一份,所以 App 每一步重发的同一张截图只是一个文件。这是账号自己的数据:你的设备能读回来,运营中继的人能把一个问题看完整,别人都不能,「数据控制」里一下就全删掉。1.0.7 的 App 从两头参与:每次聊天调用都说明属于哪台设备、哪个对话,用自己的 key 回答的一轮事后连图一起传上去,key [和地址从不离开设备,所以不管模型在哪,记录都是完整的([#579](https://github.com/nano-muse/nanoMuse/pull/579)、[#591](https://github.com/和地址从不离开设备,所以不管模型在哪,记录都是完整的([#579](https://github.com/nano-muse/nanoMuse/pull/579)、[/issues/591)](https://github.com/nano-muse/nanoMuse/pull/591))。围绕它,账号还多做了三件事:脸的短片跟着脸走,一台设备上画好并做了动画的形象,在其他设备上直接穿上、直接会动,不用再渲染一遍;每台设备在握手时说明自己的聊天由哪个服务商、哪个模型回答(只有这两个 id),「设备」列表和运营者的「平台」页因此知道大家在用什么;模型只回答 nanoMuse 的 App(中继 0.28):拿账号 key 的号池、SDK 或脚本会被 `403 client_not_supported` 和一句指向自备 key 的话挡回去,1.0.6 及更早的每个 App [照常([#570](https://github.com/nano-muse/nanoMuse/pull/570)、[#573](https://github.com/照常([#570](https://github.com/nano-muse/nanoMuse/pull/570)、[/issues/573)](https://github.com/nano-muse/nanoMuse/pull/573))。`/app/admin` 的运营者控制台是一个新应用,简体中文和英文,「实时」页每三秒读一次服务商闸门,另有平台、留存、屏幕操作和数据质量几页;中继给每次聊天调用写一行它的经过,从不写说了什么,重的页面走请求路径之外的第二条连接,所以翻一个月的账本只花运营者自己的等待,别人不受影响。剩下的是体检会查出来的那类事:运行时在每次模型调用里报上自己的名字,把远端 MCP 服务器当作往外发数据,给编码智能体下指令前先问,webhook 的 key 不写进聊天记录,分享连接器地址时去掉里面的秘密;桌面端推送失败的行留给下一次;手机退出登录前先停掉这个账号的活;iPhone 把第二个账号的资料和文件与第一个分开。体检之外,@mongo027 让会思考的模型边想边显示([#484](https://github.com/nano-muse/nanoMuse/pull/484));@cutey-none 加了 Parallel [作为网页搜索来源([#566](https://github.com/nano-muse/nanoMuse/pull/566)),修了桌面端设置页的着色([#569](https://github.com/作为网页搜索来源([#566](https://github.com/nano-muse/nanoMuse/pull/566)),修了桌面端设置页的着色([/issues/569)](https://github.com/nano-muse/nanoMuse/pull/569));@Mola-maker 让一个定时任务一天跑几次([#558](https://github.com/nano-muse/nanoMuse/pull/558));@hobostay 让桌面端核对是谁在停止或批准一个远端任务([#567](https://github.com/nano-muse/nanoMuse/pull/567));@z1010223zero-pixel 修了带点号路径下技能的文件列表和换服务商时把上一家的 key [发出去的问题([#572](https://github.com/nano-muse/nanoMuse/pull/572)、[#581](https://github.com/发出去的问题([#572](https://github.com/nano-muse/nanoMuse/pull/572)、[/issues/581)](https://github.com/nano-muse/nanoMuse/pull/581));@Yicheng-Mark 让运行时调用自己时不走环境代理、在非 UTF-8 [代码页的控制台上也能打印、跨盘写入报告成它本来的样子([#587](https://github.com/nano-muse/nanoMuse/pull/587)、[#594](https://github.com/nano-muse/nanoMuse/pull/594)、[#595](https://github.com/nano-muse/nanoMuse/pull/595)、[#596](https://github.com/代码页的控制台上也能打印、跨盘写入报告成它本来的样子([#587](https://github.com/nano-muse/nanoMuse/pull/587)、[#594](https://github.com/nano-muse/nanoMuse/pull/594)、[#595](https://github.com/nano-muse/nanoMuse/pull/595)、[/issues/596)](https://github.com/nano-muse/nanoMuse/pull/596));@takiAA [给中继的历史翻页加了边界,把计数写入挪出了事件循环([#589](https://github.com/nano-muse/nanoMuse/pull/589)、[#590](https://github.com/给中继的历史翻页加了边界,把计数写入挪出了事件循环([#589](https://github.com/nano-muse/nanoMuse/pull/589)、[/issues/590)](https://github.com/nano-muse/nanoMuse/pull/590));@aiapienthusiast 把 Cheaper Inference 加进了目录([#554](https://github.com/nano-muse/nanoMuse/pull/554));@Longfellow1 给目标证据评估配了一套固定的离线基准([#585](https://github.com/nano-muse/nanoMuse/pull/585))。升级的人什么都不用动:Android 安装包覆盖 1.0.6 并保留一切,桌面端保留设置,1.0.6 的客户端对着中继(0.30.0)照常工作;新的是账号保存的内容,隐私政策和「数据控制」用同样的话说明了。 ### 亮点 - **记录:每一段对话,每台设备都有,不管哪把 key 回答的。** 中继 0.29 起,nanoMuse Cloud 完整保存它回答的每一轮聊天,图片按 SHA-256 命名存成文件(`MEDIA_DIR`,数据库旁边);中途断掉的流按 `partial` 保存并带着原因(`client_gone`、`upstream_timeout`、`broken`,或 1.0.7 的 App 对自己那一轮的说明)。它在回答发出之后写入,从不让一次聊天失败,也不依赖「帮助改进」,那个开关现在只决定什么进入训练集。1.0.7 的 App 在每次聊天调用里说明设备和对话(`X-NanoMuse-Device`、`X-NanoMuse-Conversation`),把用自己的 key 跑的轮次传上去(图片先 `PUT /v1/blobs/{sha256}`,再 `POST /v1/turns`;key 和 base URL 从不离开设备;形象工作室和快速测试的调用不是聊天轮次,不算),也能把记录读回来(`GET /v1/turns`、`GET /v1/blobs/{sha256}`,文件只对持有引用的账号打开)。Android、iPhone、桌面端和网页的「数据控制」显示保存了什么(轮次、其中用你自己 key 的、文件、这个中继保留多久),那一个删除把记录和训练轮次一起删掉并报告两者。一个账号每分钟最多传 `RECORD_UPLOADS_PER_MINUTE`(120)个轮次和文件、总共最多持有 `MEDIA_ACCOUNT_MAX_MB`(2048)的文件;想定期清理的中继用 `RECORD_KEEP_DAYS`,`MEDIA_MAX_GB`(50)限制文件总量,最久没用的先走,`RECORD_TURNS=0` [什么都不留([#579](https://github.com/nano-muse/nanoMuse/pull/579)、[#591](https://github.com/什么都不留([#579](https://github.com/nano-muse/nanoMuse/pull/579)、[/issues/591)](https://github.com/nano-muse/nanoMuse/pull/591))。 - **脸的短片跟着脸走,每台设备说明是谁在回答它。** 一台设备上画的短片传上去并记在资料的 `clips` 里(`{mood: {sha256, mime, bytes}}`);另一台设备直接取用而不是自己再渲染一遍,所以一张脸每个账号只做一次动画,每小时的清理会放过资料里点名的短片。每台设备的 hub 握手带着 `device.llm {provider, model}`:账号的模型回答时是 `cloud`,否则是目录里的服务商 id 和模型 id,从来不是 key、base URL 或设置;中继把这两个 id 记在设备那一行,「平台」页显示大家自己配了哪些服务商,隐私政策也写明了。 - **nanoMuse Cloud 只回答 nanoMuse 的 App。** 运营者「控制」页的第六个开关「仅限 nanoMuse 客户端」默认开着:不是 App、桌面端、Python 运行时或网页控制台的软件(号池、SDK、脚本、没换牌子的上游 App)拿账号 key 来聊天,得到 `403 client_not_supported`,正文里写着客户端的名字和一句指向自备 key 的话。成员从哪里来都回答;登录、账号页、同步和 hub 不看这个开关;一次拒绝不花钱,在账号时间线上是一行。中继看的是 `User-Agent`,所以挡住的是老实的程序而不是冒充者;「非 App 流量」页按家族列出被挡回去的。运行时现在在每次模型调用里报上自己的名字(`User-Agent: nanoMuse/<version>`),以前只有一家服务商拿到这个名字,其他人看到的是 OpenAI SDK 的字符串;1.0.6 及更早的 App 都不受影响([#573](https://github.com/nano-muse/nanoMuse/pull/573))。 - **运营者控制台重做了,中继在请求路径之外读数据。** `/app/admin` 是一个小小的 React 应用(`cloud/console`,打进中继的包里,CI 会检查),简体中文和英文,每个筛选和打开的账号都在地址栏里。「实时」每三秒读一次服务商闸门:占用的位子和排队的请求、每个进行中的请求的阶段和时长、按分钟的最近一小时、延迟分位数、对最近十分钟的一句判断。「用量」是日 × 模型的矩阵;「平台」「留存」「屏幕操作」「数据质量」和「非 App 流量」回答旧控制台答不了的问题。它们背后,中继给每次聊天调用写一行(等位子等了多久、到第一个 token 的时间、怎么结束的、提供和调用了哪些工具(只有名字)、是不是在操作屏幕、平台;从来没有对话里的一个字;`CALLS_KEEP_DAYS`,90),并在每条留下的训练轮次旁边存一行形状。控制台的页面、分析和回填走线程里的第二条只读连接;「平台」页在 SQL 里算;计数写入挪出了事件循环,@takiAA 做的([#590](https://github.com/nano-muse/nanoMuse/pull/590)),翻旧的历史页走索引而不是重扫新行,也是 @takiAA([#589](https://github.com/nano-muse/nanoMuse/pull/589))。hub 按字节数帧,拒绝还在进行中的 call id,一个地址每分钟超过 60 条连接或一个账号超过 32 台在线就在验 key 之前以 `4008` 关掉;事件时间线保留 <[inline_block>4(365)天;删除账号不在别人的邀请记录里留痕迹;短信验证码只发大陆号码,两个阿里云服务都是,登录页不管在哪打开都这么说;网页控制台退出登录时把账号的聊天从浏览器存储里带走([#570](https://github.com/nano-muse/nanoMuse/pull/570)、[#582](https://github.com/nano-muse/nanoMuse/pull/582)、[#583](https://github.com/inline_block>4(365)天;删除账号不在别人的邀请记录里留痕迹;短信验证码只发大陆号码,两个阿里云服务都是,登录页不管在哪打开都这么说;网页控制台退出登录时把账号的聊天从浏览器存储里带走([#570](https://github.com/nano-muse/nanoMuse/pull/570)、[#582](https://github.com/nano-muse/nanoMuse/pull/582)、[/issues/583)](https://github.com/nano-muse/nanoMuse/pull/583))。 - **运行时的细节。** 会思考的模型边想边显示,控制台和网页控制台的气泡里都是,不再只在回答之后,@mongo027 做的([#484](https://github.com/nano-muse/nanoMuse/pull/484));Parallel 的 Search MCP 能回答网页搜索,有没有 key 都行,@cutey-none [做的([#566](https://github.com/nano-muse/nanoMuse/pull/566)、[#517](https://github.com/做的([#566](https://github.com/nano-muse/nanoMuse/pull/566)、[/issues/517)](https://github.com/nano-muse/nanoMuse/issues/517));Cheaper Inference 进了自有 key 目录,@aiapienthusiast 加的([#554](https://github.com/nano-muse/nanoMuse/pull/554));技能文件夹在带点号的路径下时文件也列得出来,换服务商时 key 栏留空不再把上一家的 key 发出去,都是 @[z1010223zero-pixel([#572](https://github.com/nano-muse/nanoMuse/pull/572)、[#581](https://github.com/z1010223zero-pixel([#572](https://github.com/nano-muse/nanoMuse/pull/572)、[/issues/581)](https://github.com/nano-muse/nanoMuse/pull/581));运行时调用自己的服务从不走环境代理,CLI 在非 UTF-8 代码页的控制台上也能打印报告,往另一个盘上的额外根目录写文件会报告成它本来的样子,都是 @[Yicheng-Mark([#587](https://github.com/nano-muse/nanoMuse/pull/587)、[#594](https://github.com/nano-muse/nanoMuse/pull/594)、[#595](https://github.com/Yicheng-Mark([#587](https://github.com/nano-muse/nanoMuse/pull/587)、[#594](https://github.com/nano-muse/nanoMuse/pull/594)、[/issues/595)](https://github.com/nano-muse/nanoMuse/pull/595))。Sentinel 把远端 MCP 服务器的工具当作往那台主机发数据,握手或调用卡住时按 `connect_timeout_s` 和 `call_timeout_s` 放弃;给编码智能体下指令是敏感步骤,停止它时连它的帮手一起停;webhook 的 key 不再写进聊天;分享资料时连接器 URL 的 query、user:password 和 fragment 留在设备上;关着远程控制的设备对 `info` 只答名字和系统;hub 客户端关闭前等进行中的调用,连接断了就取消它承载的入站调用,被拒绝后整整等一分钟;邮箱的高水位记在哈希下,忙碌的一次查看不漏邮件;点按、拖动或点击都对照图片检查,`NaN` 会被拒绝;设备触发器能在 App 里创建和测试;Sentinel 的风险等级说明一步在做什么,`strict` 模式下搜索或记住一件事之前会先问。目标证据评估有了一套固定的离线基准,@Longfellow1 做的([#585](https://github.com/nano-muse/nanoMuse/pull/585))。 - **桌面端。** hub 上的设备不能再停止或批准属于别的设备的任务,@hobostay 做的([#567](https://github.com/nano-muse/nanoMuse/pull/567));设置页只在输入了搜索词时才着色,@cutey-none [做的([#569](https://github.com/nano-muse/nanoMuse/pull/569)、[#568](https://github.com/做的([#569](https://github.com/nano-muse/nanoMuse/pull/569)、[/issues/568)](https://github.com/nano-muse/nanoMuse/issues/568))。Gemini 的 key 放在请求头里而不是地址里;「数据控制」有了自己的页面,说明中继保存什么;Mac 上动作前先等胶囊让开;推送失败的行留给下一次,被中继嫌太大的推送对半分开再传;状态栏用 MCP 或连接器工具自己的话说它在做什么;胶囊和光晕窗口带 Content-Security-Policy。桌面端参与记录:聊天请求说明设备,用自己 key 的一轮事后连图传上去(`src/record.ts`),握手说明谁在回答新聊天,这里画的短片传给其他设备。 - **Android。** 一个定时任务一天可以跑几次,@Mola-maker [做的([#558](https://github.com/nano-muse/nanoMuse/pull/558)、[#557](https://github.com/做的([#558](https://github.com/nano-muse/nanoMuse/pull/558)、[/issues/557)](https://github.com/nano-muse/nanoMuse/issues/557));对话备份可以不带文件,被服务器以 1.5 GB 拒收的包只剩几 MB,`nanomuse-backup run` 能从 shell [里做一次备份,定时任务因此能让手机一直有备份([#561](https://github.com/nano-muse/nanoMuse/issues/561)、[#560](https://github.com/nano-muse/nanoMuse/issues/560));动态页同一天里最新一批在最上面([#555](https://github.com/里做一次备份,定时任务因此能让手机一直有备份([#561](https://github.com/nano-muse/nanoMuse/issues/561)、[#560](https://github.com/nano-muse/nanoMuse/issues/560));动态页同一天里最新一批在最上面([/issues/555)](https://github.com/nano-muse/nanoMuse/issues/555));退出登录先取消并等完正在画的脸、正在渲染的短片和正在跑的手,再收起这个账号的数据;超过上限的 hub 帧不解析;动态的日期用线程安全的方式格式化;简体中文和繁體中文通篇用 App 自己的词(服务商 / 服務商、形象、审批)。手机像桌面端一样参与记录(`OwnTurns`),「数据控制」显示数字,那一个删除报告两者。 - **iPhone。** 动态页同一天里最新一批在最上面([#555](https://github.com/nano-muse/nanoMuse/issues/555));手机参与记录(`NanoMuseCloudHeaders.swift`、`NanoMuseOwnTurns.swift`),文案九种语言都有;手机换到另一个账号之后才回来的拉取或推送不再把第一个账号的名字、脸和连接写到第二个账号上;资料库列出的是这个人看得到的聊天的工作区,不是手机上所有会话文件夹,形象工作室的候选、例程唤醒和 hub 的对话映射随账号收起和取回;「同步对话」下面的说明写清谁能读到文字,`PrivacyInfo.xcprivacy` 声明 App 发给 nanoMuse Cloud 的内容;简体中文和繁體中文像 Android 一样称呼「动手操作屏幕」;上游五十一条只有西班牙语翻译的字符串现在九种语言都有([#592](https://github.com/nano-muse/nanoMuse/pull/592))。 - **项目本身。** 隐私政策两种语言都写了记录、每次调用的行、训练轮次旁的形状行,以及 hub 对每台设备保存什么,包括那两个模型 id([#598](https://github.com/nano-muse/nanoMuse/pull/598));一个「Contributors」工作流每晚让十个 README 的贡献者名单保持最新;README 的 News 记下第两千颗星和 Trending 第一;托管中继保留十四天的数据库副本([#597](https://github.com/nano-muse/nanoMuse/pull/597));测试在每个平台上都按 UTF-8 读 iOS 工程和形象源文件,@Yicheng-Mark 做的([#596](https://github.com/nano-muse/nanoMuse/pull/596));容器镜像带 OCI 的 `licenses` 和 `source` 标签。 - **TestFlight。** 第 29 个构建(1.0.6)在 2026-10-24 上传,给了内部测试员;1.0.7 以第 30 个构建上传,送 Apple 测试版审核的是它。审核通过的构建就会给到公开链接,内部测试员在那之前就能用。 ### 升级说明 - **Android 覆盖安装 1.0.6,数据保留。** `nanoMuse-1.0.7-arm64.apk`(Android 8.0+,arm64;versionCode 50)和之前每个版本用同一把签名。校验:`sha256sum -c nanoMuse-1.0.7-arm64.apk.sha256`。不用设置什么:「设置 → 数据控制」现在显示 nanoMuse Cloud 保存了这个账号的什么,那一个删除就能删掉;从这个版本起,你用自己的 key 跑的轮次也进入记录。 - **iPhone 和 iPad 通过 TestFlight。** 第 30 个构建(1.0.7)上传后送审,审核通过就给到公开链接,内部测试员在那之前就能用;在那之前链接装到的是最近一个通过审核的构建。 - **桌面安装包由 CI 从 tag `v1.0.7` 构建。** Mac 的包没有经过公证:第一次在「系统设置 → 隐私与安全性」里点「仍要打开」(或右键 → 「打开」)。Windows 的包没有签名:点一次「更多信息」和「仍要运行」。Linux 上优先用 `.deb`;AppImage 需要 FUSE(没有就加 `--appimage-extract-and-run`)。它们比 APK 晚一点到,`SHA256SUMS-desktop.txt` 列出了所有校验值。Windows 上的 1.0.6 桌面端会在非计费网络上后台下载这个版本,角落菜单给出,真正退出时安装。你的设置原地不动。 - **中继是 0.30.0,1.0.6 的客户端对着它照常工作。** 对用的人来说变化是:0.29 在 2026-10-24 上线之后,中继回答的轮次不论客户端版本都进入记录;只有 1.0.7 的 App 会把用自己 key 跑的轮次补上去。给运维的人:`RECORD_TURNS`(1)、`RECORD_KEEP_DAYS`(0,永久)、`MEDIA_DIR`、`MEDIA_MAX_GB`(50)、`MEDIA_ACCOUNT_MAX_MB`(2048)和 `RECORD_UPLOADS_PER_MINUTE`(120)决定记录的样子,`CALLS_KEEP_DAYS`(90)和 `EVENTS_KEEP_DAYS`(365)决定调用行和时间线保留多久,`CLOUD_GEOIP=0` 关掉地理位置查询;「仅限 nanoMuse 客户端」默认开着,用户用脚本调模型的中继要在「控制」页关掉它;hub 对一个地址每分钟超过 60 条连接或一个账号超过 32 台在线以 `4008 too_many_connections` 关闭;控制台的构建产物(`cloud/console`)提交在 `nanomuse_cloud/console/admin/` 下,随包一起发;`backup.sh` 在数据库副本旁边镜像记录的文件,托管的 unit 保留十四天。细节见 [docs/cloud.md](https://github.com/nano-muse/nanoMuse/blob/main/docs/zh/cloud.md)、[docs/self-hosting.md](https://github.com/nano-muse/nanoMuse/blob/main/docs/zh/self-hosting.md)、[docs/hub.md](https://github.com/nano-muse/nanoMuse/blob/main/docs/zh/hub.md) 和 [cloud/README.md](https://github.com/nano-muse/nanoMuse/blob/main/cloud/README.md)。 - **运行时多问一点,并报上自己的名字。** 每次模型调用带 `User-Agent: nanoMuse/<version>`(槽位 `extra_headers` 里设的 `User-Agent` 仍然有效)。`strict` 模式下 Sentinel 在网页搜索、记住一件事、取消提醒或改写目标之前先问;默认的 `ask` 模式不多问任何东西。`coding` → `send` 像其他敏感步骤一样会问。远端 MCP 服务器算作往外发数据,除非它的设置里写 `egress = false`,`connect_timeout_s`(30)和 `call_timeout_s`(120)限制它的握手和调用。`config.toml` 里别的都不变。 - **去哪下载。** | | | |---|---| | 浏览器 | [demo.nanomuse.dev](https://demo.nanomuse.dev/),模拟手机里的一个 nanoMuse,登录后体验;这是演示,下面的应用才是正式版 | | Android 8.0+,arm64 | `nanoMuse-1.0.7-arm64.apk` | | iPhone、iPad | [TestFlight](https://testflight.apple.com/join/ZHexbDqc),走 Apple 审核的测试版;第 30 个构建(1.0.7)审核通过后即可安装 | | Windows 10+ | `nanoMuse-Desktop-1.0.7-win-x64.exe`(桌面 App,基于 DeepSeek Harness;未签名) | | macOS 12+ | `nanoMuse-Desktop-1.0.7-mac-arm64.dmg` / `-mac-x64.dmg`(或 `.zip`:解压后拖进「应用程序」;未公证) | | Linux x64 | `nanoMuse-Desktop-1.0.7-linux-x64.deb`(优先)/ `.AppImage`(需要 FUSE;没有就加 `--appimage-extract-and-run`)/ `.tar.gz`(解压到任意位置,运行 `./nanomuse-desktop`)| | 已在用 DeepSeek Harness Desktop | `dsh-nanomuse-1.0.7.tgz`,`dsh plugin --profile desktop add …`([怎么装](https://github.com/nano-muse/nanoMuse/blob/main/harness/README.md)) | | Docker | `ghcr.io/nano-muse/nanomuse:1.0.7`(也是 `:latest`),运行时加 8787 端口上的网页控制台 | | 自己的中继 | `bash scripts/self-host.sh`,[docs/self-hosting.md](https://github.com/nano-muse/nanoMuse/blob/main/docs/zh/self-hosting.md) | 实测从国内直接下 GitHub 也不慢;万一下不动,同样的文件十五分钟内会出现在 [nanomuse.cn/dl/v1.0.7/](https://nanomuse.cn/dl/v1.0.7/)。 ### 社区 nanoMuse 开源、免费、非营利。手机号或邮箱登录后有一份起始额度,钱是开发者出的;剩多少、怎么加,账号页里有数。用完可以换成自己的 key,或者用你已经在付费的套餐登录([教程](https://github.com/nano-muse/nanoMuse/blob/main/docs/zh/own-key.md));你加的 key 可以接手聊天和屏幕,图片和短片从一开始就是它的;账号也可以作为模型来源关掉,只留着做同步和管设备。登录后,nanoMuse Cloud 保存你和它的模型的对话记录,从这个版本起也保存你自己的 key 回答的轮次,让你的几台设备看到同样的历史,出了问题也能看完整;你的设备和运营中继的人能读到,别人不能;「数据控制」里一下就能删掉,数据不卖([隐私政策](https://nanomuse.cn/privacy/));账号想删就删。同一个中继也能跑在你自己的服务器上:[docs/self-hosting.md](https://github.com/nano-muse/nanoMuse/blob/main/docs/zh/self-hosting.md)。 谢谢 @mongo027 做的边想边显示([#484](https://github.com/nano-muse/nanoMuse/pull/484)),谢谢 @cutey-none 做的 Parallel [搜索和设置页着色([#566](https://github.com/nano-muse/nanoMuse/pull/566)、[#569](https://github.com/搜索和设置页着色([#566](https://github.com/nano-muse/nanoMuse/pull/566)、[/issues/569)](https://github.com/nano-muse/nanoMuse/pull/569)),谢谢 @Mola-maker 做的一天几次([#558](https://github.com/nano-muse/nanoMuse/pull/558)),谢谢 @hobostay 做的 hub 调用方核对([#567](https://github.com/nano-muse/nanoMuse/pull/567)),谢谢 @z1010223zero-pixel [修的技能文件和换服务商([#572](https://github.com/nano-muse/nanoMuse/pull/572)、[#581](https://github.com/修的技能文件和换服务商([#572](https://github.com/nano-muse/nanoMuse/pull/572)、[/issues/581)](https://github.com/nano-muse/nanoMuse/pull/581)),谢谢 @Yicheng-Mark 修的代理、控制台编码、跨盘写入和 UTF-8 [测试([#587](https://github.com/nano-muse/nanoMuse/pull/587)、[#594](https://github.com/nano-muse/nanoMuse/pull/594)、[#595](https://github.com/nano-muse/nanoMuse/pull/595)、[#596](https://github.com/测试([#587](https://github.com/nano-muse/nanoMuse/pull/587)、[#594](https://github.com/nano-muse/nanoMuse/pull/594)、[#595](https://github.com/nano-muse/nanoMuse/pull/595)、[/issues/596)](https://github.com/nano-muse/nanoMuse/pull/596)),谢谢 @takiAA [做的中继翻页和计数写入([#589](https://github.com/nano-muse/nanoMuse/pull/589)、[#590](https://github.com/做的中继翻页和计数写入([#589](https://github.com/nano-muse/nanoMuse/pull/589)、[/issues/590)](https://github.com/nano-muse/nanoMuse/pull/590)),谢谢 @aiapienthusiast 加的 Cheaper Inference([#554](https://github.com/nano-muse/nanoMuse/pull/554)),谢谢 @Longfellow1 做的目标基准([#585](https://github.com/nano-muse/nanoMuse/pull/585)),也谢谢报告 [#[517](https://github.com/nano-muse/nanoMuse/issues/517)、[#553](https://github.com/nano-muse/nanoMuse/issues/553)、[#555](https://github.com/nano-muse/nanoMuse/issues/555)、[#557](https://github.com/nano-muse/nanoMuse/issues/557)、[#560](https://github.com/nano-muse/nanoMuse/issues/560)、[#561](https://github.com/nano-muse/nanoMuse/issues/561)、[#568](https://github.com/nano-muse/nanoMuse/issues/568)、[#571](https://github.com/nano-muse/nanoMuse/issues/571)、[#580](https://github.com/nano-muse/nanoMuse/issues/580)、[#586](https://github.com/517](https://github.com/nano-muse/nanoMuse/issues/517)、[#553](https://github.com/nano-muse/nanoMuse/issues/553)、[#555](https://github.com/nano-muse/nanoMuse/issues/555)、[#557](https://github.com/nano-muse/nanoMuse/issues/557)、[#560](https://github.com/nano-muse/nanoMuse/issues/560)、[#561](https://github.com/nano-muse/nanoMuse/issues/561)、[#568](https://github.com/nano-muse/nanoMuse/issues/568)、[#571](https://github.com/nano-muse/nanoMuse/issues/571)、[#580](https://github.com/nano-muse/nanoMuse/issues/580)、[/issues/586)](https://github.com/nano-muse/nanoMuse/issues/586) 和 [#588](https://github.com/nano-muse/nanoMuse/issues/588) 的每一位。[路线图](https://github.com/nano-muse/nanoMuse/blob/main/docs/zh/roadmap.md)写着哪里需要帮手,[docs/parity.md](https://github.com/nano-muse/nanoMuse/blob/main/docs/zh/parity.md) 写着每个客户端有什么。[提 issue](https://github.com/nano-muse/nanoMuse/issues/new/choose) · [发 PR](https://github.com/nano-muse/nanoMuse/blob/main/CONTRIBUTING.md) · [Discussions](https://github.com/nano-muse/nanoMuse/discussions) · [Discord](https://discord.gg/bkTySmm28X) · [点个 Star](https://github.com/nano-muse/nanoMuse);觉得有用,点个 Star,让更多人看到。 基于 [OpenMinis](https://github.com/OpenMinis/OpenMinis) 1.13(GPL-3.0),自 2026-09-24 起修改;本版本的完整对应源码是 tag `v1.0.7` 加子模块 `android/deps/proot`([nano-muse/proot](https://github.com/nano-muse/proot));桌面安装包和 Docker 镜像由 CI 从同一个 tag 构建。整个仓库以 GPL-3.0-or-later 发布。nanoMuse 桌面版原样携带 DeepSeek Harness 及其许可证文件;名字里的 *harness* 是普通词,不是 DeepSeek 的名字。聊天入口照 [nanobot](https://github.com/HKUDS/nanobot) 的设计(MIT);桌面端的操作器移植自 [UI-TARS-desktop](https://github.com/bytedance/UI-TARS-desktop)(Apache-2.0;`THIRD_PARTY_NOTICES.md`)。nanoMuse 与 Meta 无关,Muse 是 Meta Platforms, Inc. 的商标。桌面端照着 Muse 应用用起来的样子做,是用过之后写下来的;里面没有 Meta 的任何素材、代码或内容。
Source: README.md, updated 2026-10-25