Skip to content

Demo Box

Building a box needs pixi and conda-pack. But consuming does not:
If you only want to see what a box is, and how to run it, try this public demo.

You can find the demo box GitHub release here.

Downloads

Download the demo for your system:

macOS (Metal)Linux (CPU)Windows (CPU)
macos-aarch64-metallinux-x86_64-cpuwindows-x86_64-cpu

NOTE

The file you download (eg. hello-box-1.0.0-macos-aarch64-metal.zip) is NOT the demo box — it is a container, named so you can tell which machine it is for, holding the box together with two ready-to-run examples.

The demo box is the .zip inside it under box/, next to its .release.json. Do not unzip that one: it's ready to run. Leave both named as they are and side by side, because that is how verify finds the box.

Run the box

Once you have downloaded the demo, follow these steps:

  1. Unpack the demo into a folder of its own:
sh
unzip hello-box-1.0.0-<target>.zip -d scrollcase-demo
cd scrollcase-demo

box/ holds 2 files: the demo box .zip to run, and its matching .release.json. Beside it you already have run-box.ts and run_box.py — nothing to retype.


  1. Download the demo public key, next to the box rather than inside it:
sh
mkdir keys
curl -o keys/example-signing-public.json \
  https://raw.githubusercontent.com/suffro/scrollcase/main/examples/keys/example-signing-public.json

or alternatively here's its GitHub link: example-signing-public.json

Why the key lives outside the box

A signature only proves where something came from if the key does not travel with it. Keeping the key in its own folder — and downloading it from the repository rather than the release — is the habit to carry into a real project, where the key will not be a demo key.


  1. Verify and run the box:

This path needs the CLI, and nothing else — no pixi, no conda-pack, no build:

sh
npm install -g scrollcase
sh
scrollcase verify box/*.release.json --public-key keys/example-signing-public.json
scrollcase run    box/*.release.json --public-key keys/example-signing-public.json

The box/*.release.json above is a real shell glob, not a placeholder — your shell replaces it with the one release document in the folder. PowerShell does not expand globs for a command like this, which is why it needs Get-ChildItem. Either way you can always type the file name you see after unzipping. You never name the box archive: verify finds it beside the release document, under the hash that document commits to.

What just happened

verify checks the signature, the archive's size and hash, the entry names and manifest agreement, and works on any machine. run extracts the box to a temporary directory and executes its entry point with the interpreter inside it — so it needs a machine matching the box's target. What it prints is sys.prefix, which is the point: the interpreter answering is the one from the box.

The demo key is a demo key

Those boxes are signed with a key that exists only for the example. It signs nothing else and no trust chain depends on it. A signature from it means the example is intact — nothing more.


  1. Check out the results, that's it.

At this point the folder looks like this — the box untouched in its own directory, the key in another, the runnable examples above both:

text
scrollcase-demo/
├── box/                               # from the download, left exactly as it arrived
│   ├── <archive sha256>.zip
│   └── <document sha256>.release.json
├── keys/                              # step 2, from the repository — never from the release
│   └── example-signing-public.json
├── run-box.ts                         # from the download
├── run_box.py                         # from the download
├── package.json                       # from the download
└── README.md                          # from the download

Everything except keys/ came out of the one file you downloaded. The key is the deliberate exception, and the reason is above.

Scrollcase v0.6.1 · schema version 2 · Privacy · Changelog