Repository navigation
EN Clever Export And Leave
Français · Type: how-to · Audience: admin · Context: hosted Studio · Status: ready · Applies from: 4.2.3
The Studio Server (hosted team Studio) · contract: experimental · verified by CI (support matrix of 4.4.0, 2026-10-23): Postgres, S3 and Keycloak in CI; Chromium and Firefox (job studio-hosted); WebKit on macOS, by hand only · automated checks: jobs
studio-hosted,studio-install-smoke; CI planstudioHosted; 3 test files · people's passes:studio-hostednot run (#149),studio-collabnot run (#150),studio-previewnot run (#166),studio-assets-hostednot run (#167),studio-mcp-remotenot run (#196),studio-oidc-genericnot run (#197) · known limits:export-is-files
How to take everything out of a hosted Studio on Clever Cloud: the game's files as a folder you can open in a local Studio, and the rest of the project (members, comments, history) in a form you keep. Then you can delete the installation.
- A folder with the game's files at the head revision and an
export-manifest.jsonnaming each file's hash and the revision: a game you can run with a local Studio, with no server. - The latest backup and a copy of the bucket (
backups/,sha256/,journal/) on storage of yours: everything a restore needs, should you want the hosted project back.
- A hosted Studio on Clever Cloud, from 4.2.3.
studio-server exportexists since 4.2.1. - Verified on: not verified on a live installation. No export was made from the reference deployment. The export reads the database and the bucket as a restore does; running it against a restored copy (below) was not exercised.
- The engine repository on your machine at the studio app's version,
npm cidone. - An S3 tool and the Cellar credentials;
clever-toolslogged in. - The restore drill, read: the export runs on a restored copy, never on production.
On your machine, in the engine repository at the studio app's version, with STUDIO_DATABASE_URL pointing at a
drill add-on, never at production's.
- Tell the members, and agree on a last write: what is written after the backup of step 2 is in the journal shipped to the bucket, and comes back with the replay, but nobody should keep working on an installation being left.
- Take a backup to the bucket (
npm run -s studio-server -- backup --to-bucketinclever ssh), then copy the whole bucket to storage of yours with an S3 tool:backups/,sha256/(the contents) andjournal/. A backup without its blobs restores nothing (Backups).
- Restore that backup into a new, empty PostgreSQL add-on, following the restore drill steps 2 to 4. You now have a copy of the project that is not production.
-
Export the game at its head from that copy, into a new folder:
# on your machine, in the engine repository, STUDIO_DATABASE_URL and the Cellar keys exported as in the drill npm run -s studio-server -- export ./my-game-export --config drill.config.json
It writes every file of the head, checks each one's hash against the head (a mismatch stops it: "the content does not match the head"), and writes
export-manifest.json(game,epoch,revision,files). Its last line is{"event":"exported","revision":…,"files":…}. It refuses a folder that is not empty.
- Open the exported game in a local Studio: copy the folder as
games/my-gameof a created project (or the engine repository) and run its Studio there (Overview and launch).
- If the Studio pushes to a Git repository (
gitin its configuration), a last push from the Studio gives the same files with their history as commits (The game in Git): keep that repository too.
Limit ·
export-is-filesThe export holds the game's files only. Members, invitations, comments, the audit log, personal undo, the previews, the published builds and the prepared assets are not in it; they are in the backup's JSON (step 2), which keeps them readable but which only a Studio Server of the same version restores.
export-manifest.json's revision is the head you noted (GET /api/revision before leaving), its files list as
many entries as the folder holds, and the local Studio opens the game and validates it.
| Symptom | Cause | Fix |
|---|---|---|
export: an empty or new folder is required |
The folder exists and holds files | A new folder |
STUDIO_DATABASE_URL (or POSTGRESQL_ADDON_URI) is required |
No database URI in the shell | Export the drill add-on's URI |
<path>: the content does not match the head |
A blob in the bucket differs from what the head names | Stop; check the bucket and the Cellar credentials |
| The local Studio says the game does not load | The game imports files outside its folder, or the engine version differs | Use the engine at the studio app's version |
The export folder and the bucket copy on your side; a drill add-on in Clever Cloud (delete it afterwards). Production is only read, for the backup.
Nothing in production is changed. To come back to a hosted Studio later, restore the kept backup and bucket copy into
a new installation of the same version (restore drill), or import the exported folder into a
new one (npm run studio-server -- import, First deployment): an import starts a
new history.
-
export,import:studio-server/src/server/main.ts; the backup:studio-server/src/ops/backup.ts; Git:studio-server/src/server/git.ts. - Then delete the installation: Costs and teardown; what is kept and for how long: Retention.
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