Skip to content

Configuration Reference

Capell Configuration Reference screenshot

This page covers the host package configuration that a Laravel app may need to set directly. Install-facing setup lives in the install guide; this page is for maintainers checking env vars, published config, disks, logs, and panel wiring.

Capell host packages publish config by package tag:

Terminal window
php artisan vendor:publish --tag=capell-core-config
php artisan vendor:publish --tag=capell-admin-config
php artisan vendor:publish --tag=capell-frontend-config

Installer and Marketplace config are loaded from their packages. Publish or override them only when the app has a real deployment reason to do so.

VariableDefaultUsed for
APP_URLhttp://localhost in LaravelDefault site URL, install prompts, generated callbacks, Marketplace webhook fallback
APP_KEY(empty until generated)Laravel encryption, signed URLs, cookies, and sessions
APP_ENVLaravel app defaultRuntime environment; live public domains should normally use production
APP_DEBUGLaravel app defaultException rendering; must be false before public traffic
CACHE_STORELaravel app defaultCache backend for runtime state, package flows, locks, and database-backed diagnostics
QUEUE_CONNECTIONsync in a fresh Laravel appBackground jobs and package workflows; production installs should normally use database or redis
SESSION_DRIVERLaravel app defaultSession persistence for admins and authenticated users
LOG_LEVELLaravel defaultCapell log channel level when the app adds the recommended capell channel

Source: packages/core/config/capell.php

VariableDefaultUsed for
CAPELL_VERSION(null)Optional Capell version override for Marketplace health reports
CAPELL_CACHE_PATHbootstrap/cache/capellDirectory used for Capell component cache files
CAPELL_CACHE_TTL60Default TTL in seconds for Capell’s general cache helpers
CAPELL_ASSETS_DISKlocalFilesystem disk checked by Capell Doctor for writable asset storage
CAPELL_SITEMAP_MAX_URLS_PER_FILE50000Maximum URLs per generated sitemap file
CAPELL_SITEMAP_XML_PATH/sitemap-xmlPublic path used for sitemap index entries
CAPELL_STATIC_SITE_INTERNAL_REQUESTSfalseAllows static-site generation to use internal request handling
CAPELL_BLAZE_ENABLEDBLAZE_ENABLED, then trueEnables Blaze support where installed
BLAZE_DEBUGfalseEnables Blaze debug behaviour
CAPELL_BLAZE_THROWfalseThrows during Blaze candidate auditing
CAPELL_DISABLE_CACHEtrueDisables Capell’s general cache layer
CAPELL_DISABLE_CACHE_SAVE_KEYS[]Cache keys or patterns that should not be saved
CAPELL_RELATIONSHIP_DIAGNOSTICSfalseEnables extra relationship diagnostics for page URL/site-domain checks
CAPELL_WORKSPACES_PRUNE_SCHEDULEfalseEnables the publishing workspace prune schedule
CAPELL_WORKSPACES_PRUNE_CRON15 3 * * *Cron expression for workspace pruning
CAPELL_WORKSPACE_PREVIEW_HOME_ROUTEcapell-frontend.homeRoute used for workspace home previews
CAPELL_WORKSPACE_NOTIFICATIONStrueEnables workspace state-change notifications
CAPELL_RELEASE_WINDOWSfalseEnforces configured release windows during publishing
CAPELL_RELEASE_WINDOWS_TZUTCTimezone used for release windows
CAPELL_PLUGINS_SOURCE_URLhttps://plugin.capell.app/packages.jsonLegacy plugin source URL
CAPELL_PLUGINS_CACHE_TTL3600Legacy plugin cache TTL in seconds
CAPELL_MEDIA_BACKENDspatieMedia backend resolver key, such as spatie or curator
CAPELL_SUPER_ADMIN_ROLEsuper_adminRole name used for the highest admin role
CAPELL_ADMIN_ROLEadminRole name used for admin users
CAPELL_EDITOR_ROLEeditorRole name used for editor users
CAPELL_DEVELOPER_ROLEdeveloperRole name used by developer-focused admin widgets
CAPELL_INSTALL_DEBUGfalseLogs installer events for support debugging
CAPELL_INSTALL_DEBUG_PACKAGE_SELECTIONfalseLogs installer package-selection mode, prompt defaults, and selected packages for support debugging
CAPELL_INSTALL_WELCOME_ROUTES_WEB_PATHroutes/web.phpRoutes file patched when the installer toggles the welcome route
CAPELL_INSTALL_WELCOME_ENV_PATH.envEnv file patched when the installer toggles the welcome route
CAPELL_INSTALL_MODE(null)Enables capell:cloud-bootstrap when set to cloud
CAPELL_CLOUD_REGISTRATION_URL(null)Capell Cloud registration endpoint used by capell:cloud-bootstrap
CAPELL_REGISTRATION_TOKEN(null)Secret token for Capell Cloud registration
CAPELL_SITE_URL(null)Public site URL assigned by the cloud host; never falls back to APP_URL
CAPELL_INSTALL_PACKAGES(empty)Comma-separated package list for cloud bootstrap installs
CAPELL_INSTALL_THEMEdefaultTheme key used by cloud bootstrap installs
CAPELL_ADMIN_NAMEAdminBootstrap admin name fallback when cloud credentials omit a name
CAPELL_ADMIN_EMAIL(empty)Bootstrap admin email fallback when cloud credentials omit an email
CAPELL_LOCKDOWN_FILEstorage/framework/capell-lockdown.jsonLockdown state file path
CAPELL_LOCKDOWN_USER_IDS(empty)Comma-separated user IDs allowed to bypass Lockdown
CAPELL_LOCKDOWN_EMAILS(empty)Comma-separated user emails allowed to bypass Lockdown
CAPELL_DEVELOPER_PAGEtrueShows the developer dashboard page
CAPELL_SYSTEM_HEALTH_PAGEtrueShows the system health dashboard page
CAPELL_DEVELOPER_TOOLS_PHP_WRITESlocal_onlyControls developer tooling PHP file writes
CAPELL_DEVELOPER_TOOLS_DATABASE_WRITESlocal_onlyControls developer tooling database writes
CAPELL_DEVELOPER_TOOLS_READONLY_PREVIEWtrueKeeps developer tooling previews read-only
CAPELL_DEVELOPER_TOOLS_EDITOR_URL_TEMPLATE(null)Editor URL template for opening local files

