Appearance
Create a demo with Claude Code
The Demoshell plugin for Claude Code writes your demo for you. Point it at your app's GitHub repository (or run in the directory of the project), it will read the README, check releases and work out how to install the app. If requested will make a guide and save it all as one VM JSON file that you can then import in your Demoshell account.
The plugin doesnt sign in to Demoshell and never uploads anything. Its only output is the file.
Install
In Claude Code:
/plugin marketplace add kooler/demoshell-cc
/plugin install demoshell@demoshellTo update run /plugin marketplace update demoshell or to have updates arrive by themselves, open /plugin, go to Marketplaces, pick demoshell and turn on auto-update.
The plugin checks the file it writes with Node.js. Without Node it still writes the file, and the import checks it instead.
Use it
Open Claude Code in your app's repository and ask for it in plain words:
Create a Demoshell demo for this repoor run /demoshell:create-demoshell. It asks two things before it starts:
- Which repository. This one (if you are in the directory with git), or another public GitHub repository. Outside a git repository it asks only for the GitHub address.
- VM only, or VM plus a guide. The guide is the checklist beside the terminal that tells visitors what to try.
Then it works on its own and ends with <name>.vm.json in the current directory.
What it builds
A terminal demo on the minimal Alpine image, with 1 vCPU:
- a full-screen app opens straight into the app
- a command-line tool opens at a prompt in a folder with sample files, with a short hint on screen.
With a guide, you get 3 to 6 steps that AI will suggest a good demonstration of your product.
What your app needs
Building app in the emulator will be too slow, so the app has to be distributed built, in one of these ways:
| Install method | Works when |
|---|---|
| Alpine package | The app is in Alpine 3.23 for aarch64. |
| GitHub release | A release has a Linux arm64 file that is static or built for musl. Most Go builds are. |
| npm | The package is plain JavaScript, or ships a ready-built Linux arm64 musl binary. |
| pip | The package and its dependencies are pure Python, or have musllinux aarch64 wheels. |
If the only way in is compiling (go install, cargo install, building from a clone), the plugin stops and says what is missing instead of writing a file that would time out. Usually the answer is a static linux-arm64 file attached to your GitHub releases.
A private repository is fine as long as the app itself is published in one of these ways. The demo always gets the published version, not unreleased changes on your machine.
Some software does not fit yet: desktop and GUI apps, heavy JVM stacks, and setups that need several services at once. See What fits.
Import and build
- Sign in at build.demoshell.com. Building needs a verified email.
- Open a project, then ⋯ → Import VM from JSON, and choose the file.
- On the VM's page, press ▶ Build. The build runs in your browser tab, so keep it open until the VM is saved.
- Press ▶ Launch to try it, then share it from the Share this demo card.
If the build fails, copy the build log into Claude Code. It fixes the file. Import it again onto the same VM name, which replaces the recipe, and press ▶ Build again.
Change a demo later
Press Export JSON in the VM's ⋯ menu and give the file to Claude Code with what you want changed. Importing the edited file onto the same name updates the recipe and the guide draft. See Importing over an existing VM for what an update keeps.
