Open source · Apache 2.0
Loom
PHP content-application framework. Every binding visible. No facades. File-native pages when you want content in Git — full ORM when you need a database.
Runtime
PHP 8.4+
License
Apache 2.0
Content
.vlt / Markdown
Databases
SQLite · MySQL · PostgreSQL
Pragmatic Zero Magic
Service bindings, routes, and middleware are declared in code you own. Dependencies arrive through constructors — not global static state. No “where does this come from?” archaeology.
What you get
- File-native content
- Pages as
.vltor.mdwith YAML frontmatter. Versionable in Git. No database required for a content site. - ORM & query builder
- Relationships, eager/lazy loading, casts, soft deletes, scopes. Fluent SQL with joins, pagination, upsert. Schema builder and migrations.
- Multi-tenancy
- Host, path, or callback resolvers. Content, views, storage, cache, sessions, and database all scope per tenant. CLI:
--tenant=,--all-tenants, batched migrations. - Modules
- Manifest-driven plugins with semver dependencies and topological load order. Modules register routes, views, config, and CLI commands.
- HTTP stack
- Named routes, groups, middleware pipelines. CSRF, sessions, rate limiting, ETag caching. Blade-like views with layouts and partials.
- Jobs & schedule
- Database-backed queue with retry and deduplication. Cron-style scheduler via CLI or optional web endpoint.
- CLI
- 20+ commands: serve, migrate, modules, cache, page index, scaffolding, diagnostics.
- Cache & logs
- File, Redis, or APCu with tag invalidation. PSR-3 logging with daily rotation.
Install
git clone https://github.com/anvyr/loom.git
cd loom
./install.sh
./loom serve
Open http://localhost:8000. Optional: SQLite, MySQL, or PostgreSQL.
Extensions: pdo, mbstring, json, openssl
(plus curl / redis / apcu when you need them).
Not this
- Not a CMS out of the box — Folio is the publishing product on Loom.
- Not Laravel-compatible APIs. Own the stack or own nothing.
- Not “compatible with PHP 7 forever.” We track current PHP and drop legacy detours early.
Source: github.com/anvyr/loom