Desktop configuration utility for vape battery mods running the ArcticFox firmware — a community fork of hobbyquaker's decade-old Electron arcticfox-config, rebuilt as a Tauri 2.x app packaged as a Flatpak.
Over the original it adds: a built-in live Device Monitor, system light/dark theme detection, window scaling, working Fahrenheit selection with correct temperature scaling, richer tooltips, device auto-reconnect, a "Lite" appearance mode with all five ArcticFox skins, STM32-line device support, and a Firmware Editor (inspect, patch, and flash firmware images, with emergency recovery).
Pre-built bundles are on the releases page and in builds/ after building from source.
flatpak install --user builds/cloudy-af-<version>.flatpak
flatpak run org.cloudy.afOr from the local Flatpak repository:
flatpak remote-add --user --no-gpg-verify cloudy-af-repo flatpak/repo
flatpak install --user cloudy-af-repo org.cloudy.afThe Flatpak requests --device=all, but HID access still needs udev rules for unprivileged users. Install them, then unplug and reconnect your device:
sudo cp flatpak/50-cloudy-af.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm triggerAlso produced by scripts/build-appimage.sh into builds/ and attached to releases:
Cloudy_AF-<version>-x86_64.AppImage— portable, FUSE3-only systems OKCloudy AF_<version>_amd64.deb— Debian/UbuntuCloudy AF-<version>-1.x86_64.rpm— Fedora/openSUSE
These get less testing than the Flatpak and may misbehave (known: WebKit GPU crashes on some NVIDIA systems — see Debug below).
chmod +x builds/Cloudy_AF-<version>-x86_64.AppImage
./builds/Cloudy_AF-<version>-x86_64.AppImage
# or
sudo apt install ./builds/Cloudy\ AF_<version>_amd64.deb
sudo dnf install ./builds/Cloudy\ AF-<version>-1.x86_64.rpmA manual GitHub Actions workflow (.github/workflows/macos-build.yml) builds a .dmg from source using Homebrew. It works but is tested rarely — expect rough edges, and HID access needs manual permission grants (below). macOS devs welcome.
brew install node@22 rust
# put node@22 on PATH (Apple Silicon: /opt/homebrew/opt/node@22/bin; Intel: /usr/local/opt/node@22/bin)
npm install
npm run sidecar:build
npm run tauri:build -- --bundles dmgThe .dmg lands in src-tauri/target/release/bundle/dmg/. On first launch: right-click → Open to pass Gatekeeper, then grant Input Monitoring in System Settings → Privacy & Security.
Full instructions, including the mandatory tauri/custom-protocol feature flag and the gotchas, are in BUILDING.md. Short version:
npm install
npm run tauri:dev # development
npm run build # rebuild dist/
# then cargo build --release --features tauri/custom-protocol in src-tauri/
# then flatpak-builder per BUILDING.mdStart the app and connect your ArcticFox device — it is detected automatically and its configuration downloaded. Edit profiles, power curves, TFR tables, and settings in the tabs, then Upload to write back.
All ArcticFox-compatible devices are supported (Joyetech eVic/Cuboid/eGrip, Eleaf iStick, Wismec Presa/Reuleaux, Vaporflask, and friends): they share the Nuvoton HID bootloader interface (VID 0x0416 / PID 0x5020) and are told apart by the Product ID string in the device dataflash.
ArcticFox update packages (af_*.bin, 2018+) are AES-128-CBC encrypted ("VandalProof"): the first 16 bytes are the IV, PKCS7 padding, key = the ASCII bytes of FA89412D87B0EFD9. Recovered from NFirmwareEditor's obfuscated loader; full write-up in docs/vandalproof-encryption.md. The app decrypts in-app; packages can also be flashed as-is (the on-device LDROM updater decrypts them).
If no device is detected, see USB permissions above.
sudo dnf install webkit2gtk4.1 # Fedora / RPM
sudo apt install libwebkit2gtk-4.1-0 # Debian / UbuntuTry software rendering first (keeps the WebKit sandbox):
./builds/cloudy-af --software-rendering
flatpak run --env=WEBKIT_FORCE_SOFTWARE_RENDERING=1 org.cloudy.af
WEBKIT_FORCE_SOFTWARE_RENDERING=1 ./builds/Cloudy_AF-<version>-x86_64.AppImageLast resort — disable the WebKit sandbox entirely:
./builds/cloudy-af --disable-webkit-sandbox
flatpak run --env=WEBKIT_DISABLE_SANDBOX_THIS_IS_DANGEROUS=1 org.cloudy.afsrc/– Frontend (HTML/CSS/JS, Vite, jQuery, Photon-style CSS)src-tauri/– Tauri Rust hostsidecar/– Node.js HID bridge (node-hid + arcticfox npm module)flatpak/– manifest, desktop entry, appdata, udev rulespublic/– static assets (i18n for 17 locales, default config)
Key deviations from the original are marked with DEVIATION comments in index.html, src/renderer.js, src-tauri/src/lib.rs, sidecar/hid-bridge.js, sidecar/afcfile.js, and sidecar/patches/arcticfox+11.0.3.patch. Highlights:
- Tauri 2.x shell replacing Electron; Flatpak packaging with bundled Node sidecar
- Adaptive light/dark UI, window scaling, Fahrenheit by default with correct unit scaling
- Live Device Monitor with pause and hover/click point values (NToolbox-style)
- Device auto-reconnect; autofire in multi-click/shortcut actions
- Lite appearance mode; all five ArcticFox skins; NToolbox-style active-mode Layout page
- Rich hover tooltips with real vape-function descriptions, in 17 locales
- Firmware Editor: open/edit/flash ArcticFox images (all encryption schemes incl. VandalProof) with emergency recovery and "Repair Product ID"
- Support for all 47 ArcticFox Product IDs (Joyetech, Eleaf, Wismec, Vaporflask…), plus the STM32 line (Rim C family)
Planned: unique device timeout/charge animations (in progress — proven hard).
Clone, npm install, npm run tauri:dev. Issues and PRs welcome.
- https://github.com/hobbyquaker/arcticfox-config – original Electron app
- https://github.com/hobbyquaker/arcticfox – HID communication module
- https://github.com/hobbyquaker/arcticfox-monitor – device monitoring tool
- https://github.com/TBXin/NFirmwareEditor – NFE Team editor this work is based on
Based on the work of NFE Team and hobbyquaker:
- https://github.com/maelstrom2001/ArcticFox
- https://github.com/TBXin/NFirmwareEditor
- https://github.com/hobbyquaker/
This software uses Highcharts, free only for non-commercial use.
Kimi Code and local models assisted in the rewrite. Images edited with OSS tools.
Accepting donations, not expecting; I've used WinRAR.
- BTC bc1qpfq3c6hdflafccqmsl4v7ussvlw8pazpwez09m
- XMR 85YdUQXSMTgTeySZCyJjh9QTnzevgCHtZA6dhmFYMZqtE529pUZ5K8ceEC2ysaV2o4CuMuYtoaYPYdJfHYGX7m1WMgyM53i
GPLv3 — Copyright (c) Sebastian Raff. Flatpak packaging and rework by OneButtFarting.


