AstrBot Launcher keeps every instance's Python environment in its own directory
Desktop launcher for guided, isolated AstrBot setup and multi-instance management. / AstrBot 图形化启动器与多实例管理工具。
At a glance
- What is it?
- AstrBot Launcher is a Tauri 2 desktop application in Rust and React that downloads versions, creates and upgrades isolated AstrBot instances, backs them up, and configures the Python runtime automatically. Its README is unusually direct about platform support, listing Windows as the primary target and macOS as unverified on real hardware.
- Who is it for?
- Adopt AstrBot Launcher on Windows if you run several AstrBot instances and want each one to own its environment directory, its own backup and its own upgrade cycle; skip it on macOS, which the project's own support table describes as unverified on real machines. Verify first which address the WebUI binds to, since v0.3.4 and later default to `127.0.0.1` and you need `0.0.0.0` if a phone or tablet has to reach it.
- 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 Rust, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Isolation is the product, not an implementation detail
AstrBot Launcher is described as a desktop application for managing AstrBot graphically, covering version downloads, instance management, data backup and automatic Python runtime configuration. The five feature bullets in the README all point at the same idea.
The first is a zero-intrusion architecture: the runtime environment and dependencies are managed in a separate directory so the system is not polluted. That is what makes the other four features possible. Multiple instances can be created, started, stopped and upgraded because each has its own environment, and instance isolation means instances run independently so environment conflicts cannot happen between them.
Backups are per instance rather than global, so restoring one bot does not roll back the others. The remaining bullet is desktop integration: a system tray presence and start-at-login, so the thing runs after setup without you thinking about it.
The word used for this is isolation, and it is worth being clear about what it does not mean. Instances do not share a runtime, so each one carries a full Python environment and its disk cost. That is the price of not touching the system Python, and on a machine with four instances it is four environments.
The practical audience is someone running AstrBot as a service or a hobby project for a while, where a broken dependency resolution is a bigger problem than disk usage.
The support table rates macOS as unverified
The README publishes a platform support table with three levels, and the honesty in it is unusual enough to quote.
Windows is marked as the primary platform: the main development and testing platform, with complete functionality and issues fixed first. Linux is described as best effort, with usable support but compatibility differences between desktop environments. macOS is described as theoretically workable, compatible by design in the code, but currently lacking sufficient verification on real hardware.
Read that last row carefully. It is a statement that the code should run and that nobody has confirmed it does. If your deployment target is a Mac, this launcher is not something you should put in a production path without testing it yourself.
There is a related note for Windows on ARM. On ARM devices the launcher consistently uses the x86_64 build of the Python runtime, run through the system emulation layer, to stay compatible with existing AstrBot versions. In practice this means an ARM64 machine runs an emulated Python, which is a real performance cost accepted in exchange for not maintaining a native build.
The WebUI bind address moved to loopback in v0.3.4
From v0.3.4 onwards, an instance listens on `127.0.0.1` by default, meaning local access only, and the README gives security as the reason.
The address is changed in the instance management page by clicking the gear icon on an instance, which opens the edit dialog. Five values are offered.
`127.0.0.1` is IPv4 loopback and the default, described as the most secure since only this machine can reach it. `::1` is the IPv6 equivalent. `0.0.0.0` listens on all IPv4 interfaces, letting other devices reach the WebUI through this machine's IP, and the README names the case explicitly: reaching the WebUI from a phone, a tablet or another computer. `::` is the IPv6 equivalent of that. The fifth option is a custom address or hostname bound manually.
This is a good default and a real decision point. A chat bot's WebUI is typically an administration surface, so loopback by default is the correct choice, and the moment you want remote access you are deliberately opening a management interface to your local network with no reverse proxy or authentication layer described in this documentation. Whatever you bind to, put it behind something before you leave the machine on an untrusted network.
Upgrading past v0.3.4 is worth a check on your part, since an instance created earlier may still hold an old address until you edit it.
Three error messages with three different fixes
The FAQ section is more useful than most project FAQs, because each entry shows the exact text you will see.
The first is a DLL load failure, described as common on Windows ARM64. The text is:
ValueError: the greenlet library is required to use this function.
DLL load failed while importing _greenlet: The specified module could not be found.The cause is a missing runtime rather than a broken greenlet, and the fix is installing the Microsoft Visual C++ Redistributable from `https://aka.ms/vc14/vc_redist.x64.exe`. A note explains why the x64 build is the right download even on ARM64: it contains both ARM64 and x64 binaries.
The second is a failed dependency sync, which shows `uv sync failed`, a failure to uninstall a package, a warning that the installation may be incomplete, and a missing RECORD file. The fix is a repair rather than a retry: open Advanced in the leftmost panel, scroll to Troubleshooting, select the instance, and run the operation that empties the virtual environment. This tells you the project manages Python with uv and that its virtual environment can be rebuilt from scratch.
The third is `OS error 5`, access denied, which the README attributes to another process holding a file. The suggestions are closing the program, using an unlock tool, or restarting. It names 360 and Huorong security software tools and the Locksmith utility in PowerToys 0.64 or later, and then adds a sentence most projects would leave out: the project cannot vouch for the safety of third-party unlock tools, so it will not list more.
Mainland China acceleration silently overrides your settings
There is a toggle in Advanced Settings, under General, labelled one-click acceleration for mainland China. Turning it on does not add to your configuration. The README states that the launcher ignores any proxy and source settings you filled in manually and uses preset addresses instead.
The presets cover the whole install path: an npm mirror at `https://npmreg.proxy.ustclug.org/`, a Node.js download mirror at `https://mirrors.ustc.edu.cn/node/`, a PyPI mirror at `https://mirrors.ustc.edu.cn/pypi/`, and mirrors for the `astral-sh/python-build-standalone` and `astral-sh/uv` GitHub releases. AstrBot release downloads go through `https://gh-proxy.com`.
That list tells you a lot about how the launcher works. It installs Python from the python-build-standalone releases, manages it with uv, and ships a Node.js runtime as well as npm packages, so the frontend can be built or run inside the managed environment.
The behaviour to be aware of is the override. If you have configured a corporate proxy or an internal mirror and then enable this toggle, your settings are ignored rather than merged, which can look like your configuration was lost.
The README also handles the mirror question directly. It thanks the maintainers of the mirrors and services, and states that if any mirror operator believes the project should not bundle a given address, they should open an issue saying so and the request will be handled. For users outside mainland China the practical advice is simpler: leave the toggle off and use it only when downloads actually fail.
The slow download answer is a proxy panel, not a config file
The first FAQ entry answers the most common complaint, and its answer is worth reading as a design decision.
For slow downloads or network errors, the instruction is to click Advanced at the far left of the software page and configure a proxy or source as needed. Then it says that if the concepts of proxy and source are unfamiliar, opening the mainland China one-click acceleration option will usually solve most of it.
That is an admission that there is no config file. A launcher managing instances and Python environments would normally expose a settings file or a documented environment variable. Here, the equivalent lives in a panel inside the UI, which means the configuration is not something you can inspect, script or put in version control.
For a desktop tool that is defensible. For a machine you provision repeatedly, in a container image or across a fleet, it means the setup is not automatable and you are clicking through a GUI each time.
The sources being overridden by the acceleration toggle reinforce the point: proxy and source are UI concepts in this application, set in a panel, not values you pass on a command line.
Rust and Tauri on the back, React and Ant Design on the front
The technical stack section names the frontend as React 19, Vite, Ant Design and TypeScript, and the backend as Rust with Tauri 2. The repository layout follows that split, with `src/` holding the frontend and `src-tauri/` holding the Rust side.
The package.json shows the frontend's working assumptions. It is a private package using pnpm, pinned to `[email protected]`, and the Tauri plugins in use tell you what the launcher actually does: autostart for the login item, dialog for file and folder pickers during backup restore, log, opener, process for launching instance processes, updater for self-update, and window-state for remembering where you put the window. State is handled with zustand and routing with react-router-dom, and ansi-to-react with react-markdown is there to render instance logs with colour.
The scripts are split into `fe:` and `cargo:` groups, with `fmt:all` and `check:all` combining them, and clippy runs across all targets. A `.pre-commit-config.yaml` exists at the root alongside ESLint and Prettier configuration.
Two things about provenance. The README states that all source code is public and that the embedded binary `ctrlc_sender.exe` has its source hosted on Codeberg, which is a reasonable thing to do for a component that can signal a running process. And the licence is MIT.
The version is 0.3.11, with releases v0.3.9 on 2026-07-14, v0.3.10 on 2026-08-15 and v0.3.11 on 2026-09-02, and the last push was on 2026-09-30.
Editorial conclusion
Adopt AstrBot Launcher on Windows if you run several AstrBot instances and want each one to own its environment directory, its own backup and its own upgrade cycle; skip it on macOS, which the project's own support table describes as unverified on real machines. Verify first which address the WebUI binds to, since v0.3.4 and later default to `127.0.0.1` and you need `0.0.0.0` if a phone or tablet has to reach it.
Frequently asked questions
Which operating systems does AstrBot Launcher support well?
Windows is the primary development and testing platform with full functionality. Linux is best effort with compatibility differences between desktop environments, and macOS is compatible in code but lacks sufficient verification on real hardware.
How do I reach the AstrBot WebUI from my phone?
Open the gear icon on the instance in the instance management page and change the listen address from the default `127.0.0.1` to `0.0.0.0` so the WebUI is reachable through this machine's IP on the local network.
What should I do if I see DLL load failed while importing _greenlet?
Install the Microsoft Visual C++ Redistributable from `https://aka.ms/vc14/vc_redist.x64.exe`. The x64 build is the correct download on Windows ARM64 as well, because it contains both ARM64 and x64 binaries.
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/astrbotdevs-astrbot-launcher)Was this useful?