Verify downloads against SHA256SUMS (minisign-signed: .minisig).
curl -fsSL https://nemu-x.github.io/SlothClash/apt/key.gpg | sudo tee /usr/share/keyrings/slothclash.gpg >/dev/null echo "deb [signed-by=/usr/share/keyrings/slothclash.gpg] https://nemu-x.github.io/SlothClash/apt ./" | sudo tee /etc/apt/sources.list.d/slothclash.list sudo apt update && sudo apt install sloth-clash
sudo dnf config-manager --add-repo https://nemu-x.github.io/SlothClash/rpm/slothclash.repo sudo dnf install sloth-clash
yay -S sloth-clash-bin # or: paru -S sloth-clash-bin
Or a one-off install without an AUR helper:
sudo pacman -U https://github.com/Nemu-x/SlothClash/releases/latest/download/sloth-clash-linux-amd64.pkg.tar.zst
> ℹ️ You will be asked once to reinstall the helper service after this update. This release needs helper service 2.6.0, and the core changed; on Windows the installer handles it, on macOS and Linux click the banner and accept the prompt.
🔓 Desync (experimental): YouTube, Discord and your sites without a VPN
X-Desync-Desktop-Mode: off | deny on an HTTPS subscription switches Desync off for it or forbids it; a provider cannot switch it on. Every header the client sends and reads is now documented on the wiki (*Subscription Headers*).🛰️ REALITY: works with current Xray servers
X25519MLKEM768 key share) and against servers that set minClientVer. The core now learns per server which handshake it needs, sends a current client version, and offers reality-mlkem / reality-client-version settings for the stubborn cases.firefox and safari fingerprints now send current Firefox 148 / Safari 26.3 hellos with the post-quantum share, the same ones genuine Xray clients send, instead of silently switching to Chrome's. Checked against Xray 24.12.31 up to 26.10.29.🧩 More of your panel's configs just work
type: chain groups, per-proxy REALITY client version, mldsa65-verify, Xray fingerprint names, comma-separated pins and names, Xray-style ECH, OpenVPN server identity, QUIC disable-mtu-discovery, tcp-connect-timeout, sniffer.skip-threshold, dns.serve-expired. The subscription User-Agent now lists these capabilities, so panels can hand them out only to clients that support them.🏢 Corporate VPN
📺 Remote control for paired devices
🔧 Smaller improvements and fixes
v1.19.33, built with our patch series in every release.Full Changelog: https://github.com/Nemu-x/SlothClash/compare/v0.9.4...v0.10.0
> ℹ️ You may be asked once to reinstall the helper service after this update. The privileged service only spawns cores whose hash it has pinned, and the core changed — on Windows the installer re-pins it silently, on macOS click the banner and accept the prompt.
🐧 Linux: the helper service and TUN mode now actually work
pkexec), installs a systemd unit that only your user's group can reach, pins the shipped core by hash exactly like on the other platforms, and the app routes the core through it. TUN mode is then available; Proxy mode keeps working without the helper as before.sudo … command to run once instead; the files it points at are kept in the app data directory, not in /tmp (which is often mounted no-exec).📦 Linux AppImage is now self-contained and updatable
webkit2gtk-4.1 first (the old one needed it from the system). It carries update information, so AppImageUpdate and compatible tools can fetch new releases as deltas, and ships AppStream metadata for app stores. Asset names follow the AppImage convention: SlothClash-x86_64.AppImage and SlothClash-aarch64.AppImage (the old SlothClash-linux-*.AppImage links stop working with this release). Submitted to the AppImage catalog.🐛 "Reinstall the helper service" banner did not appear when it was needed — fixed
HTTP 503 … does not match any pinned hash error on Connect and no hint what to do. The app already knew this meant "the helper service is pinned to the previous core, reinstall it", but that flag only reached the banner on the next app start. The banner now appears the moment the condition is detected — at startup, before you even press Connect, or right after a failed connect — with the one-click reinstall.🔧 Subscription requests now identify the real core and app version
User-Agent on subscription downloads is now clash.meta/v<core> SlothClash/<version> (for example clash.meta/v1.19.32 SlothClash/0.9.4) instead of a hard-coded clash.meta/mihomo; SlothClash/1.0. Panels that pick which protocols to hand out by the client's core version (mikan, among others, gates mieru, sudoku, trusttunnel, shadowquic and Hysteria2 Gecko on it) now receive the right answer. The leading clash.meta/ is kept on purpose: Marzban and Remnawave select the clash-meta output format by that prefix. If a build has no core version baked in, the UA falls back to clash.meta/mihomo SlothClash/<version> rather than inventing a number.v1.19.32. Fixes: effective MSS now accounts for TCP options, a race in AnyTLS idle-session cleanup, OpenVPN P_DATA_V1 AEAD additional data, sing-mux half-close, a nil dereference when an H2 connection setup is cancelled, mieru inbound UDP user metadata, EasyTier restart after a silent overlay failure, and HWCap detection on Linux. New: load-balance hash-key to pin a session on the inbound user, congestion-controller option for TUN, and the core's own mips userspace stack (its new upstream default). Sloth Clash keeps gvisor as its default TUN stack, the one proven on wintun under UDP load; mips is now an explicit choice in the TUN settings dialog for those who want to try it.Full Changelog: https://github.com/Nemu-x/SlothClash/compare/v0.9.3...v0.9.4
> ℹ️ You may be asked once to reinstall the helper service after this update. The privileged service only spawns cores whose hash it has pinned, and the core changed — on Windows the installer re-pins it silently, on macOS click the banner and accept the prompt.
✨ The tray icon now shows what is actually running
🐛 "Start minimized", "Auto-connect on startup" and "Close to tray" could silently switch themselves back on — fixed
v1.19.31. Fixes in the core: Hysteria v1 UDP handling restored, Hysteria2 UDP sessions no longer leak when a connection closes, IPv6 URL parsing in XHTTP, a nil-pointer crash in WireGuard initialisation, a VLESS decryption cleanup panic, AmneziaWG v3 RandomPaddingAddition / DisableCookies, OpenVPN tls-auth HMAC digest, DomainSet wildcard matching with overlapping rules, and a batch of "connection not closed after error" leaks across outbounds (DoQ, mKCP, Snell, KCPTun, TUIC). New: EasyTier outbound, stack: mips for TUN, identity-secret for ZeroTier. Also lower memory use in gVisor and the config converter, and updated Tailscale (1.102.3), Mieru and Sudoku (0.5.0) libraries. Config generation and the runtime pipeline were verified against the new core.systemctl and then fail with a permission error nobody could act on. It now says that the helper service is not wired on Linux yet and that Proxy mode is the supported path, instead of pretending to install something the app would never use. Privileged TUN on Linux is tracked as its own change.Full Changelog: https://github.com/Nemu-x/SlothClash/compare/v0.9.2...v0.9.3
> ℹ️ You may be asked once to reinstall the helper service after this update. The privileged service only spawns cores whose hash it has pinned, and the core changed — on Windows the installer re-pins it silently, on macOS/Linux click the banner and accept the prompt.
✨ JavaScript config override — the escape hatch the other editors can't cover
function main(config, ctx) that rewrites its generated configuration before the core sees it. It is for everything the extend-config / proxy-groups / rules editors cannot express, because they are declarative and this is not: rename every node matching a pattern, build one group per country, drop nodes by name, apply a tweak only in TUN mode. Open it from a profile's context menu → Script (JS).console.log. It writes nothing and does not touch the running connection, so it is safe to press while connected.docs/SCRIPT_OVERRIDE.md.🐛 Sites felt slower than they should — dead IPv6 addresses handed to apps, fixed
fc00::/7 — a very common default), the IPv6 addresses we handed out for every domain had no route into the tunnel. Apps still tried them first: the browser burned a full connection timeout on the IPv6 attempt of every dual-stack site before falling back to IPv4, which showed up as pages (YouTube, Google Fonts and friends) taking seconds to pull assets, with nothing in the logs. Measured: curl -6 hung for 21 s where curl -4 finished in 0.27 s. We now drop the IPv6 fake-address pool whenever the profile's own routing rules would leave it unreachable, so apps go straight to the working path. IPv6 itself stays enabled and still travels inside the tunnel — nothing leaks.🐛 A broken dns: section in a hand-edited profile was silently swallowed
v1.19.30. Brings a security fix in the core's Go TLS stack (CVE-2026-56862) and a TUN fix where hijacked DNS replies could be sent zero-filled or stale. New protocol coverage lands with it: ZeroTier outbound, AmneziaWG 3.0/3.1, an ip-stack option for WireGuard/OpenVPN/MASQUE/ZeroTier, H2C and QUICv2 sniffing, handshake-timeout for Hysteria2, client-metadata for AnyTLS and rate-limit for the restls listener. Config generation and the runtime pipeline were verified against the new core.Full Changelog: https://github.com/Nemu-x/SlothClash/compare/v0.9.1...v0.9.2
🐛 Auto-connect on startup could hang on "connecting" — fixed
Full Changelog: https://github.com/Nemu-x/SlothClash/compare/v0.9.0...v0.9.1