illuminate/foundation
The foundational layer of the Laravel framework, illuminate/foundation supplies the application bootstrap and container setup, service provider and facade registration, HTTP and console kernels, configuration loading, and environment detection used by Laravel applications.
What this package actually is. illuminate/foundation is not an independent library. It is the application kernel and composition root of the Laravel framework: the Application container bootstrapper, the HTTP and Console kernels, the bootstrap-loader pipeline, service-provider registration, exception handling, and the middleware/route plumbing that ties every other illuminate/* component together. It is published as a read-only split from the laravel/framework monorepo. Adopting it is not a dependency decision; it is a platform decision to run Laravel.
Architecture fit. Strong if and only if the target system is a Laravel application or a Laravel-derived product (a first-party package, a starter kit, a multi-tenant SaaS skeleton). In that context the foundation is already present transitively and requires no architectural accommodation. Fit is poor for any of the following: framework-agnostic PHP services, Symfony-based applications (overlapping but incompatible kernel contracts), microservices where a full HTTP kernel and container bootstrap per request is disproportionate, or teams intending to cherry-pick individual illuminate/* components without the framework. The package has no meaningful standalone contract — its public surface assumes the whole framework is co-installed.
Integration feasibility. Effectively "already integrated" for existing Laravel estates: you get it by requiring laravel/framework, and you should not require the split directly. Direct pinning introduces a real hazard — the split repos are build artifacts, versioned in lockstep with the framework, and are not the supported consumption path. Divergence between a directly-required illuminate/foundation and the framework copy resolved by Composer is a class-duplication and autoload-ordering failure waiting to happen. For non-Laravel stacks, feasibility drops to "greenfield rewrite or nothing."
Technical risk.
illuminate/* packages move together. There is no independent semver for this package; treating it as an independently upgradable dependency is a category error.bootstrap/app.php to a fluent configuration API and relocated middleware/provider registration). Code that subclasses or decorates the kernel is high-churn.laravel/framework under the Laravel organisation. Any assessment should confirm the split is the official mirror and not a lookalike namespace.Key questions for the requestor and the maintainers.
Stack fit. Optimal for conventional PHP web applications on LAMP/LEMP or containerised PHP-FPM, and for teams already fluent in Laravel conventions. It is the correct substrate for a productised starter kit, an internal application template, or a package that must behave like a Laravel application. It is a poor fit for event-driven workers, CLI-only tooling, or polyglot service meshes, where the kernel's request lifecycle assumptions add ceremony without payoff.
Migration path. Frame this as three distinct scenarios:
composer.json, and track the framework release train.Compatibility. Verify the PHP floor and required extensions against the current runtime fleet, plus database and cache driver support. Check that existing shared libraries (logging, tracing, feature flags, auth providers) have Laravel service providers or adapters; the foundation is where those get wired, so gaps surface immediately at boot.
Sequencing.
illuminate/foundation requirement; resolve through laravel/framework only.Maintenance. Maintenance is inherited from the framework release train, not managed by the team. Expect a major upgrade roughly annually with meaningful bootstrap/kernel deltas, plus a continuous stream of patch releases with security content. Plan a standing upgrade budget — commonly a few engineer-weeks per major for a mid-sized application, concentrated in kernel and provider customisations. Framework-level support policy (bug-fix and security windows) should be confirmed from official docs and pinned in the internal support matrix rather than assumed.
Support. Upstream support comes via framework documentation, the Laravel community, and commercial options (Laravel ecosystem support, Forge/Vapor/Cloud). There is no separate support channel for this package; internal teams needing framework-level escalation must buy it at the platform level. Internal support burden concentrates in two areas: bootstrap/config-cache failures and provider wiring, both of which are opaque to developers who have only consumed Laravel, never debugged it.
Scaling. The foundation is per-request bootstrap overhead. Two paths: aggressive config/route/service caching to amortise boot, or long-lived workers (Octane/RoadRunner/Swoole). The latter is a genuinely different operational model — state leakage between requests, singleton lifecycle, and memory growth become live concerns, and any code assuming per-request container freshness will fail intermittently. Horizontal scaling of stateless HTTP is straightforward; scaling is rarely limited by the foundation itself but frequently limited by cache/session/queue choices configured inside it.
Failure modes to plan for.
Class not found or duplicate-class errors that are expensive to diagnose.Ramp-up. Near-zero for developers with Laravel experience — they use the foundation implicitly from day one. The gap is explicit knowledge: how the bootstrap loader sequence works, where providers register, how the kernel resolves middleware priority, and how to debug config caching. That knowledge is concentrated in a small number of people on most teams and is the single largest bus-factor risk. Recommend designating one or two kernel owners, documenting the bootstrap pipeline and any customisations, and adding a runbook for boot failures before the first production deploy.
How can I help you explore Laravel packages today?