CAPELL_DISABLE_CACHE_SAVE_KEYS accepts exact keys, wildcard patterns, or regex patterns:

CAPELL_DISABLE_CACHE_SAVE_KEYS=page-*,/^user-\d+$/,my-key

Source: packages/core/config/redirects.php

VariableDefaultUsed for
CAPELL_REDIRECTS_AUTO_ENABLEDtrueEnables automatic redirect behaviour

Source: packages/core/config/audit.php

VariableDefaultUsed for
AUDITING_ENABLEDtrueEnables auditing support where the audit package is active

Source: packages/admin/config/capell-admin.php

VariableDefaultUsed for
CAPELL_ADMIN_PATHadminFilament panel path and admin-owned route prefix
CAPELL_ADMIN_DOMAIN(null)Optional host restriction for admin panel and admin-owned routes
CAPELL_AUTO_CLEAR_CACHEtrueClears relevant caches after admin writes
CAPELL_AUTO_REFRESH_CACHEfalseRefreshes page cache after admin writes where supported
CAPELL_ADMIN_SECURITY_HEADERS_ENABLEDtrueAdds admin response security headers
CAPELL_AUTO_TRANSLATE_LANGUAGE_TEXTtrueShows the auto-translate action on language repeater tabs
CAPELL_SHOW_CONFIGURATOR_TYPE_HINTfalseAllows developer-only configurator class path hints in blueprint selectors when the admin setting also enables them
CAPELL_LAYOUT_BUILDER_DEFAULT_EDITOR_MODEcontent_firstDefault Layout Builder editor mode
CAPELL_LAYOUT_BUILDER_PREVIEW_MATCH_FRONTEND_CONTAINER_LAYOUTtrueKeeps admin layout previews aligned with frontend container behaviour
CAPELL_UPDATE_DANGER_THRESHOLD3Version-behind count treated as dangerous in upgrade notices
CAPELL_UPDATE_API_ENABLEDtrueEnables update checks against the Capell update API
CAPELL_UPDATE_API_URLhttps://capell.app/api/updates/checkUpdate API endpoint
CAPELL_UPDATE_API_TIMEOUT_SECONDS10Update API timeout
CAPELL_UPDATE_API_ENFORCE_HTTPStrueRequires HTTPS for update API calls
CAPELL_UPDATE_NOTIFICATIONS_ENABLEDtrueEnables scheduled upgrade summary notifications
CAPELL_UPDATE_NOTIFICATION_FREQUENCYweeklySchedule frequency for upgrade summary notifications
CAPELL_UPDATE_NOTIFICATION_EMAILS(empty)Comma-separated email recipients for upgrade summaries
CAPELL_EXTENSIONS_COMPOSER_DRIFT_AUTO_FIXfalseAllows all-package Composer drift repair through capell:extensions:repair-composer-drift --all; dashboard reads never run Composer

