Forge — Web → Native Desktop Apps
Forge turns any URL or ReformCode project into a lightweight, native desktop application. It is a first-party, white-labeled capability built directly on Tauri (MIT/Apache-2.0) — no Electron, typically a fraction of the size, and no third-party build service, telemetry, or license check.
You drive it from three surfaces that share one engine (lib/forge):
- Forge dashboard (
/forge) — configure and download a build-ready scaffold. - CLI (
reformcode forge <url>) — scaffold and optionally build locally. - CI — every generated project ships an optional GitHub Actions workflow that builds macOS, Windows, and Linux installers using only first-party actions.
The workflow
config ──► engine ──► Tauri scaffold ──► native installers
(URL / (lib/forge) (Rust + webview) (.dmg .app .msi .nsis
project / .deb .AppImage .rpm)
bundle)
- Choose a source
- Live URL — wrap any website.
- Project URL — wrap a deployed ReformCode project.
- Offline bundle — embed a project's static files inside the app so it runs with no server at all (the key upgrade over a pure URL wrapper).
- Configure name, identifier, version, window, keyboard shortcuts, system tray, ad/clutter filtering, custom CSS/JS injection, icon, and installer targets.
- Generate — Forge produces a complete, deterministic Tauri project as a ZIP (2 credits). Nothing is sent to any external service.
- Build — run
npm install && npm run forge:buildlocally, or push to GitHub and let the bundled workflow produce installers for all three platforms.
What the engine generates
my-app-forge/
├── package.json # @tauri-apps/cli scripts (icons / dev / build)
├── app-icon.png # 1024×1024 source icon (provided, or generated)
├── app-icon.svg # vector monogram source
├── forge.json # round-trippable build manifest
├── README.md # build instructions
├── .github/workflows/
│ └── build.yml # optional cross-platform CI (first-party actions only)
├── src/index.html # frontend placeholder (URL mode)
│ └── (dist/… in bundle mode — your embedded app)
└── src-tauri/
├── Cargo.toml
├── tauri.conf.json
├── build.rs
├── capabilities/default.json
├── forge/inject.js # styling, filtering, shortcuts (injected per nav)
└── src/{main.rs, lib.rs}
Keyboard shortcuts, filtering, injection
Most behavior is handled in src-tauri/forge/inject.js, a script Tauri runs before
every page load: back/forward, reload, scroll, zoom, copy-URL, hide-window, and
dev-tools shortcuts; built-in cosmetic ad/clutter filters; and any custom CSS/JS
you supply. Native actions are routed through Tauri's global bridge.
CLI
# Scaffold only
reformcode forge https://example.com --name "Example" --out ./example-app
# Scaffold and build native installers locally
reformcode forge https://app.acme.com --tray --block-ads --build
# Pick installer targets
reformcode forge https://docs.site --targets dmg,nsis
Run reformcode --help for the full option list. Building requires Node 18+ and a
Rust toolchain.
Prerequisites for building
| Platform | Requirements |
|---|---|
| macOS | Xcode Command Line Tools |
| Windows | Microsoft C++ Build Tools (MSVC) |
| Linux | webkit2gtk, libappindicator, librsvg, build-essential |
Plus Node 18+ and a stable Rust toolchain on every platform.
License & provenance
Forge is an original implementation written for ReformCode. It is built on Tauri, which is permissively licensed (MIT / Apache-2.0) and may be embedded in a commercial product. No source code is vendored from any GPL-licensed project, and Forge contains no upstream branding, attribution obligations, "pro" license gates, or calls to any third-party build service.
- The generated desktop apps are entirely yours to use, ship, and sell.
- The Forge tooling belongs to ReformCode.
- Building a Rust app downloads crates from crates.io (the standard Rust registry);
this is the normal Rust toolchain, not a Forge or third-party phone-home. For
fully air-gapped builds, vendor crates with
cargo vendor.