Skip to content

Configuration file

Every key of config/griglia.php — publish it with php artisan vendor:publish --tag=griglia-config. Decided by whoever installs the package; the run-time options live in Settings.

Key Environment variable Default What it is
route_prefix GRIGLIA_ROUTE_PREFIX '' URL prefix of the package pages ('' = site root: /, /settings, /dashboard)
table_prefix GRIGLIA_TABLE_PREFIX 'griglia_' Prefix of the database tables owned by the package (checklists, todos, ingredients, attachments, questions, context_groups, context_blocks): keeps them together and out of the way of the host app's own tables. '' = the historical unprefixed names. Changing it on a live database means renaming the tables yourself. The tables of third-party libraries (settings, notifications, push_subscriptions) are never prefixed.
agent_name GRIGLIA_AGENT_NAME 'Agent' How the UI calls the coding agent (Claude, Codex, Gemini, …): labels like «Claude's answer», «Claude's skills»
agents GRIGLIA_AGENTS Several agents at once (key => label), e.g. GRIGLIA_AGENTS="claude:Claude Code,codex:Codex CLI". A list (project) chooses its default agent, a task may override it. Empty = a single agent named agent_name.
agent_key GRIGLIA_AGENT_KEY Which of those agents is running here: the key griglia:check assumes when --agent=<key> is omitted, so that this installation sees only its own tasks. Empty = the agent must pass --agent= itself.
mode GRIGLIA_MODE 'server' Mode: 'server' (default) = authenticated users with their own lists; 'local' = no authentication, one global set of lists (a board on your own machine). Overridable from /settings (AppSettings mode).
access_gate GRIGLIA_ACCESS_GATE Server mode: who may open the board. If the user model has canAccessGriglia(): bool it decides; otherwise this Gate ability (e.g. 'access-griglia') if set; otherwise every authenticated user.
admin_gate GRIGLIA_ADMIN_GATE Server mode: Gate ability deciding who may ADMINISTER the board (settings, agent context, theme packs). It is consulted after canManageGriglia(): bool on the user model and before admins.
admins GRIGLIA_ADMINS Server mode: the administrators themselves, as ids or e-mails (GRIGLIA_ADMINS="1,alice@example.com"). Used when neither canManageGriglia() nor admin_gate decides. Empty = the first registered user only.
allow_local_from_ui GRIGLIA_ALLOW_LOCAL_FROM_UI false Allow switching the board to local mode (no authentication) from /settings. Off by default: the override is accepted from the UI only when the app runs in the local environment.
middleware array Middleware of the package routes. Authentication is enforced by the package itself according to the mode (Alle80\Griglia\Http\Middleware\GrigliaAccess), so 'auth' is not needed here (and is ignored).
local_channel 'griglia.local' Public broadcast channel used for live updates in local mode
register_routes true Register the package routes at all (set false to define your own routes with the components)
home_route true Register a home route (route_prefix + '/') showing the theme selected in /settings
dashboard_route GRIGLIA_DASHBOARD_ROUTE '/dashboard' Legacy dashboard path: it redirects to the board, which is full width on every route. Set to null/false to drop it. Without a home route it serves the board itself, and the slide-out board tab then points here — otherwise the tab always frames the home route, never this bare path.
inject_tab_except array Paths where the board tab must NOT be injected (globs, Request::is style, matched on the path and on the route name). The tab is injected in every HTML page of the host application by default; the package pages are excluded anyway (their layout already prints it), as are AJAX/JSON responses, redirects, downloads and partial updates. Switch the tab off everywhere from /settings instead.
default_theme 'slate' Generic theme used by the home route and as fallback
themes array Extra generic themes (slug => definition, same keys as Alle80\Griglia\Themes::builtin(); a built-in slug is overridden key by key)
user_model GRIGLIA_USER_MODEL 'App\\Models\\User' User model owning the lists
attachments_disk GRIGLIA_ATTACHMENTS_DISK 'local' Filesystem disk for image attachments. The private local disk is the secure default.
attachments_via_controller GRIGLIA_ATTACHMENTS_VIA_CONTROLLER true Serve attachments through the authorised, owner-scoped controller. Keep enabled for private disks; disable only when attachments_disk deliberately points to a publicly accessible disk.
agent_list GRIGLIA_AGENT_LIST 'dev' Name of the list used as request channel between the user and the coding agent (griglia:check)
default_list_name GRIGLIA_DEFAULT_LIST_NAME '' Name of the first list created for a new user. Empty = the translated name (griglia::t.default_list)
broadcast_channel 'App.Models.User.{id}' Private broadcast channel per user for live updates ({id} = user id); requires a broadcaster
push_allowed_hosts array Web Push: hosts a browser subscription endpoint may point to (https only). Wildcards allowed. Empty = any https host.
rate_limits array Rate limits (Laravel throttle definitions) of the expensive endpoints
agent_status_file GRIGLIA_AGENT_STATUS_FILE storage_path('app/griglia/agent-status.json') Agents status snapshot (plan + usage windows), written by griglia:agent-status-import; shown in /agents
skills_file GRIGLIA_SKILLS_FILE storage_path('app/griglia/skills.json') Catalogue of the agent's skills (JSON written by griglia:skills-import; shown in the task modal)
speech_prompt GRIGLIA_SPEECH_PROMPT null Vocabulary hint sent with the audio of the speech to text (helps with names and jargon: «l'agente» instead of «la gente»). null = use the translated default, '' = no hint at all.
speech_max_seconds GRIGLIA_SPEECH_MAX_SECONDS 300 Hard limit of a single dictation, in seconds (0 = no limit): when it is reached the recording is closed and transcribed, instead of growing until the upload or the provider refuses it.
assets GRIGLIA_ASSETS 'precompiled' Front-end assets: 'precompiled' (default) = the CSS/JS built by the package, published in public/vendor/griglia/build — nothing to build in the host app; 'vite' = the host app bundles resources/css/griglia.css + resources/js/griglia.js in its own Vite build (entries below)
vite_entries array With assets = 'vite': the entry points of the host app passed to @vite() on the package pages.
assets_url '/vendor/griglia/build' With assets = 'precompiled': public URL where the published build is served from.
echo array Runtime configuration of the Echo client (live updates). Empty key = no WebSocket at all.
fonts_url GRIGLIA_FONTS_URL 'https://fonts.bunny.net/css?family=' Web fonts of the themes: URL prefix that receives the theme's fonts string (bunny.net by default, Google-compatible); '' disables external fonts (self-host them in your CSS instead)
Griglia v0.92.0