Repository navigation
EN Reference Environment Variables
Français · Type: reference · Audience: author, admin, contributor · Context: engine repository, created project, hosted Studio, Reality Bridge · Status: ready · Applies from: 4.5.0
Every environment variable quest-n-click reads, and the ones Clever Cloud and its add-ons give the hosted Studio. Each
has its own section: link to it as reference.environment-variables.md#studio-session-key (the name in lowercase,
_ written -).
- Origin says who sets the variable: you (the code reads it), the build, the platform (Clever Cloud, GitHub Actions, npm, the system), a Clever Cloud add-on, or a CI workflow. A variable that a command of quest-n-click sets itself says so: you do not set it.
-
Secret: read once when the Studio Server starts, then removed from its environment, so no child process inherits
it; never written to a log. Each secret can also come from a file:
STUDIO_SESSION_KEY_FILE=/run/secrets/sessionreads the key from that file, which must be readable by its owner only (mode 0600) on Linux and macOS. The file wins over the variable. - Read by links the files of the code that read it, at the documented version.
- On Clever Cloud, set a variable with
clever env set NAME valueon the right app;clever envprints multi-line values in full, so filter its output before you share it.
Limit ·
generated-scopeThe sections below are generated fromwiki/data/env.jsonand from the code: whatprocess.env,import.meta.env, Python'sos.environ, the shell scripts ofops/andclevercloud/, and the workflows of.github/workflows/(theirenv:blocks,${{ env.X }},$GITHUB_ENVand their shell) read. A variable read only by a third-party library (the standardOTEL_*,NODE_OPTIONS,PG*) is not listed.
What the studio-server app reads: on Clever Cloud, set them with clever env set on the studio app, never on the worker. Each secret can come from a file instead (<NAME>_FILE, mode 0600), and leaves the environment once read.
Not taken from your environment: the Studio Server builds the environment of its own git commands, sets GIT_DIR there to the game's repository, and clears it for git init. A GIT_DIR of yours never reaches them.
- Origin: set by the Studio Server itself.
- Read by:
studio-server/src/server/git.ts.
1 turns on the daily backup to the bucket that clevercloud/cron.json runs at 03:17 UTC (ops/studio/backup-cron.sh). Set it on the studio app only, never on the worker.
- Origin: you set it; the code reads it.
- Read by:
ops/studio/backup-cron.sh.
How many backups the daily backup keeps in the bucket (--keep); 14 when unset.
- Origin: you set it; the code reads it.
- Read by:
ops/studio/backup-cron.sh.
The path of the configuration file, read when no --config <file> is given. It wins over STUDIO_CONFIG_JSON.
- Origin: you set it; the code reads it.
- Read by:
studio-server/src/server/main.ts.
The whole configuration as JSON on one line, for a platform that gives no file (Clever Cloud). It holds no secret; the loader refuses an unknown key.
- Origin: you set it; the code reads it.
- Read by:
studio-server/src/server/main.ts.
The PostgreSQL connection URI (store.kind: postgres). On Clever Cloud, leave it unset: the linked add-on's POSTGRESQL_ADDON_URI is read instead. For a restore drill, point it at the drill's empty database, never at production.
- Origin: you set it; the code reads it.
- Secret: yes: read once at start, then removed from the environment; never logged.
- From a file:
STUDIO_DATABASE_URL_FILEnames a file to read it from instead (mode 0600 on Linux and macOS). - Read by:
studio-server/src/server/config.ts.
Optional (4.2.3): the SSH deploy key of the game's Git repository (git.remote). Not needed for a public https remote.
- Origin: you set it; the code reads it.
- Secret: yes: read once at start, then removed from the environment; never logged.
- From a file:
STUDIO_GIT_KEY_FILEnames a file to read it from instead (mode 0600 on Linux and macOS). - Read by:
studio-server/src/server/config.ts.
Optional (4.2.3): the bearer token of GET /metrics, 32 characters or more. Without it there is no /metrics route (404).
- Origin: you set it; the code reads it.
- Secret: yes: read once at start, then removed from the environment; never logged.
- From a file:
STUDIO_METRICS_TOKEN_FILEnames a file to read it from instead (mode 0600 on Linux and macOS). - Read by:
studio-server/src/server/config.ts.
The OpenID provider's secret for the studio client. Required when the configuration has oidc.
- Origin: you set it; the code reads it.
- Secret: yes: read once at start, then removed from the environment; never logged.
- From a file:
STUDIO_OIDC_CLIENT_SECRET_FILEnames a file to read it from instead (mode 0600 on Linux and macOS). - Read by:
studio-server/src/server/config.ts.
The S3 (Cellar) access key id for the bucket (blobs.kind: s3). On Clever Cloud the add-on's CELLAR_ADDON_KEY_ID is read when it is unset.
- Origin: you set it; the code reads it.
- Secret: yes: read once at start, then removed from the environment; never logged.
- From a file:
STUDIO_S3_KEY_ID_FILEnames a file to read it from instead (mode 0600 on Linux and macOS). - Read by:
studio-server/src/server/config.ts.
The S3 (Cellar) secret key for the bucket. On Clever Cloud the add-on's CELLAR_ADDON_KEY_SECRET is read when it is unset.
- Origin: you set it; the code reads it.
- Secret: yes: read once at start, then removed from the environment; never logged.
- From a file:
STUDIO_S3_KEY_SECRET_FILEnames a file to read it from instead (mode 0600 on Linux and macOS). - Read by:
studio-server/src/server/config.ts.
The keys that seal the members' session cookies: one key, or several separated by commas, each 32 characters or more (openssl rand -base64 48). The first key seals; every key listed opens. To rotate, put the new key first and keep the old one listed until the sessions it sealed have expired; dropping a key logs out the sessions sealed with it. Required with oidc.
- Origin: you set it; the code reads it.
- Secret: yes: read once at start, then removed from the environment; never logged.
- From a file:
STUDIO_SESSION_KEY_FILEnames a file to read it from instead (mode 0600 on Linux and macOS). - Read by:
studio-server/src/server/config.ts.
The Ed25519 private key (PEM) that signs the jobs sent to the worker; line breaks may be written \n. Made by npm run studio-server -- worker-keys --out <folder>. Required with a worker.
- Origin: you set it; the code reads it.
- Secret: yes: read once at start, then removed from the environment; never logged.
- From a file:
STUDIO_WORKER_KEY_FILEnames a file to read it from instead (mode 0600 on Linux and macOS). - Read by:
studio-server/src/server/config.ts.
The folder of the built Studio page the server serves, when the configuration has no clientDir; .cache/studio-client beside the engine by default. The release archive's launcher sets it.
- Origin: you set it; the code reads it.
- Read by:
scripts/pack.mjs,studio-server/src/server/main.ts.
What the processing worker (npm run studio-worker) reads. The worker holds no secret: only the public key that checks the jobs the Studio signs.
The name of the one Studio whose jobs this worker runs: the same as worker.instance in the Studio's configuration.
- Origin: you set it; the code reads it.
- Read by:
studio-server/src/worker/main.ts.
The Ed25519 public key (PEM) that checks the Studio's signed jobs: the content of studio-worker.pub.
- Origin: you set it; the code reads it.
- Read by:
studio-server/src/worker/main.ts.
A file holding the public key, read in place of WORKER_PUBLIC_KEY when set.
- Origin: you set it; the code reads it.
- Read by:
studio-server/src/worker/main.ts.
Where the build hook installed the asset tools' Python packages; .python in the worker's folder when unset.
- Origin: you set it; the code reads it.
- Read by:
studio-server/src/worker/prepare.ts.
Clever Cloud gives these to an app, or reads them itself to build and run it. The add-ons' variables reach the studio app only when the add-on is linked to it.
Leave it unset: both apps build from the repository's root. An app that held another project may still have one (clever env rm APP_FOLDER).
- Origin: set by you; Clever Cloud reads it.
- Read by: no file of the code; the platform reads it.
The app's folder on the instance; the daily backup runs from it (cd "$APP_HOME" in a clever ssh session too).
- Origin: set by Clever Cloud.
- Read by:
ops/studio/backup-cron.sh.
The path Clever Cloud probes before it sends traffic to a new instance: /startz on the studio app.
- Origin: set by you; Clever Cloud reads it.
- Read by: no file of the code; the platform reads it.
Set it to install on both apps: the server runs from the repository with tsx, a development dependency.
- Origin: set by you; Clever Cloud reads it.
- Read by: no file of the code; the platform reads it.
A command Clever Cloud runs after the build: npm run studio-client on the studio app; the worker's installs the Python packages from ops/studio/worker-requirements.lock.
- Origin: set by you; Clever Cloud reads it.
- Read by: no file of the code; the platform reads it.
The command that starts the app: npm run studio-server -- serve on the studio app, npm run studio-worker on the worker.
- Origin: set by you; Clever Cloud reads it.
- Read by: no file of the code; the platform reads it.
The Cellar add-on's access key id, read when STUDIO_S3_KEY_ID is not set.
- Origin: injected by the Clever Cloud Cellar add-on.
- Secret: yes: read once at start, then removed from the environment; never logged.
- Read in place of
STUDIO_S3_KEY_IDwhenSTUDIO_S3_KEY_IDis not set. - Read by:
studio-server/src/server/config.ts.
The Cellar add-on's secret key, read when STUDIO_S3_KEY_SECRET is not set.
- Origin: injected by the Clever Cloud Cellar add-on.
- Secret: yes: read once at start, then removed from the environment; never logged.
- Read in place of
STUDIO_S3_KEY_SECRETwhenSTUDIO_S3_KEY_SECRETis not set. - Read by:
studio-server/src/server/config.ts.
The number of the app's instance. The daily backup runs only on instance 0, so two instances never both back up.
- Origin: set by Clever Cloud.
- Read by:
ops/studio/backup-cron.sh.
The port to listen on. Clever Cloud gives it to the studio and worker apps; elsewhere 8080 when unset. A port in the Studio's configuration wins over it.
- Origin: set by the host (Clever Cloud gives it).
- Read by:
scripts/start.mjs,studio-server/src/server/config.ts,studio-server/src/worker/main.ts.
The PostgreSQL add-on's connection URI. The Studio Server reads it when STUDIO_DATABASE_URL is not set.
- Origin: injected by the Clever Cloud PostgreSQL add-on.
- Secret: yes: read once at start, then removed from the environment; never logged.
- Read in place of
STUDIO_DATABASE_URLwhenSTUDIO_DATABASE_URLis not set. - Read by:
studio-server/src/server/config.ts.
The app's folder, used by clevercloud/cron.json (crons need absolute paths) and by the backup script when APP_HOME is missing.
- Origin: set by Clever Cloud.
- Read by:
clevercloud/cron.json,ops/studio/backup-cron.sh.
Read by the engine's commands, the local Studio and its MCP server, in the engine repository or in a created project.
The folder of the built assets that ship, in place of public/assets (a test fixture's own files).
- Origin: you set it; the code reads it.
- Read by:
tools/game.ts.
The built folder npm run weight measures; dist when unset.
- Origin: you set it; the code reads it.
- Read by:
tools/weight.ts.
The path of the Furnace executable the audio pipeline renders with, when it is not where python -m mdpipe setup put it.
- Origin: you set it; the code reads it.
- Read by:
tools/audio/mdpipe/render.py.
Which game of games/ the engine repository's commands work on (GAME=reference npm run validate). Without it, the game last selected (npm run game -- <id>), then config.game of package.json, then demo.
- Origin: you set it; the code reads it.
- Read by:
.github/workflows/ci.yml,.github/workflows/prove.yml,scripts/e2e-studio.mjs, and 9 more.
The game folder the tools work on, anywhere on disk. When set, it is always the folder read, whatever GAME says, in place of games/<GAME> or a created project's game/; without GAME, the game's id is the folder's name.
- Origin: you set it; the code reads it.
- Read by:
scripts/e2e-worker-container.ts,scripts/ops-qualify/setup.mjs,tools/assets.py, and 3 more.
0 turns the solver's result cache off for one run (like --no-cache).
- Origin: you set it; the code reads it.
- Read by:
tools/proof-cache.ts.
Where the solver's result cache lives; .cache/proofs of the project when unset.
- Origin: you set it; the code reads it.
- Read by:
tools/proof-cache.ts.
The Python interpreter quest-n-click assets runs; python3 when unset.
- Origin: you set it; the code reads it.
- Read by:
cli/quest-n-click.mjs.
1 lets the Studio's Assistant call a provider URL you type yourself; refused otherwise.
- Origin: you set it; the code reads it.
- Read by:
tools/studio/assistant.ts.
The dev server the MCP screenshot tool opens; http://localhost:5173/ when unset.
- Origin: you set it; the code reads it.
- Read by:
tools/mcp/server.ts.
1 makes the dev server and the local Studio listen on the local network, behind a token. npm run dev:lan and studio:lan set it.
- Origin: set by
npm run dev:lanandstudio:lan. - Read by:
tools/studio/security.ts,vite.config.ts.
The created project the engine's tools work on. The quest-n-click command sets it to the folder it runs in; you do not set it yourself.
- Origin: set by the
quest-n-clickcommand. - Read by:
tools/assets.py,tools/game.ts.
The host names the local Studio answers to in LAN mode, comma-separated; any other Host is refused. studio:lan sets it from the machine's addresses.
- Origin: set by
npm run dev:lanandstudio:lan. - Read by:
tools/studio/security.ts.
The token the local Studio asks for in LAN mode. studio:lan draws one at random unless you set it.
- Origin: you set it; the code reads it.
- Read by:
tools/serve-args.ts,tools/studio/security.ts.
Read when Vite builds the game, the Studio or a preview. The npm scripts set most of them; VITE_*, BASE_URL and DEV end up inside the built page.
The sub-path the game is served under (/<repo>/ on GitHub Pages); / when unset.
- Origin: read when the page or the package is built.
- Read by:
.github/workflows/ci.yml,tools/vite/plugins.ts.
The base the page was built for, from BASE_PATH.
- Origin: set by Vite (read when the page or the package is built).
- Read by:
src/main.ts,src/studio/api.ts,src/studio/game-origin.ts.
True under the dev server (npm run dev), false in a build.
- Origin: set by Vite (read when the page or the package is built).
- Read by:
src/main.ts.
1 builds or serves the Studio's pages beside the game (npm run studio, the demo Studio).
- Origin: set by the npm scripts (read when the page or the package is built).
- Read by:
.github/workflows/ci.yml,tools/vite/plugins.ts,vite.config.ts.
1 builds the hosted Studio's page only (npm run studio-client).
- Origin: set by
npm run studio-client(read when the page or the package is built). - Read by:
vite.config.ts.
1 builds the demo Studio, which runs in the browser with no server (npm run build:studio-demo).
- Origin: set by
npm run build:studio-demo(read when the page or the package is built). - Read by:
.github/workflows/ci.yml,src/engine/dev/editor.ts,src/main.ts, and 1 more.
1 builds the Studio for a Studio Server (npm run studio-client).
- Origin: set by
npm run studio-client(read when the page or the package is built). - Read by:
src/studio/main.ts.
1 in a revision's preview, which the worker builds with the editing tools in; 0 in a published build.
- Origin: set by the Studio worker (read when the page or the package is built).
- Read by:
src/main.ts,studio-server/src/worker/preview-build.ts.
Read by quest-n-click-bridge (or npm run bridge in the engine repository).
The Bridge's store when no --store= is given: jsonl, sqlite, sqlite:<file> or a postgres:// URL. It wins over store in config.json.
- Origin: you set it; the code reads it.
- Read by:
bridge/src/cli-store.ts,tools/load-report.ts.
A file holding the store's URL, read when BRIDGE_STORE is empty, so a database password is mounted as a secret file and never shows in a process listing.
- Origin: you set it; the code reads it.
- Read by:
bridge/src/cli-store.ts.
Where the Bridge exports its measures over OTLP, when @opentelemetry/sdk-node is installed beside it; nothing is exported otherwise. The SDK reads the other standard OTEL_* variables itself.
- Origin: you set it; the code reads it.
- Read by:
bridge/src/telemetry.ts.
Read by the engine repository's test, CI and release scripts only. A created project never needs them.
The pg module tools/backup-memory.ts imports, when it is not the repository's own.
- Origin: you set it; the code reads it.
- Read by:
tools/backup-memory.ts.
A PostgreSQL URL the tests run the Bridge's store and the mutation runs against; those tests are skipped without it.
- Origin: you set it; the code reads it.
- Read by:
.github/workflows/candidate.yml,.github/workflows/ci.yml,.github/workflows/mutation.yml, and 3 more.
A PostgreSQL URL npm run external-consumer also runs the installed Bridge against.
- Origin: you set it; the code reads it.
- Read by:
.github/workflows/candidate.yml,scripts/external-consumer.mjs.
The browser an end-to-end test runs in (chromium, firefox, webkit); Chromium when unset.
- Origin: you set it; the code reads it.
- Read by:
.github/workflows/ci.yml,scripts/e2e-a11y.mjs,scripts/e2e-pwa.mjs, and 2 more.
A CPU slow-down factor for the end-to-end tests in Chromium (4 runs four times slower).
- Origin: you set it; the code reads it.
- Read by:
scripts/e2e/lib.mjs.
Any value makes the hosted Studio's end-to-end test print what it does.
- Origin: you set it; the code reads it.
- Read by:
scripts/e2e-studio-hosted.ts.
keyboard plays the end-to-end walkthrough with the keyboard instead of taps.
- Origin: you set it; the code reads it.
- Read by:
scripts/e2e/lib.mjs.
Where an end-to-end test writes its screenshots and reports.
- Origin: you set it; the code reads it.
- Read by:
.github/workflows/ci.yml,scripts/e2e-a11y.mjs,scripts/e2e/lib.mjs.
Any value makes e2e:weight print the requests it counted.
- Origin: you set it; the code reads it.
- Read by:
scripts/e2e-weight.mjs.
The GitHub token of the gh command. tools/release/run-jobs.mjs reads it before GITHUB_TOKEN; npm run wiki -- publish reads it only when GITHUB_TOKEN is not set.
- Origin: you set it; the code reads it.
- Read by:
.github/workflows/candidate.yml,.github/workflows/ci.yml,.github/workflows/docs-publish.yml, and 3 more.
A GitHub token for the release and documentation tools. npm run wiki -- publish reads it before GH_TOKEN (after the deploy key WIKI_DEPLOY_KEY); tools/release/run-jobs.mjs reads it only when GH_TOKEN is not set. On a runner GitHub Actions gives it.
- Origin: you set it; the code reads it.
- Read by:
.github/workflows/docs-publish.yml,tools/release/run-jobs.mjs,tools/wiki.ts.
The set of tests a mutant is judged by (core, reality…); core when unset. npm run test:mutation:* sets it.
- Origin: you set it; the code reads it.
- Read by:
vitest.mutation.config.ts.
The results of a workflow's jobs, as JSON, that the candidate's verdict reads. The workflow sets it.
- Origin: you set it; the code reads it.
- Read by:
.github/workflows/candidate.yml,.github/workflows/ci.yml,tools/release/candidate.mjs.
Set by npm run ops:qualify for ops/qualify/compose.yml: the committed tree the speedrun worker reads.
- Origin: set by
npm run ops:qualify. - Read by:
ops/qualify/compose.yml.
Set by npm run ops:qualify for ops/qualify/compose.yml: the folder of the Bridge image's build context.
- Origin: set by
npm run ops:qualify. - Read by:
ops/qualify/compose.yml.
Set by npm run ops:qualify for ops/qualify/compose.yml: the folder of the two tenants' data.
- Origin: set by
npm run ops:qualify. - Read by:
ops/qualify/compose.yml.
Set by npm run ops:qualify for ops/qualify/compose.yml: the group id the containers run as (1000 by default).
- Origin: set by
npm run ops:qualify. - Read by:
ops/qualify/compose.yml,scripts/ops-qualify/backup.mjs.
Set by npm run ops:qualify for ops/qualify/compose.yml: the installed modules mounted beside it.
- Origin: set by
npm run ops:qualify. - Read by:
ops/qualify/compose.yml.
Set by npm run ops:qualify for ops/qualify/compose.yml: the local port of the proxy (8443 by default).
- Origin: set by
npm run ops:qualify. - Read by:
ops/qualify/compose.yml.
Set by npm run ops:qualify for ops/qualify/compose.yml: the proxy's second local port (8444 by default).
- Origin: set by
npm run ops:qualify. - Read by:
ops/qualify/compose.yml.
Set by npm run ops:qualify for ops/qualify/compose.yml: the proxy's third local port (8445 by default).
- Origin: set by
npm run ops:qualify. - Read by:
ops/qualify/compose.yml.
Set by npm run ops:qualify for ops/qualify/compose.yml: the proxy's fourth local port (8446 by default).
- Origin: set by
npm run ops:qualify. - Read by:
ops/qualify/compose.yml.
Set by npm run ops:qualify for ops/qualify/compose.yml: the folder of the database password and the store's URL.
- Origin: set by
npm run ops:qualify. - Read by:
ops/qualify/compose.yml.
Set by npm run ops:qualify for ops/qualify/compose.yml: the user id the containers run as (1000 by default).
- Origin: set by
npm run ops:qualify. - Read by:
ops/qualify/compose.yml,scripts/ops-qualify/backup.mjs.
The folder where npm run ship writes its process ids; .cache/pids when unset.
- Origin: you set it; the code reads it.
- Read by:
tools/release/lib.mjs.
Extra trailer lines npm run ship adds to a merge commit, after Agent: Claude.
- Origin: you set it; the code reads it.
- Read by:
tools/release/ship.mjs.
The S3 endpoint, credentials and bucket of the CI's object store, as one URL, for the hosted Studio's tests.
- Origin: you set it; the code reads it.
- Read by:
.github/workflows/ci.yml,ops/studio/ci/s3-ready.ts.
The GitHub repository the release tools work on; wanoo/quest-n-click when unset.
- Origin: you set it; the code reads it.
- Read by:
tools/release/lib.mjs,tools/release/provenance.mjs.
The SSH deploy key that pushes the documentation to the GitHub wiki (npm run wiki -- publish); GITHUB_TOKEN is used without it.
- Origin: you set it; the code reads it.
- Read by:
.github/workflows/docs-publish.yml,tools/wiki.ts.
Nobody sets these by hand: the operating system, npm, Vitest or a GitHub runner does. The code only reads them.
true on a GitHub runner: the tests and ratchets adapt their output and their limits.
- Origin: set by GitHub Actions.
- Read by:
scripts/e2e-pwa.mjs,scripts/e2e.mjs,tools/coverage-ratchet.ts.
The GitHub API's address on a runner.
- Origin: set by GitHub Actions.
- Read by:
tools/release/run-jobs.mjs.
The file a step appends NAME=value lines to, for the next steps of its job.
- Origin: set by GitHub Actions.
- Read by:
.github/workflows/candidate.yml,.github/workflows/docs-publish.yml,.github/workflows/release.yml.
The file a step writes its outputs to.
- Origin: set by GitHub Actions.
- Read by:
.github/workflows/candidate.yml,.github/workflows/ci.yml,.github/workflows/nightly.yml, and 1 more.
The file a job writes its summary to; npm run ci:plan writes the plan there.
- Origin: set by GitHub Actions.
- Read by:
.github/workflows/candidate.yml,.github/workflows/nightly.yml,tools/ci-plan.ts.
The user's home folder. The A7 chain script refuses it as its output folder; the Studio Server gives its own git commands a HOME of its working folder, never yours.
- Origin: set by the operating system.
- Read by:
docs/dev/acceptance/a7-chain.sh.
The runner's image, recorded beside a measurement.
- Origin: set by GitHub Actions.
- Read by:
tools/backup-memory.ts,tools/load-median.ts,tools/release/baseline.mjs.
The system's search path. The Studio Server and the worker pass it to their child processes, and nothing else of the environment.
- Origin: set by the operating system.
- Read by:
bridge/src/runs.ts,scripts/e2e-worker-container.ts,scripts/studio-install-smoke.mjs, and 3 more.
The shell's current folder.
- Origin: set by the shell.
- Read by:
.github/workflows/ci.yml.
The runner's system, recorded beside a measurement.
- Origin: set by GitHub Actions.
- Read by:
tools/backup-memory.ts,tools/load-median.ts,tools/release/baseline.mjs.
The Windows folder; the tools find tar.exe under it.
- Origin: set by Windows.
- Read by:
scripts/lib/archive-harness.mjs,tools/field/field.ts.
Set while Vitest runs: the local Studio's plugin then starts nothing.
- Origin: set by Vitest.
- Read by:
tools/studio/plugin.ts.
The npm script that is running; a tool that writes the game records it as the author of the change.
- Origin: set by npm.
- Read by:
tools/game-write.ts.
Set and read by the workflows of .github/workflows/ only: an input handed to a step's shell through env:, or a value one step leaves to the next in $GITHUB_ENV. Nothing to set by hand.
ci: true when every check runs (a push, or a pull request labelled full-ci).
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/ci.yml.
docs-publish: the path of the archive to publish.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
docs-publish: that archive's sha256.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
docs-publish: true when release.yml calls it, with a verified archive.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
docs-publish: the candidate run whose test report is read.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml,.github/workflows/release.yml.
docs-publish: the mode chosen by hand (revision, rollback, promote, preview).
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
release: the documentation archive of the release, when it has one.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/release.yml.
release: the other files uploaded with the release.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/release.yml.
mutation: one file to mutate, chosen by hand.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/mutation.yml.
ci: false in a Pages-only run, which then skips its other steps.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/ci.yml.
docs-publish: the candidate run release.yml passes.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
docs-publish: the doc revision release.yml passes (r1).
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
docs-publish: the tag's commit release.yml passes.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
docs-publish: the sha256 of the archive ship verify checked.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
docs-publish: the release tag release.yml passes.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
docs-publish: the mode decided for the run, left to the next steps.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
ci: true when a pull request labelled full-ci also runs the mutation tests.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/ci.yml.
release: the Node.js version npm publishing runs on.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/release.yml.
release: the npm version that publishes.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/release.yml.
release: the release's file name prefix (quest-n-click).
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/release.yml.
ci: true for a dispatched Pages-only run, which rebuilds the site and /docs/ and nothing else.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/ci.yml.
The PostgreSQL service container's database.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/candidate.yml,.github/workflows/ci.yml,.github/workflows/mutation.yml, and 2 more.
The PostgreSQL service container's password, CI only.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/candidate.yml,.github/workflows/ci.yml,.github/workflows/mutation.yml, and 2 more.
The PostgreSQL service container's user, read by its image.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/candidate.yml,.github/workflows/ci.yml,.github/workflows/mutation.yml, and 2 more.
docs-publish: the product's tag the documentation describes.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
candidate: the deployment smoke's profile, full when started by hand, short otherwise.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/candidate.yml.
docs-publish: the release that carries the archive (v<v> or docs-v<v>-r<n>).
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
release: the remix files added to the release, when there are some.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/release.yml.
The repository the workflow runs in (owner/name), for its gh calls.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/ci.yml,.github/workflows/docs-publish.yml.
docs-publish: true when a release already made by an earlier run is reused.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
docs-publish: the doc revision being published (r1, r2…).
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
ci: whether the plan asks for the Reality jobs.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/ci.yml.
docs-publish: this run's id, the archive's build id.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
docs-publish: the ref the run stands on, checked against its mode.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
mutation: the mutation set chosen by hand.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/mutation.yml.
release: the commit the candidate run tested.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/release.yml.
candidate: the store tools/backup-memory.ts measures, sqlite or a PostgreSQL URL.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/candidate.yml.
ci: 1 keeps the hosted Studio test's screenshots.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/ci.yml.
ci: the Keycloak service the hosted Studio's end-to-end test logs in with.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/ci.yml.
ci: that Keycloak's administrator, CI only.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/ci.yml.
ci: the PostgreSQL service the hosted Studio's tests use.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/ci.yml.
release: the tag being released.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/release.yml.
docs-publish: the <version>[-r<n>] a rollback or a promotion aims at.
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
docs-publish: the product version to publish (its version input).
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/docs-publish.yml.
candidate: the full SHA a run started by hand must test (its sha input).
- Origin: set by a workflow of
.github/workflows/(CI and releases). - Read by:
.github/workflows/candidate.yml.
Generated publication · publication générée — current documentation · documentation courante: quest'n'click 4.4.0 r1, documentation revision · révision de la documentation 8dc717c69acb62c4742b69c54a7e7dfb620f75d8.
Earlier versions and permalinks · versions précédentes et liens permanents: https://wanoo.github.io/quest-n-click/docs/
An edit made in this wiki is overwritten at the next publication · une modification faite dans ce wiki est écrasée à la publication suivante.
Edit the source · Modifier la source · Report an error · Signaler une erreur
Index (6)
Start (6)
Play (9)
Install (17)
- Requirements
- Install from the release archive
- Install from npm, once published
- Install from the repository to work on the engine
- doctor: checking your machine
- Image toolchain
- Audio toolchain: ffmpeg, fluidsynth, Furnace, uv
- Upgrade
- Upgrade notes: 4.4
- Upgrade notes: 4.3
- Upgrade notes: 4.2
- Upgrade notes: 4.1
- Upgrade notes: v3
- Upgrade notes: v2 to v3
- Coming from web-scumm
- Package reference
- Install troubleshooting
Create a game (55)
- Your first game
- Layout of a created project and of the engine repository
- The working loop
- Content principles and the identity contract
- Rooms
- Geometry: placement, walk zones, masks, layers, camera
- Something is visible but unreachable
- Reactions
- Game commands
- Conditions
- Flags, variables and events: which to use
- Custom code
- Characters
- Items and inventory
- World map
- Dialogues
- Scripts and events
- Moving characters: patrols and walks
- Exits
- Chapters and objectives
- State and saves: persistent or temporary, renaming an id, migrations
- Staging: wide rooms and animations
- The stage: lights, particles, floors
- Skin and fonts
- Title and credits
- Heroes: several characters and hero choice
- Built-in minigames
- A custom minigame
- Translations
- Music in stems
- Sound effects
- Voices: per language and per hero
- Images: prompts, cutting sheets, transparency, scale
- Asset provenance
- The storyboard, source of truth
- Puzzle design
- Classic mechanics
- Review pages
- DSL reference
- Checking your game
- What the solver proves
- Solver options
- Playtests
- Remix
- Speedrun for authors
- The sealed ending
- Production template
- Example games
- Working with an AI
- Build and release a game
- Publish on GitHub Pages
- The static game on Clever Cloud
- Other static hosts
- Sub-path, cache and service worker, incomplete deploys, going back
- Testing on a phone over the LAN
Local Studio (24)
- The local Studio: overview and launch
- Edit a room
- Placement and stage
- Preview, apply, undo
- Storyboard
- Assets and cutting
- Check: validator, solver, critical path, heat, health, coverage
- Before and after captures
- Semantic diff
- Play and replay a session
- Rule explainer
- Language and objectives
- Voices and the heroes × languages matrix
- Map
- Notes
- Remix in the Studio
- Music
- The Assistant: bring your own key
- Demo mode and studio-apply
- Local and LAN security
- Studio API
- Local MCP: setting up each client
- MCP tools
- Studio troubleshooting
Team Studio (21)
- What runs where
- Concepts: revision, transaction, span, lease, preview, build
- Starting as an invited dev
- Working together day to day
- Roles and actions: the full matrix
- Invitations
- Managing members
- Write refused on the hosted Studio: stale base revision (409)
- Write refused on the hosted Studio: span locked (423)
- Recovering after a lost lease, a disconnection or a stale preview
- Comments
- Map and semantic diff
- Publishing builds
- Remote MCP
- The game in Git
- Upgrading the engine of a hosted game
- Hosted assets
- The server's command line
- Health and metrics routes
- Trying it locally with compose.yml
- Known limits
Clever Cloud (23)
- Clever Cloud: overview, cost and prerequisites
- Apps and add-ons
- Domains and TLS
- Keycloak
- Generic OIDC and GitLab
- Configuration
- First deployment
- Backups
- RPO and RTO
- Restore the Studio on a fresh installation
- Redeploys
- Upgrading the server and checking state after a migration
- Limits of going back
- Monitoring
- Security
- Rotating keys
- Recovering admin access
- Changing domain or OIDC provider
- Worker, PostgreSQL or Cellar down
- Exporting the game and leaving the installation
- Retention
- Clever Cloud troubleshooting
- Costs and teardown
Reality Bridge and connectors (16)
- The Reality Bridge: what it is
- Quick start
- Guarantees
- Install and run the Bridge
- Backup and restore
- Several tenants
- Signals and the manifest
- The Bridge's command line
- Connectors overview
- Email connector
- Telnet connector
- SSH connector
- Open Badges connector
- The connector SDK
- Security: Biscuit and signatures
- Bridge and connector troubleshooting
Contribute (25)
- Welcome
- Developer setup
- The dev loop
- Before a pull request
- Conventions
- Writing documentation
- Architecture
- Code tour
- Import boundaries
- Which tests run when
- Mutation testing
- The coverage ratchet
- The quality baseline
- CI explained
- Field passes
- Benchmarks
- Releasing
- npm packages
- Decisions and ADRs
- Governance
- Bot pull requests
- Contributing with AI agents
- Security policy
- Code of conduct
- Licences and credits