Skip to main content

Build powerful, cross-platform desktop and web applications using Python 3.14+ (NoGIL) and web technologies

Project description

ForgeDesk Logo

ForgeDesk

The fast, modern, and secure way to build desktop applications with Python.

PyPI version NPM version Python Platform License CI Status

ForgeDesk is a next-generation framework designed to give you the ultimate desktop app development experience. It combines the heavy data-processing capabilities of Python, the memory safety and performance of a Rust backend, and the UI flexibility of Modern Web Frameworks.

By leveraging OS-native WebViews (via wry and tao) instead of bundling Chromium, ForgeDesk produces incredibly lightweight binaries that launch instantly and consume a fraction of the RAM of typical Electron apps.

Why Choose ForgeDesk?

  • Python-First & Blazing Fast: Built natively for Python 3.14 Free-Threading (NoGIL). Say goodbye to the Global Interpreter Lock and hello to true multi-core processing, bridged through a highly optimized Rust core layer.
  • Beautiful CLI Experience: An interactive, Astro-inspired terminal setup wizard. Scaffold your entire application architecture in seconds.
  • Bring Your Own UI: First-class, out-of-the-box support for React, Next.js, Vue, Svelte, Astro, and Vanilla JS.
  • Zero-Config Tailwind CSS: The CLI can automatically install and configure Tailwind CSS, PostCSS, and inject your CSS entry directives with a single keypress.
  • Security by Design: A meticulously scoped file and URL runtime model ensures your users are always safe from path traversal and unauthorized IPC cross-site scripting.
  • NPM Ecosystem Integration: Native @forgedesk/api packages that feel completely natural for frontend developers, alongside seamless Vite + HMR integration.
  • Multi-Window Support: Create and manage multiple native windows with full IPC routing.
  • Auto-Updates with Delta Patching: Built-in updater with Ed25519 signature verification and binary diff updates (1-5MB vs 30-50MB).

Quick Start

Getting started is incredibly easy. Ensure you have Python 3.14+ and Node.js installed, then run the ForgeDesk wizard:

# 1. Install the CLI
uv pip install forgedesk
# (or `pip install forgedesk`)

# 2. Launch the interactive scaffolding wizard
forge create

The beautiful terminal UI will ask you seamlessly to configure:

  1. Your project directory name.
  2. Your favorite UI framework (React, Next.js, Vue, Svelte, Astro).
  3. Your preferred Node package manager (npm, pnpm, bun).
  4. Whether you'd like Tailwind CSS automatically configured.
# 3. Enter your project directory
cd your-new-app

# 4. Start the development server (Hot Module Replacement included!)
forge dev

When you are ready to ship to production, building a highly optimized binary is just as easy:

forge build

Architecture & IPC Bridge

ForgeDesk provides a seamless IPC (Inter-Process Communication) bridge between your Python backend and your JavaScript frontend. You write your system logic in Python, and your UI logic in TypeScript/JavaScript.

1. The Backend (Python)

Define your backend logic using decorators. ForgeDesk handles the asynchronous routing and thread pool management underneath.

# src/main.py
from forge import ForgeApp
import platform

app = ForgeApp()

@app.command
def fetch_system_data(username: str) -> dict:
    """Fetch system stats to display on the UI."""
    return {
        "message": f"Welcome back, {username}!",
        "os": platform.system(),
        "status": "ready"
    }

if __name__ == "__main__":
    app.run()

2. The Frontend (TypeScript / React)

Call your Python commands natively from your frontend code using our typed NPM package.

import { invoke } from "@forgedesk/api";
import { useState, useEffect } from "react";

export default function App() {
  const [data, setData] = useState(null);

  useEffect(() => {
    invoke("fetch_system_data", { username: "Admin" }).then(setData);
  }, []);

  return (
    <div>
      <h1>{data?.message}</h1>
      <p>OS: {data?.os}</p>
    </div>
  );
}

Core Features

