🦀 Pure RustLaMa Inpainting via ONNX RuntimeDesktop App + CLI
Erase Anything from a Photo.Open-Source AI. 100% Offline.
WClean is a free, open-source AI object remover built in pure Rust. Paint over what you don't want — a passer-by, a logo, a watermark — and the open-source LaMa inpainting model fills the hole so naturally it looks like it was never there.
- Apache-2.0 Licensed
- 100% Offline & Private
- No Python · No PyTorch · No Cloud
- GPU Accelerated (WebGPU / DirectML)
Why WClean
The open-source sibling of Kiword — a native, private inpainting engine you can audit, script, and run anywhere.
Truly Cross-Platform Core
The engine is plain Rust + ONNX Runtime, compiled to a single native binary per platform — Windows, macOS, and Linux. No Python or PyTorch runtime required.
100% Offline & Private
Your photos never leave your machine. No account, no upload, no telemetry — safe for family albums and confidential work.
Open-Source LaMa Model
Apache-2.0 inpainting weights, shipped and versioned with the app, so results are reproducible on every machine.
GPU Acceleration
WebGPU execution provider out of the box, DirectML available on Windows, and a plain CPU fallback everywhere else.
Desktop App + CLI
A friendly desktop app (Tauri 2) for one-off edits, plus a headless CLI for scripting and batch jobs.
Honest Quality
HD strategies (crop / resize / original) ported 1:1 from IOPaint, with unmasked pixels strictly preserved.
Install in One Click
Windows 10/11 (x64) installer — per-user install, no admin rights required.
- 1
Grab the latest
WClean_<version>_x64-setup.exefrom GitHub Releases. - 2
Run it — you get a Start Menu shortcut plus a right-click menu entry on .jpg / .png / .webp / .bmp files: "Remove watermark with WClean".
Build from source (macOS / Linux)
Requirements: Rust 1.92+ (MSVC toolchain on Windows), Node.js (Tauri CLI), Python 3 (model download script only).
# 1. Fetch the LaMa ONNX model (~200 MB) into models/
python scripts/download_model.py
# 2. Run the CLI
cargo run --release -p wclean-cli -- \
--image photo.png --mask mask.png --output out.png --json
# 3. Build & launch the desktop app
npm install -g @tauri-apps/cli
cd src-tauri && tauri buildHeadless CLI for Scripting & Batch Jobs
The mask is any raster image; white (≥ 127) marks the area to remove. Machine-readable stats with --json; all diagnostics go to stderr, stdout stays parseable.
wclean-cli --image photo.jpg --mask mask.png --output clean.png
# Common options
wclean-cli --image <p> --mask <p> [--output out.png] [options]
--strategy <s> crop | resize | original (default: crop)
--crop-margin <n> context margin per crop (default: 128)
--crop-trigger <n> min long edge to crop (default: 512)
--resize-limit <n> long-edge cap for resize (default: 1280)
--no-keep-unmasked allow edits outside mask (default: keep)
--model <p> model path override (default: ./models or $WCLEAN_MODEL_PATH)
--json machine-readable statsHow It Works
The full pipeline is a faithful port of IOPaint's LaMa implementation to Rust: mask binarization, connected-component cropping with context margin, symmetric padding (required by LaMa's Fourier convolutions), and strict compositing of unmasked pixels. First launch optimizes the 198 MB fp32 graph once (~20 s); afterwards inference takes a few seconds per 512×512 crop on CPU — enable WebGPU or DirectML for a solid speedup.
Frequently Asked Questions
Is WClean really free and open source?
Yes. WClean is released under the Apache-2.0 license, and both the source code and the LaMa model weights are public on GitHub. There is no account, subscription, or upload step.
Does WClean upload my photos anywhere?
No. WClean runs 100% offline on your machine — images never leave your computer, and there is no telemetry. This makes it suitable for private family photos and confidential documents.
Which platforms does WClean support?
Windows 10/11 (x64) ships an installer and a portable CLI today. macOS and Linux can build from source with Rust 1.92+; prebuilt binaries for both are on the roadmap.
Why does Windows show a SmartScreen warning?
WClean builds are not code-signed yet, so Windows may show "Windows protected your PC". Click "More info" and then "Run anyway" — the binaries are built by the public CI in the repository, so every build step is auditable.
How do I mark what I want to remove?
In the desktop app, paint over anything you want gone and hit Clean. In the CLI, supply a mask image where white pixels (brightness ≥ 127) mark the removal area. Unmasked pixels are never touched.
Like WClean? Meet Kiword.
Our take on making document cleanup effortless: private, on-device AI dictation, translation, and writing polish for school, work, and home. One app.
Apache-2.0 — credits: IOPaint (algorithm reference), LaMa / Carve-ONNX (model weights), ONNX Runtime (inference engine).