Use the shared admin entrypoint helper when configuring Filament:

use Capell\Admin\Support\AdminPanelEntrypoint;
return $panel
->domain(AdminPanelEntrypoint::domain())
->path(AdminPanelEntrypoint::path());

See Admin domain and path for path-only and subdomain examples.

Source: packages/frontend/config/capell-frontend.php

VariableDefaultUsed for
CAPELL_FRONTEND_LAYOUT_FILEcapell::appDefault Blade layout for frontend page rendering
CAPELL_FRONTEND_CONTAINER_WIDTH_DEFAULT(null)Default layout container width key when the layout has no override
CAPELL_FRONTEND_ASSET_BUILD_TOOLviteFrontend build integration: vite, mix, or static
CAPELL_FRONTEND_PUBLIC_AGGRESSIVE_PREFETCHfalseEnables Laravel Vite aggressive prefetching for public assets
CAPELL_HTML_CACHEtrueEnables static HTML cache reads
CAPELL_WRITE_HTML_CACHEtrueAllows static HTML cache writes
CAPELL_PUBLIC_RENDER_DATA_CACHEtrueCaches hydrated public render payloads
CAPELL_MINIFY_HTMLtrueMinifies rendered HTML before returning or caching
CAPELL_MODEL_EVENT_REGISTRATION_MODEdeferredCache event tracking mode: sync, deferred, or async
CAPELL_FRONTEND_REGISTER_HOME_ROUTEfalseRegisters / to the Capell frontend controller
CAPELL_FRONTEND_USE_SITE_DOMAIN_FOR_URLSfalseRewrites generated frontend URLs to the resolved site domain
CAPELL_THROW_ON_NO_SITESfalseThrows instead of returning 404 when no sites exist
CAPELL_AUTO_CREATE_SYSTEM_PAGEStrueAuto-creates missing system pages when resolving fallback pages
CAPELL_FRONTEND_DEFAULT_SCHEME(null)Optional forced scheme for generated frontend URLs, such as https
CAPELL_SITE_BASE_URL(null)Base URL override for generated site URLs
CAPELL_SCHEDULE_PAGE_CLEANERdailySchedule frequency for page cleanup
CAPELL_FRONTEND_PURGE_QUEUEdefaultQueue used for CDN purge jobs
CAPELL_FRONTEND_CDN_PROVIDER(null)CDN purge provider: cloudflare, fastly, or varnish
CAPELL_FRONTEND_CLOUDFLARE_PURGE_TOKEN(null)Cloudflare API token for tag purges
CAPELL_FRONTEND_CLOUDFLARE_ZONE_ID(null)Cloudflare zone ID for tag purges
CAPELL_FRONTEND_FASTLY_API_KEY(null)Fastly API key for surrogate-key purges
CAPELL_FRONTEND_VARNISH_URL(null)Varnish endpoint used for BAN requests
CAPELL_DEBUG_LOGfalseAdds frontend resolution debug logging

HTML content rendering is sanitized by RenderHtmlContentAction; Blade directives are not evaluated. Allow only attributes that are safe for public CMS output through capell-frontend.html_content_allowed_attributes. See packages/frontend/docs/security.md.

Source: packages/installer/config/capell-installer.php

