A fast, secure, lightweight and pluggable desktop toolbox for developers and power users
Built with Tauri 2 and Rust: all data is processed locally in Rust, every tool is an independent plugin, and the modern interface supports light / dark themes, Chinese and English, and in-app updates.
English · 简体中文
- Your data stays local: parsing, formatting, encoding, hashing and file I/O all run in Rust. The frontend only renders results, and nothing leaves your machine.
- Everything is a plugin: every tool, built-in ones included, is an independent plugin with its own manifest, Rust backend, React UI and translations. The host hard-codes no tools.
- Live feedback for long tasks: heavy work such as hashing large files runs as a background task with live progress and logs, and can be cancelled at any time. The task center keeps the history and logs.
- Modern interface: semantic design tokens, light / dark themes, custom components and window controls, a ⌘K command palette, favorites and recently used tools.
- Clipboard-aware ⌘K: open the command palette and it recognizes what you copied (JSON, JWT, timestamps, UUIDs, colors, curl commands, cron expressions, IPs, SQL, spreadsheet tables, certificates, screenshots and more) and offers the right tool, opened with the content already filled in. Detection runs locally in Rust and can be turned off.
- Quick launch: a global shortcut (⌥Space / Alt+Space by default, configurable) brings ToolForge forward with the command palette from any app; background mode keeps it in the menu bar or system tray.
- Internationalized: Simplified Chinese and English; plugins ship their own translations, and Rust only returns error codes that the UI translates.
- On-demand resources: large assets such as AI models are downloaded only when a tool needs them, from verified sources with resume support, and can be removed at any time.
- In-app updates: delivered through GitHub Releases with signed update packages; versions can be skipped and automatic checks turned off.
- SQLite only for local storage: preferences, favorites, usage and task history are stored in a local database.
| Tool | Description |
|---|---|
| JSON Formatter | Format, minify, validate, escape / unescape, tree view and structural diff; JSON5 support; errors pinpointed to line and column; tree view loads large documents on demand |
| XML Formatter | Format, minify and validate; keeps comments, CDATA and declarations; unclosed or mismatched tags reported with line and column |
| SQL Formatter | Beautify and minify; keyword casing, indentation and compact mode; generic SQL / PostgreSQL / SQL Server dialects |
| Regex Tester | Live match and group highlighting with replacement preview; lookaround, backreferences and named groups; common pattern presets |
| Timestamp | Seconds / milliseconds / microseconds / nanoseconds detected automatically; multiple time zones side by side; date strings to timestamps; live clock |
| UUID Generator | Batch generate UUID v1 / v3 / v4 / v5 / v7, ULID and NanoID; inspect versions and embedded timestamps |
| Hash | MD5, SHA-1, SHA-2, SHA3, SM3 and CRC32; live text hashing and HMAC with verification; drop files to hash them in a background task with live logs |
| Encoder | Base64 / Base64URL / Base32 / Hex, URL (component, full, form), HTML entities and Unicode escapes in both directions; files to Base64 or Data URIs |
| JWT Decoder | Decode headers and payloads, check expiry, verify HS / RS / PS / ES / EdDSA signatures and sign new tokens |
| Certificate Viewer | Inspect PEM / DER certificates and chains (names, SANs, validity, key, usages, fingerprints), or fetch the chain a server presents and verify it with the system trust store, showing the TLS version and cipher |
| Encryption | AES (GCM / CBC / CTR / ECB), SM4 and ChaCha20-Poly1305 with hex, Base64, text or PBKDF2 keys; RSA key generation, OAEP / PKCS#1 encryption and PKCS#1 / PSS signatures, compatible with OpenSSL |
| Text Tools | 13 naming styles and letter cases; trim, dedupe, sort (natural, by length), shuffle and number lines; character, word, CJK and reading-time statistics |
| Character Inspector | List every character with code point, name, category, script and UTF-8 / UTF-16 bytes; find invisible characters, Trojan Source direction controls, lookalikes and mixed scripts; clean and normalize text; search characters by name or code with escapes for common languages |
| Text Diff | Line, word or character diff with side-by-side highlighting, ignore case / whitespace and unified patch export |
| Batch Rename | Rename many files with chained rules (replace / regex, insert, remove, case, numbering, templates with dates and EXIF capture time), a live conflict-checked preview, safe two-phase renaming and undo |
| Archive Manager | Browse, preview and extract ZIP, 7z, TAR and tar.gz / bz2 / xz / zst archives (encrypted ZIP and 7z included) with path-traversal protection, and create ZIP, 7z, tar.gz or tar.xz archives with AES-256 passwords — all in pure Rust |
| Format Converter | JSON ⇄ YAML ⇄ TOML ⇄ CSV with automatic detection, preserved key order and CSV delimiter / header / type options |
| Base Converter | Arbitrary-precision integers in bases 2–36, prefix detection, two's complement for 8–128 bits and a clickable 64-bit view |
| Color Converter | HEX / RGB / HSL / HSV / HWB / CMYK / Lab / OKLCH, WCAG contrast checks, tints, shades and harmonies |
| Password Generator | Cryptographically secure passwords with per-type options and exclusions, plus a local strength and crack-time check |
| SSH Keys | Generate Ed25519, ECDSA and RSA keys in the OpenSSH format with passphrases, inspect keys, authorized_keys and known_hosts with SHA256 / MD5 fingerprints and randomart identical to ssh-keygen, convert PEM RSA keys and change passphrases |
| QR Code | Generate QR codes as PNG / SVG with error correction, size and colors; read QR codes from images |
| Background Remover | Remove image backgrounds with a local AI model (U²-Net lite or IS-Net) running in Rust; models download on first use with resume and SHA-256 verification; transparent PNG or a solid color |
| OCR | Extract Chinese and English text from images and screenshots with PaddleOCR PP-OCRv4 models running in Rust (about 15 MB, downloaded on first use); paste screenshots with ⌘V, see recognized boxes and copy lines |
| IP Calculator | IPv4 / IPv6 subnets: network, broadcast, host range, counts, address type and reverse DNS; subnet splitting, membership check and range to CIDR |
| HTTP Client | Send requests with params, headers and JSON / text / form bodies; status, timing, headers and pretty-printed JSON; save responses and copy as cURL |
| WebSocket Client | Connect to ws:// and wss:// servers with custom headers and subprotocols, watch every received and sent frame live, format JSON, and send text, hex / base64 binary or pings with saved snippets |
| DNS Lookup | A / AAAA / CNAME / MX / TXT / NS / SOA / SRV / CAA / PTR records from the system resolver or public DNS, compared side by side with timings; flags proxy fake IPs |
| Port Manager | See which process listens on each TCP / UDP port (with user, memory and command line), search, stop the process, and check remote ports in parallel with latency and failure reasons |
| Local Server | Serve a folder as a website on localhost or the local network (with QR codes) and watch every request live; directory listing, SPA fallback, CORS, byte ranges, dotfiles hidden and paths locked to the folder |
| System Monitor | Live CPU, memory, disk, network and temperature readings plus a searchable process list |
| Disk Usage | Scan a folder or disk in parallel and see what takes up space in a zoomable treemap colored by file type, with folder contents, largest files and a type breakdown; move items to the Trash |
| Duplicate Finder | Find files with identical content across folders (size → first 64 KB → full BLAKE3 hash, in parallel), ignore hard links, preselect extra copies by date, path or folder and move them to the Trash after re-verifying |
| Unit Converter | 14 categories including length, weight, temperature, area, volume, data size and rate, pressure, energy and power, plus traditional Chinese units |
| Image Compressor | Batch compress JPEG (mozjpeg), PNG (dithered palette with transparency, or lossless oxipng) and WebP offline; resize, strip EXIF, keep color profiles, never overwrite, and compare with the original using a drag divider |
| Image Converter | Batch convert PNG / JPEG / WebP / GIF / BMP / ICO / TIFF, resize by percent or bounding box, JPEG quality; runs as a task with live logs and never overwrites files |
| Cron Expression | Explain 5 / 6 / 7-field cron expressions field by field, preview upcoming runs in any time zone, with L, W, # and aliases such as @daily |
| JSON to Code | Generate TypeScript, Rust (serde), Go, Java records, Kotlin, Python (pydantic) and C# models from JSON samples, merging arrays and detecting optional and nullable fields |
| cURL to Code | Convert curl commands (including browser “Copy as cURL” in bash or cmd format) into JavaScript fetch, Python requests, Go, Rust reqwest, Java HttpClient, PHP and C# code, listing anything that cannot be converted |
| Mock Data | Generate up to 100,000 rows of realistic Chinese or English test data (consistent names, emails, valid ID numbers, real cities and 35 field types) as JSON, CSV or SQL INSERT, reproducible with a seed |
| CSV Viewer | Open CSV / TSV files up to 1 GB (a million rows in under a second) with automatic encoding, delimiter and header detection; sort, search, filter, column statistics and export to CSV / TSV / JSON / Markdown |
| Log Viewer | Open gigabyte log files instantly, filter by level, text or regex with highlighted matches, follow new lines like tail -f, and inspect JSON inside lines; GB18030 and ANSI colors handled |
| Image Info | Format, dimensions, color type, EXIF camera settings and GPS location with a map link, dominant colors; strip EXIF / XMP / IPTC from JPEG and PNG losslessly |
| Markdown Editor | GitHub Flavored Markdown with live preview rendered in Rust, outline, word count, formatting toolbar and shortcuts; drafts are saved automatically; export standalone HTML |
More tools are on the way.
Grab the installer for your platform from Releases:
| Platform | Installer |
|---|---|
| macOS (Apple Silicon / Intel) | .dmg |
| Windows | .msi / -setup.exe |
| Linux | .AppImage / .deb / .rpm |
Builds are not code-signed yet. If macOS says the app is damaged or from an unidentified developer, right-click it and choose Open, or run:
xattr -cr /Applications/ToolForge.appIf Windows SmartScreen appears, choose More info → Run anyway. In-app updates are not affected.
- Node.js 22+ and pnpm 10+
- Rust stable (edition 2024)
- Tauri 2 system prerequisites (Linux needs
libwebkit2gtk-4.1-devand friends)
pnpm install # install frontend dependencies
pnpm dev # run the desktop app in development mode with hot reload
pnpm build # build installers
cargo xtask check # run exactly the checks CI runs
cargo xtask check rust|web|rules # run a subset
pnpm lint # ESLint (zero warnings)cargo xtask check runs, in order: convention rules → rustfmt → clippy → Rust tests → TypeScript type checking → ESLint → frontend build.
plugins/<name>/
├── manifest.json # id (org.devlive.toolforge.<name>), category, functions, permissions
├── icon.svg
├── locales/en-US.json # UI text, log and error code translations
├── backend/ # Rust: implements ToolPlugin; all data processing lives here
└── ui/ # React: presentation only, calls the backend through usePlugin / useTask
- Regular functions are invoked with
call()for instant results. Functions declared with"task": truein the manifest must run as tasks and report logs and progress, and honor cancellation, throughTaskContext. - Plugin UIs may only use
@toolforge/uicomponents and semantic tokens; files, clipboard and other capabilities go through the SDK'shost.
- Data processing must happen in Rust. The frontend must not pull in data processing libraries or use browser storage (enforced by ESLint and the convention scanner).
- Styles use semantic tokens only: no raw palette classes and no
dark:. Native form controls and dialogs are not used. - All UI text goes through i18n; Rust returns only error codes and parameters.
- Rust tests live in dedicated
xxx_test.rsfiles. - Commits follow Conventional Commits, one commit per feature.
scripts/release.sh --dry-run # preview the release plan and notes
scripts/release.sh # release the current version
scripts/release.sh minor --wait # bump the minor version, release and wait for CI
scripts/release.sh 1.0.0 --next none
scripts/release.sh --help # all optionsThe release script checks the repository state, runs every check, creates an annotated tag whose message is the version's commit history, and pushes it. GitHub Actions then builds the macOS / Windows / Linux installers and, once every platform succeeds, publishes the release together with the update manifest. Finally the script bumps the project to the next development version and commits it.
Before releasing, add the updater signing key to the repository secrets as TOOLFORGE_UPDATER_PRIVATE_KEY (the private key file content, paired with the public key in tauri.conf.json), plus TOOLFORGE_UPDATER_KEY_PASSWORD if the key has a password.
MIT © devlive-community