PHPackages                             phlo/tech - 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. [Framework](/categories/framework)
4. /
5. phlo/tech

ActiveFramework[Framework](/categories/framework)

phlo/tech
=========

Phlo — a compiled PHP framework with threaded runtime on FrankenPHP

v0.9.0(4mo ago)042Apache-2.0PHPPHP &gt;=8.1CI passing

Since Feb 20Pushed yesterdayCompare

[ Source](https://github.com/q-ainl/phlo)[ Packagist](https://packagist.org/packages/phlo/tech)[ Docs](https://phlo.tech)[ RSS](/packages/phlo-tech/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (1)DependenciesVersions (2)Used By (2)

Phlo
====

[](#phlo)

A compile-to-PHP web framework with its own `.phlo` language, a built-in SPA runtime, the Phlo Control Center (built-in dev panel), and first-class introspection for AI agents. Zero runtime dependencies.

```
prop title = 'Hello'

route GET => $this->home

method home => view($this->main, 'Home')

view main:
$this->title
{{ date('Y') }}

```

That file compiles to a PHP class, a route, an HTML page, and (with a ``/`` block) a CSS and JS bundle. One `.phlo` file is one class; the build writes plain PHP you can read, lint and source-map back to the line you wrote.

Why Phlo
--------

[](#why-phlo)

Phlo is opinionated on purpose. The bets it makes:

- **Compile, don't interpret.** `.phlo` is transformed to readable PHP at build time. Errors at runtime map back to your `.phlo` line, not to generated soup.
- **One closed loop.** Source to build to lint to sourcemap to error page to Control Center to CLI introspection. Every layer points back at the source.
- **Small and dependency-free.** The engine ships its own CSS transpiler, JS minifier and SPA runtime. No vendor tree to audit.
- **Agent-first.** `docs/SKILL.md` is a complete language reference written for AI agents, and the `reflect::` CLI exposes routes, views, the parsed AST and dependency graphs as JSON. An agent can build, introspect and fix a Phlo app without guessing.
- **Convention over configuration.** File name becomes class name. Named `phlo_app()` arguments become constants. `data/app.json` stays tiny.

If you want a large ecosystem, a package for everything, and a team-standard hiring pool, reach for Laravel or Symfony. If you want a small, legible full-stack engine that one person (or one agent) can hold in their head, Phlo is for you.

One platform, four layers
-------------------------

[](#one-platform-four-layers)

[![The four Phlo layers: language, application, server, operations](.github/layers.svg)](.github/layers.svg)

The language is the bottom layer of one continuous system; each layer is built with the previous one, in the same syntax:

1. **Language**: `.phlo` source compiles to readable PHP, CSS and JS.
2. **Application**: backend resources (ORM, sessions, security, AI) plus the phlo.js SPA engine and the `apply()` protocol; [Phlo CMS](https://github.com/q-ainl/phlo-cms) adds a schema-driven CRUD and admin layer on top.
3. **Server**: production on [FrankenPHP](https://frankenphp.dev) in worker mode, with realtime and WhatsApp messaging built into the Phlo Daemon, and mail.
4. **Operations**: the [Phlo Dashboard](https://github.com/q-ainl/phlo-dashboard) manages apps and servers as a fleet: uptime, domains, databases, notifications.

The full story, guide, tutorial and reference live at [phlo.tech](https://phlo.tech); machine-readable docs at [phlo.tech/llms.txt](https://phlo.tech/llms.txt).

Quick start
-----------

[](#quick-start)

Requirements: PHP &gt;= 8.3. Optional extensions per resource (`pdo_mysql`, `sodium`, `gd`).

```
git clone https://github.com/q-ainl/phlo.git
php phlo/install.php /path/to/my-app
```

The installer asks for a name, host, purpose and which resources to enable, writes a buildable skeleton (`app.phlo`, `www/app.php`, `data/app.json`, `data/app.md`), and runs the build so the app is verified before you start.

Serve it with FrankenPHP, Docker, PHP-FPM or, for a quick look:

```
php /path/to/my-app/www/app.php reflect::context   # inspect without a server
php -S 127.0.0.1:8000 /path/to/my-app/www/app.php   # then open the host
```

See [docs/deploy.md](docs/deploy.md) for FrankenPHP (incl. worker mode), Docker and nginx setups.

The development loop
--------------------

[](#the-development-loop)

With `build: true` set in `www/app.php`, the app rebuilds changed `.phlo`files on request. Two CLI namespaces drive everything:

```
php www/app.php build::run      # compile changed sources, returns changed files
php www/app.php build::lint     # parse-check the generated PHP, [] means clean
php www/app.php reflect::context   # app identity, routes, views, recent errors
php www/app.php reflect::routes    # full route map
```

With `build` and `debug` on (dev only), the Phlo Control Center auto-mounts at `/phlo` and offers home, config, source, build, release and error views. Move it with the optional `control:` key or set `control: false` to disable.

[![The Phlo Control Center source view: every .phlo file highlighted and searchable, one click from build, release and errors](.github/control-center.webp)](.github/control-center.webp)

Documentation
-------------

[](#documentation)

- **[docs/SKILL.md](docs/SKILL.md)** the full language and build reference (also the agent skill).
- **[docs/design.md](docs/design.md)** the rationale behind Phlo's non-obvious design decisions (read before changing the engine).
- **[docs/deploy.md](docs/deploy.md)** deployment options.
- **[docs/apply-protocol.md](docs/apply-protocol.md)** the `apply()` SPA protocol.
- **[docs/websocket-contract.md](docs/websocket-contract.md)** the realtime WebSocket contract (Phlo Daemon).
- **[docs/tasks.md](docs/tasks.md)** cron tasks.
- **[docs/model-opt-in.md](docs/model-opt-in.md)** ORM opt-in features.
- **[docs/connectors.md](docs/connectors.md)** API connectors (webshops, messaging, accounting, cloud) and how to write your own.
- **[CONTRIBUTING.md](CONTRIBUTING.md)** how contributions are judged.

Editor support
--------------

[](#editor-support)

Syntax highlighting under [editor/](editor): a VS Code extension (TextMate grammar, reusable in Sublime/JetBrains/Zed) and a Notepad++ user-defined language with a function-list parser.

License
-------

[](#license)

MIT. See [LICENSE](LICENSE).

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance89

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity33

Early-stage or recently created project

 Bus Factor1

Top contributor holds 97.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

133d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/510266?v=4)[phlo](/maintainers/phlo)[@phlo](https://github.com/phlo)

---

Top Contributors

[![q-ainl](https://avatars.githubusercontent.com/u/236374604?v=4)](https://github.com/q-ainl "q-ainl (255 commits)")[![q-devnl](https://avatars.githubusercontent.com/u/261672982?v=4)](https://github.com/q-devnl "q-devnl (6 commits)")

---

Tags

phlo

### Embed Badge

![Health badge](/badges/phlo-tech/health.svg)

```
[![Health](https://phpackages.com/badges/phlo-tech/health.svg)](https://phpackages.com/packages/phlo-tech)
```

###  Alternatives

[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k39.6M300](/packages/laravel-dusk)[nineinchnick/edatatables

Grid widget for the Yii Framework, wrapper for the DataTables jQuery plugin

173.2k](/packages/nineinchnick-edatatables)[link-cloud/fast-hyperf

LinkCloud Fast Hyperf

241.2k1](/packages/link-cloud-fast-hyperf)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
