Skip to content

Configuration

Damilola Ogunsakin edited this page Oct 18, 2026 · 9 revisions

Configuration

Everything is in the package's config/video-demo.php, with comments, and most of it can be set in .env. To change more, publish it with php artisan vendor:publish --tag=video-demo-config and keep only what you change, or all of it.

Your copy is laid over the package's config: every setting in it wins, and anything it doesn't have comes from the package. So styles, models and devices added in an upgrade reach your app without touching your copy. Plain lists, such as middleware, are yours alone. To turn off a built-in style, model or device, set it to false:

'styles' => [
    'promo' => false,
],

Older versions of video-demo:install made a copy in every app. Install now removes such a copy when nobody edited it, and says so.

The settings you are most likely to change

Setting .env What it does
ai.model, ai.effort VIDEO_DEMO_MODEL, VIDEO_DEMO_EFFORT Defaults for new videos
ai.models The models offered, their provider and prices
ai.api_key ANTHROPIC_API_KEY The Anthropic key
ai.code.paths, ai.code.deny What the AI may read, and files it never sees
ai.code.redact, ai.code.redact_patterns Hiding secrets before code is sent
ai.notes Anything the AI should know that the code doesn't say, such as test card numbers
recorder.base_url VIDEO_DEMO_BASE_URL Where your local app is served, if not APP_URL
recorder.login_as VIDEO_DEMO_LOGIN_AS The user to record as by default, on your own data
recorder.cookie_banner VIDEO_DEMO_COOKIE_BANNER A cookie banner: accept it before recording so no page shows it (the default), leave it, or the CSS selector of its accept button
recorder.user_types The types of user to record as, when they can't be found from your roles
recorder.check_pages Check pages before planning and recording (on by default)
recorder.rehearse VIDEO_DEMO_REHEARSE Rehearse each plan without recording before recording it, on sample data (on)
recorder.channel VIDEO_DEMO_BROWSER_CHANNEL chrome to record with installed Chrome, for apps that play MP4
recorder.ffmpeg VIDEO_DEMO_FFMPEG The ffmpeg to run
recorder.node, recorder.npm, recorder.node_modules VIDEO_DEMO_NODE, VIDEO_DEMO_NPM, VIDEO_DEMO_NODE_MODULES The Node and npm to run, and where Playwright is installed
recorder.speed VIDEO_DEMO_SPEED How much faster videos play than they were recorded (1)
sample_data.default VIDEO_DEMO_SAMPLE_DATA Whether new videos record on sample data (yes)
sample_data.seeders The seeders that fill the sample database
queue.connection, queue.retry_after VIDEO_DEMO_QUEUE_CONNECTION The queue videos run on; empty uses the package's own
storage.disk VIDEO_DEMO_DISK Where published videos go: a disk production also reads, such as S3, or video-demo-repo to keep them in your codebase
frontend.url, frontend.sign_in, frontend.token_key VIDEO_DEMO_FRONTEND_URL, VIDEO_DEMO_SIGN_IN, VIDEO_DEMO_TOKEN_KEY A separate frontend to record, and how the recorder signs in to it
frontend.path, frontend.code VIDEO_DEMO_FRONTEND_PATH The frontend's repository, and the folders of it the AI may read (src)
studio.enabled VIDEO_DEMO_STUDIO Turn the studio on outside local
studio.gate Who may use the studio outside local
library.public, library.private The library's prefixes, middleware and domains
library.stats VIDEO_DEMO_STATS Count plays, how far viewers get, and searches that found nothing (off); see The Library
limits.max_cost_per_video VIDEO_DEMO_MAX_COST Each new video's spending limit ($0.50)
limits.page_looks VIDEO_DEMO_PAGE_LOOKS How many pages the AI may look at while planning a video (3; 0 turns it off)
limits Request and repair limits per video
styles The styles offered at first
devices, default_devices Screen sizes, and which are switched on
voice.default, music.default VIDEO_DEMO_VOICE, VIDEO_DEMO_MUSIC The voice-over and music new videos start with; see Voice-over and Music
music.volume, music.tracks Music's volume, and your own tracks
music.builtin, music.builtin_url VIDEO_DEMO_BUILT_IN_MUSIC, VIDEO_DEMO_BUILT_IN_MUSIC_URL Offer the four built-in tracks (on), and where they are downloaded from
ui.name VIDEO_DEMO_NAME The name on the studio and library pages
ui.accent, ui.logo, ui.font_url The look of the studio and library
ui.favicon VIDEO_DEMO_FAVICON The tab icon: the package's own, app for your app's favicon, or an image URL
ui.examples, ui.examples_url VIDEO_DEMO_EXAMPLES, VIDEO_DEMO_EXAMPLES_URL The Examples page (false hides it), and where its videos come from

What the AI may read

By default the AI reads app, routes, resources/views, resources/js, resources/ts and lang, never files matching ai.code.deny (such as .env and keys). Paths outside the allowed folders, including ../ tricks, are refused. Anything that looks like a secret is replaced with [redacted: …] before it is sent. Add your own patterns with ai.code.redact_patterns.

When the code doesn't settle a label, the AI may also look at a page as the video's user, up to limits.page_looks times per video. What it sees is redacted the same way.

Clone this wiki locally