Skip to content

Choose a target

PAM uses the same persistent PHP foundation across several application targets, but each target has a different maturity and deployment model.

You want to build Start with Current boundary
API or web service pam init my-api --template api Experimental Linux runtime
Laravel application pam init my-app --template laravel Laravel 12 and 13 executable matrix
Real-time server Add --socket to API or Laravel Native RFC 6455 transport
Native application, low-level UI pam init my-app --template mobile Android API 26–36 verified; iOS host/distribution incomplete
Android application, component library pam init my-app --template mobile-ui Component maturity varies
Desktop application pam init my-app --template desktop Linux experimental; macOS/Windows planned

Choose the server runtime when you need persistent HTTP, streaming, WebSockets, background I/O, or high-throughput APIs without leaving PHP and Composer.

Choose Laravel when you want the Laravel application model and ecosystem. PAM boots the framework once, creates an isolated application sandbox for each request, and limits the host to one concurrent request per worker because Laravel and many packages keep mutable process-global state.

Choose PAM Native when you want real platform controls while keeping application state and composition in PHP. It is not a WebView and does not include React’s JavaScript runtime.

Choose Mobile UI when you want an accessible, themed component layer above PAM Native. Its catalog records maturity, implementation kind, examples, and verification gates for every component; “present in the API” does not automatically mean “production complete.”

Choose Desktop for controlled prototypes where PHP owns the application and Servo renders local HTML, CSS, and JavaScript. The native bridge is capability-based and disabled by default. Linux packaging exists today; Windows, macOS, signing, and automatic updates remain roadmap work.