PHPackages                             pushinbr/pam-desktop - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. pushinbr/pam-desktop

ActiveLibrary

pushinbr/pam-desktop
====================

Elegant PHP-first desktop applications powered by Pam, Rust, and Servo.

v1.0.1(today)00MITRustPHP ^8.4CI passing

Since Jul 24Pushed todayCompare

[ Source](https://github.com/push-in/pam-desktop)[ Packagist](https://packagist.org/packages/pushinbr/pam-desktop)[ Docs](https://github.com/push-in/pam-desktop)[ RSS](/packages/pushinbr-pam-desktop/feed)WikiDiscussions main Synced today

READMEChangelog (2)DependenciesVersions (2)Used By (0)

Pam Desktop
===========

[](#pam-desktop)

### PHP in control. Rust at the boundary. Servo on screen.

[](#php-in-control-rust-at-the-boundary-servo-on-screen)

A direct Servo host for building native desktop applications whose application logic remains elegant, typed PHP.

[![Version](https://camo.githubusercontent.com/c6ac67af694d190b92db44331634c1824c78913abc316ed42614011174b1082b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76657273696f6e2d312e302e302d3638646564323f7374796c653d666c61742d737175617265)](https://camo.githubusercontent.com/c6ac67af694d190b92db44331634c1824c78913abc316ed42614011174b1082b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76657273696f6e2d312e302e302d3638646564323f7374796c653d666c61742d737175617265)[![Status](https://camo.githubusercontent.com/0377ee3c44eff7695cfcd09ce7ed4a3b41d88073a121bc65da1d6d24c3221a22/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c696e75782d737461626c652d3232633535653f7374796c653d666c61742d737175617265)](https://camo.githubusercontent.com/0377ee3c44eff7695cfcd09ce7ed4a3b41d88073a121bc65da1d6d24c3221a22/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c696e75782d737461626c652d3232633535653f7374796c653d666c61742d737175617265)[![Servo](https://camo.githubusercontent.com/05b15d7c667abaca4c47688d6053ea178e1a62024d28078b12aa899f922b1b18/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f536572766f2d302e342e302d3562353064363f7374796c653d666c61742d737175617265)](https://camo.githubusercontent.com/05b15d7c667abaca4c47688d6053ea178e1a62024d28078b12aa899f922b1b18/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f536572766f2d302e342e302d3562353064363f7374796c653d666c61742d737175617265)[![PHP](https://camo.githubusercontent.com/d072d1f17b6a8dc799e782e39d676d25cab3e73854efe49206d6ffcb6473abd4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e342d3737374242343f7374796c653d666c61742d737175617265266c6f676f3d706870266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/d072d1f17b6a8dc799e782e39d676d25cab3e73854efe49206d6ffcb6473abd4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e342d3737374242343f7374796c653d666c61742d737175617265266c6f676f3d706870266c6f676f436f6c6f723d7768697465)[![Rust](https://camo.githubusercontent.com/2e478f504b436318bdbf9d9d853f11a2183910bb3a58e45be07c07a774b3c0a2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f527573742d312e38382532422d3030303030303f7374796c653d666c61742d737175617265266c6f676f3d72757374266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/2e478f504b436318bdbf9d9d853f11a2183910bb3a58e45be07c07a774b3c0a2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f527573742d312e38382532422d3030303030303f7374796c653d666c61742d737175617265266c6f676f3d72757374266c6f676f436f6c6f723d7768697465)[![License](https://camo.githubusercontent.com/a0f40b25b57c232bb2c7d20d4cf621e44e70ede534e3d87a2c906ea06dc0546f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d3232633535653f7374796c653d666c61742d737175617265)](https://camo.githubusercontent.com/a0f40b25b57c232bb2c7d20d4cf621e44e70ede534e3d87a2c906ea06dc0546f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d3232633535653f7374796c653d666c61742d737175617265)

---

Pam Desktop is intentionally separate from the Pam server core. This repository owns the native window, Servo integration, secure local bridge, shared protocol, and the `pushinbr/pam-desktop` Composer package. Pam remains the PHP worker runtime.

Version 1.0 freezes the public PHP, JavaScript and Rust plugin APIs and turns the Linux host into a reproducible, verifiable release:

- local HTML, CSS, JavaScript and assets rendered directly by Servo;
- explicit commands and bidirectional events through `window.pam`;
- timeouts, `AbortSignal` cancellation, crash detection and worker recovery;
- multiple independent Servo/Winit windows with targeted effects;
- typed, immutable window configuration, events and effects in PHP;
- development hot reload for assets, PHP and Composer changes;
- PHP-declared filesystem roots with read/write policy;
- native dialogs, clipboard and notifications behind independent permissions;
- opaque, process-lifetime grants for selected and dropped files;
- typed reverse-DNS application manifests, integer-backed categories and validated PNG/SVG icons;
- atomic self-contained Linux bundles with Pam, PHP libraries, the Servo host, vendored application code and per-file SHA-256 integrity metadata;
- portable `.tar.gz` distribution, per-user install/uninstall scripts and optional native `.deb` packages;
- a stable Linux x86-64 host contract and reproducible official archive;
- an XDG-aware, atomic per-user host installer that never invokes `sudo`;
- preserved experimental Windows/macOS packager code, outside the 1.x support and release guarantee;
- an immutable PHP update policy with pinned Ed25519 public keys;
- signed update feeds, bounded HTTPS downloads, exact size/SHA-256 verification and atomic install with one-version rollback;
- frozen `pam.updater` status, check, download and install operations plus notify/automatic background policies;
- composable PHP plugins that register commands, events and jobs;
- process-isolated Rust plugins with a versioned SDK, declared exports, deadlines, cancellation and crash recovery;
- `pam desktop plugin new/build` for generating and bundling native extensions;
- immutable PHP menu trees, checkbox state, application tray and optional close-to-tray behavior;
- global shortcuts with typed press/release events and graceful platform fallback;
- supervised PHP background jobs with initial delay, timeout and integer-backed skip/wait overlap policy;
- dynamic menu, checkbox and tray-visibility effects;
- one supervised Pam worker with bounded, versioned JSON-lines messages;
- a random loopback gateway with origin and token enforcement;
- no Node runtime and no unrestricted ambient native API.

Pam Desktop 1.x is stable for Linux x86-64 applications built against public API version 1 and protocol 6. Servo 0.4 is still evolving, so engine behavior does not imply feature-for-feature Electron compatibility. The PAM contracts around it are protected by executable compatibility fixtures.

Create an application
---------------------

[](#create-an-application)

From a Pam checkout that has this repository beside it:

```
pam init hello-desktop --template desktop
cd hello-desktop
pam desktop doctor .
pam desktop dev .
pam desktop build .
```

The generated Hello World demonstrates commands, PHP-to-JavaScript events, timeouts, hot-reload status, a second Runtime Inspector window and a Native Lab for authorized filesystem, dialogs, clipboard, notifications and dropped files. The public experience stays under `pam desktop`; `pam-desktop` is the internal host binary.

Application code stays compact:

```
