Skip to content

Configuration ​

Publish the files to change them:

bash
php artisan vendor:publish --tag=lynx-config
php artisan vendor:publish --tag=lynx-admin-config

config/lynx.php ​

KeyDefaultMeaning
routes.enabledtrue (LYNX_ROUTES)Register the catch-all page route.
routes.middleware['web']Middleware of the page route.
trailing_slashfalse (LYNX_TRAILING_SLASH)End page URLs with a slash (/courses/risk/), for example to keep the addresses of a site moved from another system. By default they have none (/courses/risk), as Laravel writes them. Both forms open the page.
views_pathtemplatesWhere template views live.
localization.remembertrueRemember the visitor's language in the session and on the user.
localization.accept_languagefalseUse the browser's language on a first visit.
localization.redirect_default_prefixtrueRedirect URLs that carry the default language's prefix.
backups.pathstorage/app/lynx/backupsWhere lynx:backup writes.
backups.keep14Backups kept.
backups.schedulenulldaily or hourly to run backups from the scheduler.
revisions.keep50Revisions kept per page.
edit_lock_seconds120How long an editor's lock lasts without renewal.
permissions.open_until_rolesfalseEvery signed in user may do everything until any user has a role (LYNX_OPEN_UNTIL_ROLES); local work only.
permissions.anonymous_rolenullRole for MCP clients and agents acting for no user.
permissions.registration_roleguestRole for people who sign up (LYNX_REGISTRATION_ROLE); null gives none.
agents.allowed_languages[]Languages agents may write; empty means all.
agents.default_limit, agents.max_limit25, 100Page limits for agent searches.
mcp.web.enabledfalseServe the MCP server over HTTP at mcp.web.path.
mcp.web.abilitylynx:mcpAbility a Sanctum token needs for the MCP web route; empty accepts any token.
ai.provider, ai.model, ai.translation_modelnullThe agent's provider and models.
ai.plan_seconds120 (LYNX_AI_PLAN_SECONDS)Longest an agent run may take; past it, the run stops and keeps nothing.

config/lynx-admin.php ​

KeyDefaultMeaning
prefixlynxURL prefix of the admin.
middleware['web', 'auth']Middleware of every admin route.
localenone (LYNX_ADMIN_LOCALE)The admin's default language. Empty: the app's locale. See The admin's language.
localesen, ptThe languages editors can choose in their menu, as code and name.
auth.enabledautoWho signs users in: auto, app or false; see Sign-in.
auth.invitation_days7How long an invitation link works.
themesystemlight, dark or system.
appearance.*BlatUI options: base, theme, radius, font, heading font, shadow, spacing, tracking, input style, font loading.
branding.nameLynx (LYNX_ADMIN_NAME)The site's name on the sign-in screens, the sidebar and browser tabs. With Lynx and no logo, the admin shows the Lynx mark and favicon.
branding.logonone (LYNX_ADMIN_LOGO)A logo URL or a path below public/.
branding.backgroundnone (LYNX_ADMIN_BACKGROUND)The sign-in screens' backdrop, as #rrggbb.
branding.accentnone (LYNX_ADMIN_BRAND_ACCENT)Buttons, links and focus rings, as #rrggbb.
stylesheets[]Extra stylesheets loaded after the admin CSS.
schema_editingtrueWhether the schema screens can change the schema.
tree.per_page20Pages per page in the tree.

config/lynx-seo.php ​

Comes with lynxcms/seo; publish it with php artisan vendor:publish --tag=lynx-seo-config.

KeyDefaultMeaning
title_pattern{title} | {site}Titles of pages without an SEO title. Editors can change it per language in the SEO settings.
description_fields['summary', 'body']Fields read, in order, for a description when a page sets none.
description_length160Longer descriptions are cut at a word.
image_fields[]Image fields read, in order, for the share image when a page sets none.
noindex_hiddentrueHidden pages ask robots not to index them.
block_non_productiontrue (LYNX_SEO_BLOCK_NON_PRODUCTION)Outside production, every page says noindex and robots.txt disallows everything.
audit_limit2000Pages the admin's SEO audit checks at most.
robots.enabledtrueServe /robots.txt.

