CLI tool
juewuy/ShellCrash avatar
juewuy/ShellCrash

ShellCrash: A shell-based manager for mihomo and sing-box on routers and Linux

ShellCrash is a shell-native client for sing-box and mihomo that helps users switch kernels and manage proxy-related workflows through concise commands.

13,276 stars1,865 forksShellGPL-3.0

At a glance

What is it?
ShellCrash is a GPL-3.0 shell script that installs, switches, and manages mihomo or sing-box kernels on OpenWrt, Padavan, and standard Linux. It targets users who prefer terminal workflows over GUI clients, but its dependency list and update cadence deserve scrutiny before adoption.
Who is it for?
Adopt ShellCrash if you run OpenWrt, Padavan, or a minimal Linux distribution and want a single text-menu tool to install, switch, and update mihomo or sing-box kernels, especially when you already use crontab and iptables or nftables. Do not adopt it if you need a graphical interface, if your device lacks root access, or if you cannot accept that the default branch is 'dev' and that releases appear irregularly (1.9.3 to 1.9.4 took over a year).
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly Shell, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 14, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What ShellCrash actually does

The intended audience is clear from the device list: OpenWrt-based routers, Xiaomi and Netgear devices, Padavan in conservative mode, ASUS/Merlin firmware, and standard Linux distributions like Debian, CentOS, Armbian, and Ubuntu. Docker environments are mentioned as compatible, with a separate image on Docker Hub. This is not a tool for desktop users who want a system tray icon. It is for people who are comfortable with SSH, root privileges, and a text-based menu.

How the script fits together: kernels, subscriptions, and dashboards

One design choice stands out: the dashboard is optional and installed on demand. That keeps the core script lightweight, but it also means the user must understand when to use the shell menu versus the web UI. The README does not explain the exact relationship between the two, so expect to learn by trial.

Installation: multiple mirrors, one command pattern

The command examples are copy-paste ready, but note the use of '--no-check-certificate' in the wget commands. That disables SSL verification, which is a security trade-off. The README does not explain why this is necessary, but it suggests the target devices may have outdated CA bundles. You should be aware of that before running the installer.

The interactive menu and command-line flags

The dependency table adds context for what the menu can do. Without iptables or nftables, the script runs in Pure Mode, which likely means it only sets up local proxy for the device itself, not for other clients on the network. Without crontab, scheduled updates silently do nothing. That is a failure mode worth noting: the script will not warn you if crontab is missing; it just skips the feature.

What the README does not tell you

The release history shows a gap: 1.9.1 from December 2024, 1.9.3 from December 2025, and 1.9.4 from February 2026. There is no 1.9.2 in the supplied list, and the jump from 1.9.3 to 1.9.4 was only about six weeks, while the gap from 1.9.1 to 1.9.3 was a full year. That irregular cadence suggests maintenance is opportunistic, not on a schedule. For a tool that manages network security software, you should check the changelog before each upgrade to see what changed.

Limitations and wrong-tool cases

A more subtle issue is the 'dev' default branch. The README installation commands point to the 'dev' branch, not a tagged release. That means you are installing the development version by default. While the releases exist, the default install path is the unstable branch. That is a deliberate choice, but it contradicts the goal of a stable proxy setup. If you want a fixed version, you must modify the URL to point to a release tag, but the README does not document that. This is a genuine trap for new users.

Alternatives and how they differ

The obvious alternative is using mihomo or sing-box directly, with your own scripts or systemd units. That approach gives you full control over the config format and startup behavior, but it requires you to write and maintain your own update and switching logic. ShellCrash automates those steps, but it also hides the details, which can be a problem when you need to debug a config issue. Another alternative is a GUI client like Clash for Windows or Clash Verge, but those are desktop applications and do not run on an OpenWrt router. A closer alternative is OpenClash, which is an OpenWrt package that manages mihomo with a LuCI web interface. OpenClash is deeper integrated into OpenWrt's firewall and init system, but it is OpenWrt-only and requires the LuCI web server. ShellCrash is lighter and works across more firmware types, but it lacks the tight OpenWrt integration. The choice depends on whether you want a web UI and OpenWrt-specific features, or a shell script that works on a broader range of devices.

Maintenance, license, and upgrade cost

The dependency table lists crontab as low necessity, but if you rely on scheduled config updates, it becomes mandatory. The README does not explain how to set up the scheduled tasks beyond saying they exist. You will need to use the interactive menu to configure them, and that assumes the menu is discoverable. Overall, the maintenance burden is moderate: the script handles updates, but you must stay alert to release notes and mirror availability.

Editorial conclusion

Adopt ShellCrash if you run OpenWrt, Padavan, or a minimal Linux distribution and want a single text-menu tool to install, switch, and update mihomo or sing-box kernels, especially when you already use crontab and iptables or nftables. Do not adopt it if you need a graphical interface, if your device lacks root access, or if you cannot accept that the default branch is 'dev' and that releases appear irregularly (1.9.3 to 1.9.4 took over a year). Before deploying, verify that your firmware's init system and firewall tools match the script's assumptions, test the local installation path if online mirrors are blocked, and check the changelog for breaking changes between kernel versions.

Official sources

  1. Official README
  2. Project repository
  3. Release notes
Community notes

Community notes