VariableDefaultUsed for
CAPELL_SETUP_ALLOW_REINSTALLAPP_DEBUG, then falseAllows the browser installer to run again after install
CAPELL_SETUP_COMPOSER_BINARYcomposerComposer binary used by the browser installer
CAPELL_SETUP_PHP_BINARYphpCLI PHP binary used for fresh Artisan processes
CAPELL_SETUP_DEFAULT_PACKAGEScapell-app/filamentorsOptional packages preselected in the browser installer
CAPELL_SETUP_ADMIN_NAME(empty)First admin name prefilled in the browser installer
CAPELL_SETUP_ADMIN_EMAIL(empty)First admin email prefilled in the browser installer
CAPELL_SETUP_ADMIN_PASSWORD(empty)First admin plaintext password input; hashed on create

Set CAPELL_SETUP_PHP_BINARY when the web SAPI sees PHP_BINARY as php-fpm or another non-CLI executable.

For a local demo install, set the admin defaults as plaintext form values:

CAPELL_SETUP_ADMIN_NAME="Demo Admin"
CAPELL_SETUP_ADMIN_EMAIL=[email protected]
CAPELL_SETUP_ADMIN_PASSWORD=password123

CAPELL_SETUP_ADMIN_PASSWORD is not encrypted in .env and should not be pre-hashed. Capell passes it through the setup flow as the login password, then Laravel hashes it before saving the admin user.

Source: packages/marketplace/config/capell-marketplace.php

VariableDefaultUsed for
CAPELL_MARKETPLACE_ENABLEDtrueEnables Marketplace integration
CAPELL_INSTANCE_ID(null)Existing Marketplace instance ID
CAPELL_MARKETPLACE_URLhttps://capell.app/api/v1Marketplace API base URL
CAPELL_MARKETPLACE_WEB_URLhttps://capell.appPublic Marketplace web URL
capell-marketplace.marketplace.timeout_seconds10Marketplace API request timeout
capell-marketplace.marketplace.telemetry_timeout_seconds3Marketplace telemetry request timeout
capell-marketplace.marketplace.cache_ttl_seconds300Fresh Marketplace response cache TTL
capell-marketplace.marketplace.stale_cache_ttl_seconds3600Stale Marketplace response cache TTL
capell-marketplace.marketplace.warm_throttle_seconds60Minimum seconds between catalogue cache warm runs
CAPELL_MARKETPLACE_CATALOGUE_PAGE_LIMIT3Page limit for catalogue fetches
CAPELL_MARKETPLACE_WEBHOOK_URL(null)Explicit public callback URL for Marketplace events
CAPELL_MARKETPLACE_WEBHOOK_SECRET(null)Shared secret for Marketplace webhook verification
CAPELL_MARKETPLACE_TROUBLESHOOTING_URLhttps://docs.capell.app/extensions/marketplace-heartbeatHelp URL shown in Marketplace diagnostics

Only override CAPELL_MARKETPLACE_URL for staging or self-hosted Marketplace APIs. If Marketplace reports that api/registration-sessions cannot be found, the app is probably using an old unversioned API URL.

Static HTML cache output is owned by the installed cache/static package, not by capell-app/frontend alone. Only add a dedicated disk when that package’s docs or installer patch expects it. Older installs commonly use:

'page_cache' => [
'driver' => 'local',
'root' => public_path('page-cache'),
'throw' => false,
],

The web server user must be able to write to this path when the installed cache package has CAPELL_WRITE_HTML_CACHE=true. Do not configure Nginx or Apache to serve public/page-cache unless an installed cache package owns that directory and its public-output safety tests pass.

Add a dedicated Capell channel to config/logging.php if the installer has not patched it already:

'capell' => [
'driver' => 'single',
'path' => storage_path('logs/capell.log'),
'level' => 'debug',
],

Frontend logging uses this channel when it exists and falls back to Laravel logging when it does not.

Register a morph map in the consuming app if polymorphic records may outlive class renames:

use Capell\Core\Models\Language;
use Capell\Core\Models\Page;
use Capell\Core\Models\Site;
use Capell\Core\Models\Blueprint;
use Illuminate\Database\Eloquent\Relations\Relation;
Relation::morphMap([
'language' => Language::class,
'page' => Page::class,
'site' => Site::class,
'blueprint' => Blueprint::class,
]);