config/lynx-sitemap.php ​

Comes with lynxcms/sitemap; publish it with php artisan vendor:publish --tag=lynx-sitemap-config.

KeyDefaultMeaning
enabledtrue (LYNX_SITEMAP)Serve /sitemap.xml and its parts.
per_file10000URLs per file before the sitemap splits into parts under an index; 50000 at most. Editors can change it in the admin.
group_bynonenone for one list of parts, template for one sitemap per template. Editors can change it in the admin.
include_hiddenfalseList hidden pages too.
exclude_templates[]Templates whose pages never appear; editors can add more in the admin.
cache.storenullCache store for the built files; null uses the default store.
cache.ttl86400Seconds a built file is kept. Any content change drops it sooner.

config/lynx-media.php ​

Comes with lynxcms/media; publish it with php artisan vendor:publish --tag=lynx-media-config. See Images and Files.

KeyDefaultMeaning
diskpublic (LYNX_MEDIA_DISK)Disk of media files, under {root}/{page id}/.
private_disklocal (LYNX_MEDIA_PRIVATE_DISK)Disk of private fields' files, served through /lynx-media/{page}/{file}.
rootlynxFolder on both disks that holds the pages' folders.
remote.urlnull (LYNX_MEDIA_REMOTE)On a developer's machine, the https address of production's media folder; missing public files download from it. Ignored in production.
remote.max_kb51200Largest file downloaded from production.
downloads.enabledtrue (LYNX_MEDIA_URL_DOWNLOADS)Let media.store download files from URLs.
downloads.allowed_hosts[]Hosts trusted for downloads on any address and port, such as your own asset server.
quality82 (LYNX_MEDIA_QUALITY)JPEG and WebP quality of image sizes.
presetsthumb, card, heroNamed sizes for $image->preset('card').
prune_after_hours24Age before lynx:media:prune deletes files nothing uses.

config/lynx-cache.php ​

Comes with lynxcms/cache; publish it with php artisan vendor:publish --tag=lynx-cache-config. See Page cache.

KeyDefaultMeaning
pages.enabledfalse (LYNX_PAGE_CACHE)Store guest pages and send them again until content changes.
pages.driverfiles (LYNX_PAGE_CACHE_DRIVER)files for HTML files on this server, store for a cache store every server shares.
pages.pathpublic/lynx-cacheFolder of the files driver.
pages.compilednullSettings file serve.php reads; null uses bootstrap/cache/lynx-cache.php.
pages.storenullCache store of the store driver and of the clear counters; null uses the default store.
pages.hosts[]Hosts whose pages are stored; empty uses the host of app.url.
pages.lifetime0Seconds a page is kept when its template rule sets none; 0 keeps it until content changes.
pages.bypass_cookieslynx_bypass, lynx_page_passwordRequests with one of these cookies always go to Laravel.
pages.ignored_parametersutm_*, gclid, fbclid, ...Query parameters dropped before looking a page up.
pages.templates['*' => []]Template rules: lifetime, allowed query parameters and what a change clears.
pages.csrfrefresh (LYNX_PAGE_CACHE_CSRF)refresh stores pages holding the CSRF token with a placeholder that a script replaces with a fresh token; skip leaves them out. A template rule's csrf overrides it.
pages.max_variants50Query variants stored per page.
pages.edge_ttl0Seconds an edge cache may keep a sent page; 0 sends no public Cache-Control.
pages.debugfalse (LYNX_PAGE_CACHE_DEBUG)Add X-Lynx-Cache headers with the reason a page was not stored.
fragments.enabledtrue (LYNX_FRAGMENT_CACHE)Keep what @lynxCache and lynx()->cache()->remember() wrap.
fragments.storenullCache store for fragments; null uses the default store.
fragments.ttlnullSeconds a fragment is kept when it sets none; null keeps it until what it depends on changes.
fragments.vary_cookieslynx_page_passwordGuests carrying these cookies get their own copies.

config/lynx-static.php ​

Comes with lynxcms/static-site; publish it with php artisan vendor:publish --tag=lynx-static-config. The keys are listed in Static site export.

Released under the MIT License.