Sakura Desktop Pet: a character pack decides the voice, plugins decide the abilities
一个通用桌宠 Agent 框架,能导入自定义角色包,并让角色感知屏幕内容与系统事件,根据用户当前场景主动做出自然反应。
At a glance
- What is it?
- A Python desktop pet framework whose distinguishing claim is that the character perceives screen content and system events on her own, with models, voice and long-term memory arriving as plugins rather than as built-in code.
- Who is it for?
- Sakura Desktop Pet fits someone who wants a character on the desktop rather than a chat window, and who is comfortable installing a model endpoint and a handful of plugins before anything responds. It does not fit a headless or server use, since screen awareness, expression playback and the character card are the point of the project and there is no library-only surface described.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 3, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The character card picks the voice, plugins pick the abilities
Sakura draws the character you picked on the desktop, and a character card decides how that character talks. The character arrives as a .char pack imported on first launch, and the built-in character workshop is where you edit persona, expression assets, theme and voice assets, with the bubble, input bar and window material adjustable on top of that. None of the intelligence is in the base app. Models, voice and long-term memory all arrive through plugins, and the named optional ones are GPT-SoVITS, Genie and Mem0, installed and then configured individually. Web search and page reading are the exception, since those are built in.
Screen awareness is what turns a mascot into an agent
Ordinary desktop pets wait to be clicked. With screen perception enabled, Sakura can start a conversation on her own based on what is on the screen, and that is the mechanism the project is built around rather than a bolt-on. Inside a chat you also get text and image messages, a region screenshot you select yourself, the proactive prompt, plus segmented subtitles and expression playback so the character reacts while it talks. The behaviour is split across two modes that the documentation separates deliberately: manual screenshot on one side, proactive awareness and context handling on the other, all under docs/userdocs/CHAT_SCREEN_AND_CONTEXT.md. Which screen APIs are used for capture, and how often the screen is sampled, are not described on the project's front page.
Packaged builds for Windows and macOS, source for Linux
Getting it onto a machine means downloading a build from the Releases page, and the platform decides the shape of that step. A Windows Setup installs directly, while the Portable ZIP is unzipped and run as sakura.exe. macOS has its own guide covering Apple Silicon and Rosetta, SSL certificates and GPT-SoVITS voice. Linux x64 is the exception and installs from source, with docs/userdocs/LINUXUX_SETUP.md covering Ubuntu 24.04, WebKitGTK and downloading the Runtime. There is no pip install line anywhere. Running from source means the three packages in requirements.txt, which are uv, PyYAML and py7zz, and pytest.ini plus a tests/ directory sit at the root for the project's own checks.
The documentation table is the honest feature list
Eleven documents are indexed in a table, and reading their titles tells you more about the project's shape than the feature bullets do. docs/userdocs/API_CONFIG.md covers Base URL, API Key, model selection and relay configuration, which is what you fill in on first launch. docs/userdocs/REMOTE_DIAGNOSTICS_AND_TELEMETRY.md is the one worth reading before anything else, because it covers the default state, what is sent, how to turn it off, the diagnostic ID and the retention period. docs/devdocs/TECHNICAL_README.md holds the runtime architecture, startup flow, project structure and configuration items, while SAKURA_PLUGIN_SDK.md is the entry point for writing a plugin. The index itself, docs/README.md, sorts everything into user documents, dev documents, spec, ADR, plan, record and archive.
The preview section on the page shows nothing
A section titled 效果预览 sits between the introduction and the quick start, and the centred div under it is empty on the published page, so the one place a reader would expect to see the screen awareness and expression playback actually look has nothing in it. What survives instead is the project's origin note: it is named Sakura after someone the author calls 学姐, and the surrounding paragraph is the author's joke about being turned into that character's shape after finishing a recent release. The English version of the README is not at the root either, it lives at docs/README.en.md, while the root README is in Chinese.
Browser control is borrowed code, and the credit is itemised
The desktop pet interaction model and the plugin design were referenced from Shinsekai and its plugin ecosystem, and the browser piece is more specific than an acknowledgement. The optional plugin at plugins/optional/playwright_browser contains code and modifications based on shinsekai-playwright-browser, MIT licensed, Copyright 2026 Chihiro, adapted to provide Playwright browser automation. So the browser path is a port of someone else's plugin, while the project's own license is MIT with Copyright 2026 Rvosy. Browser control and a mobile web client both arrive as plugins on top of that base, and MCP base components are provided for service plugins to use.
app, desktop, services, harness, packaging
The repository root shows how the pieces are split: app/, desktop/, services/, plugins/, tools/ and scripts/ for code, harness/ and infra/ for test and infrastructure work, packaging/ for builds, docs/ for the document tree above, plus AGENTS.md, VERSION and pytest.ini. That layout matches a project shipping packaged desktop builds rather than a library, which is also why requirements.txt holds three packages instead of a dependency graph: the interesting dependencies live in the plugins. Release cadence is quick and recent, with v1.1.2 on 15 September 2026, v1.2.1 on 22 September and v1.3.0 on 30 September, and the last push to main dated 1 October 2026. Nothing on the page marks the project archived.
Editorial conclusion
Sakura Desktop Pet fits someone who wants a character on the desktop rather than a chat window, and who is comfortable installing a model endpoint and a handful of plugins before anything responds. It does not fit a headless or server use, since screen awareness, expression playback and the character card are the point of the project and there is no library-only surface described. Before you start, read docs/userdocs/REMOTE_DIAGNOSTICS_AND_TELEMETRY.md, which is the one page covering what the app sends, how to switch it off and how long it is kept, and check docs/userdocs/API_CONFIG.md for the Base URL, API Key and model selection you will be asked for on first launch.
Frequently asked questions
What is Sakura Desktop Pet?
It is a desktop pet agent framework written in Python that draws a character you choose on the desktop, lets a character card decide the dialogue style, and can start conversations on its own from screen content once screen perception is enabled. Models, voice and long-term memory reach it through plugins.
How do I install Sakura Desktop Pet on Linux?
There is no pip install line. Linux x64 installs from source following docs/userdocs/LINUX_SETUP.md, which covers Ubuntu 24.04, WebKitGTK and downloading the Runtime, and the repository's requirements.txt lists uv, PyYAML and py7zz. Windows and macOS users download packaged builds from the Releases page instead.
Which optional plugins does Sakura Desktop Pet support?
Voice and memory are plugins rather than built-in features, and the named optional ones are GPT-SoVITS, Genie and Mem0, installed and configured separately. Browser control and the mobile web client also come through plugins, with Playwright automation adapted from shinsekai-playwright-browser, while web search and page reading ship in the base app.
Does Sakura Desktop Pet send diagnostics anywhere?
One documentation page, docs/userdocs/REMOTE_DIAGNOSTICS_AND_TELEMETRY.md, covers the default state, what gets sent, how to switch it off, the diagnostic ID and the retention period. The front page itself only points at that page and does not describe telemetry in its own words.
What is a .char file in Sakura Desktop Pet?
A .char file is a character pack, and you import one on first launch. The built-in character workshop edits the persona, expression assets, theme and voice assets inside it, and the resulting character card is what decides the dialogue style.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/rvosy-sakura)