Forge

Package any URL or project into a lightweight, native desktop app


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)
  1. 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).
  2. Configure name, identifier, version, window, keyboard shortcuts, system tray, ad/clutter filtering, custom CSS/JS injection, icon, and installer targets.
  3. Generate — Forge produces a complete, deterministic Tauri project as a ZIP (2 credits). Nothing is sent to any external service.
  4. Build — run npm install && npm run forge:build locally, 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

PlatformRequirements
macOSXcode Command Line Tools
WindowsMicrosoft C++ Build Tools (MSVC)
Linuxwebkit2gtk, 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.