26+ Built-in APIs

  • File System — Secure file operations with scope validation
  • Dialogs — Native open/save/folder/message dialogs
  • Clipboard — Read/write text, HTML, and images
  • Shell — Execute commands with stdout streaming
  • Notifications — Desktop toast notifications
  • Menus — Native application and context menus
  • System Tray — Tray icons with menus
  • Global Shortcuts — System-wide keyboard shortcuts
  • Auto-Updates — Ed25519 signed updates with delta patching
  • Keychain — OS-native secure credential storage
  • Screen — Monitor info, DPI, cursor position
  • Power — Battery state, suspend/resume events
  • Deep Linking — Custom protocol handlers (myapp://)
  • WebSocket — Real-time bidirectional communication
  • And more...

20+ Built-in Plugins

  • AI/ML — OpenAI, ONNX Runtime, local LLM (llama.cpp)
  • Database — SQLite, PostgreSQL, MongoDB
  • Crypto — Hashing, encryption, signatures
  • Network — HTTP client, REST API helpers
  • File Watch — Real-time file change detection
  • Scheduler — Cron-like task scheduling
  • i18n — Internationalization support
  • Theme — Light/dark mode management
  • And more...

Performance

Metric ForgeDesk Electron
Binary Size 20-30MB 150MB+
RAM (Idle) ~30MB ~100MB
RAM (Active) ~50MB ~300MB
Startup Time <1s 2-5s
IPC Latency <1ms 5-10ms

Security

  • Capability System — Enable/disable APIs per configuration
  • Scope Validation — Path and URL access control with glob patterns
  • IPC Security — Command validation, size limits, error sanitization
  • Code Signing — macOS notarization + Windows Authenticode
  • Ed25519 Signatures — Cryptographic update verification

Documentation


Testing

# Python tests (634 tests)
uv run pytest -v

# Rust tests
cargo test --all-features

# E2E integration tests
uv run pytest tests/test_e2e_lifecycle.py -v

# With coverage
uv run pytest --cov=forge --cov-report=html

Building

# Development build
maturin develop

# Release build
maturin build --release

# Platform-specific builds
maturin build --release --target x86_64-unknown-linux-gnu
maturin build --release --target x86_64-pc-windows-msvc
maturin build --release --target universal2-apple-darwin

# Package installers
forge build --format appimage  # Linux
forge build --format dmg       # macOS
forge build --format nsis      # Windows

CI/CD

ForgeDesk includes complete GitHub Actions workflows:

  • ci.yml — Rust (clippy, fmt, test), Python (ruff, pytest), Node (build)
  • release-matrix.yml — Cross-platform release builds with artifact generation
  • publish-python.yml — PyPI wheel and sdist publishing (triggered on release)
  • publish-npm.yml — NPM package publishing (triggered on release)
  • signing-validation.yml — Code signing verification

Note: Registry publishing to PyPI and NPM is performed automatically when a GitHub Release is published. The release-matrix.yml workflow only generates platform-specific build artifacts and does not publish to registries.


Tech Stack

Layer Technology
Frontend React, Vue, Svelte, Next.js, Astro
IPC msgspec JSON, WebSocket, HTTP
Backend Python 3.14+ (NoGIL), PyO3
Core Rust (Tao, Wry, Tokio)
Build Maturin, Nuitka, Vite
Signing Ed25519, macOS notarization, Windows Authenticode

License

ForgeDesk is released under the MIT License.


Built with ❤️ by the ForgeDesk Team

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

forgedesk-3.0.4.tar.gz (944.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

forgedesk-3.0.4-cp314-cp314-win_amd64.whl (3.2 MB view details)

Uploaded CPython 3.14Windows x86-64

forgedesk-3.0.4-cp314-cp314-manylinux_2_39_x86_64.whl (83.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.39+ x86-64

forgedesk-3.0.4-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (7.8 MB view details)

Uploaded CPython 3.14macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file forgedesk-3.0.4.tar.gz.

File metadata

  • Download URL: forgedesk-3.0.4.tar.gz
  • Upload date:
  • Size: 944.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for forgedesk-3.0.4.tar.gz
Algorithm Hash digest
SHA256 525d64d22c4eb342b41e09f23fa9c79801439c7d79f084237ebda6f3f642c3db
MD5 cdbe62e8184300741a2973c91ee5835e
BLAKE2b-256 b6958c682896b927410bb2596ef50eb581c9cf9fcfb203254704c2ce107d3db8

See more details on using hashes here.

Provenance

The following attestation bundles were made for forgedesk-3.0.4.tar.gz:

Publisher: publish.yml on swadhinbiswas/ForgeDesk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file forgedesk-3.0.4-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: forgedesk-3.0.4-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 3.2 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for forgedesk-3.0.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 73b790f3313b078709caa9e422f1912ee7d8ea66a6177be8bbc20c9f7846872e
MD5 09c56134aa52cfe1ace6b7d1bb8f51c2
BLAKE2b-256 37d5f98031c557218c343bbb7b03a117cb0e269524a6f32a31f3c6ed202d6454

See more details on using hashes here.

Provenance

The following attestation bundles were made for forgedesk-3.0.4-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on swadhinbiswas/ForgeDesk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file forgedesk-3.0.4-cp314-cp314-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for forgedesk-3.0.4-cp314-cp314-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 b14db3e4e108ccd040cb287f9817e3a239576b0b32c4dbc153c74880ad8d51f3
MD5 9b32dd89c5ebbb58fe0b39335f47bc7b
BLAKE2b-256 3437a08411676c39ccded9555f9c9a1a76ac6003c700f2a5f962dad3a60d1a0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for forgedesk-3.0.4-cp314-cp314-manylinux_2_39_x86_64.whl:

Publisher: publish.yml on swadhinbiswas/ForgeDesk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file forgedesk-3.0.4-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for forgedesk-3.0.4-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 ec74b6970149256efccfca67c0489159b2dccd5c16a9bf033ac9df7669e66505
MD5 ad63e28f7e032b5b85bfeee528f3ca45
BLAKE2b-256 814abc8d50de3f0967327220d296025a02e7de295283726115b9fba162c9806b

See more details on using hashes here.

Provenance

The following attestation bundles were made for forgedesk-3.0.4-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: publish.yml on swadhinbiswas/ForgeDesk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page