Skip to content

v2 IS DEPRECATED


This documentation describes Scrollcase v2, which is no longer maintained, and version 3 refuses a version 2 box by name rather than reading it. Read this page in the current version, or see how to migrate a box to v3.

Installation

Scrollcase is a Node.js command line tool. The CLI itself has no native dependencies; building a box for real additionally needs pixi and conda-pack on the machine that builds — and scrollcase init can install those for you, after asking.

The Python and Rust consumers are separate distributions. Installing scrollcase through npm provides neither the scrollcase_consumer Python module nor the scrollcase-consumer crate.

Requirements at a glance

You want to…You need
Scaffold, audit, keygen, or verify without a self-testNode.js ≥ 20
Resolve a lock (lock)Node.js ≥ 20 and pixi at the scroll's pinned version
Build a box (build)Node.js ≥ 20, pinned pixi, conda-pack, and a local key or external signer
Verify with --self-testThe same OS and architecture the box targets
Consume an existing local box from PythonPython ≥ 3.10 and scrollcase-consumer
Consume an existing local box from RustRust ≥ 1.88 and the scrollcase-consumer crate

Auditing, key generation, signing primitives, and verification need no dependency toolchain. lock invokes pixi; build invokes both pixi and conda-pack.

Install the CLI

sh
npm install -g scrollcase

Check the install:

sh
scrollcase --version

Install consumers

Install the Node consumer

The Node consumer needs the scrollcase package to be installed, therefor if you already installed the scrollcase CLI, you do not have to install anything else, otherwise install the CLI first.

The import name:

js
import { runBox } from 'scrollcase/consumer';

The Node consumer prepares and executes release documents and archives already present on the local machine. Every path and trust anchor comes from the caller. It never selects a channel, downloads an archive or asset, installs globally, updates an existing destination, or applies application lifecycle policy.

Checkout the Library APIs section for more details.

Let Scrollcase install the toolchain

scrollcase init initializes a workspace and then offers to install what is missing:

text
Install pixi and conda-pack into /work/my-project/.scrollcase/toolchain?
This project needs them to build a box:
 ↳ [Y/n]

Nothing is downloaded before you answer, and the interactive default is yes. Say yes (or press Enter) and Scrollcase installs both inside the project, under .scrollcase/toolchain/ — nothing is added to PATH, nothing is installed system-wide, and deleting the directory undoes it. Later commands find the tools there on their own.

What you get is verified, not just fetched:

  • the release archive's SHA-256 is checked against the checksum pixi publishes beside it, and a mismatch aborts before anything is installed;
  • the verified digest is recorded under toolchain in scrollcase.config.json, so the next machine — a teammate's, a CI runner's — is checked against the value your project committed rather than whatever the server offers that day;
  • the generated example and managed toolchain share the same pixi pin; every project scroll created by scrollcase new scroll still declares its own exact pixiVersion.

For unattended setups, answer up front:

sh
scrollcase init --install-toolchain      # install without asking
scrollcase init --no-install-toolchain   # never install; just report what is missing
scrollcase init --no-example             # initialize without example-box, without being asked

With no terminal to prompt — CI, a pipe — Scrollcase never installs anything and simply reports what is missing. Silence is not consent.

Pin the version you want

--pixi-version 0.73.0 uses exactly that release for both the generated example and an approved managed install. With --no-example, omitting the flag uses the installed release or newest available release for the workspace toolchain. new scroll pins the pixi it finds installed, since build refuses any other; pass --pixi-version to pin a different one.

Install the toolchain yourself

If you would rather manage the toolchain — a shared machine, a company mirror, an existing pixi install — Scrollcase is happy to use it. Install both tools and skip the step above.

pixi

pixi solves and installs the conda-forge environment. Every scroll pins the exact pixi version it was locked with (pixiVersion in scroll.json), and Scrollcase refuses to run lock or build with any other version — a different resolver can select different packages and silently change the box.

Install it following the pixi installation docs, for example:

sh
curl -fsSL https://pixi.sh/install.sh | sh

If you need a specific release to match a scroll's pin, download the matching release from the pixi GitHub releases page, or use the version-pinned form of the install script documented by pixi.

conda-pack

conda-pack turns the installed environment into a relocatable tree. The recommended install is through pixi itself:

sh
pixi global install "conda-pack==0.9.2"

Scrollcase's managed installer uses this exact release. conda-pack --version currently reports 0.0.0 regardless of the installed package release, so Scrollcase can pin what it installs but cannot reliably validate the version of an executable supplied through a flag, environment variable, or PATH.

Point Scrollcase at the toolchain

If pixi and conda-pack are on PATH, nothing more is needed. If they live elsewhere — a dedicated toolchain directory, a CI cache — point Scrollcase at them per invocation:

sh
scrollcase build my-box/linux-x86_64-cpu \
  --pixi /opt/toolchain/bin/pixi \
  --conda-pack /opt/toolchain/bin/conda-pack

or once, through the environment:

sh
export SCROLLCASE_PIXI=/opt/toolchain/bin/pixi
export SCROLLCASE_CONDA_PACK=/opt/toolchain/bin/conda-pack

A --pixi / --conda-pack flag wins over the environment variable, which wins over the project-local toolchain, which wins over PATH.

Upgrade Pixi intentionally

Changing resolver versions is a dependency change, not a tool repair:

  1. edit the scroll's pixiVersion to the intended release;
  2. initialise or install that exact version with explicit consent, or point --pixi at it;
  3. run scrollcase lock <scroll> and review the new pixi.lock;
  4. run scrollcase audit <scroll> and review/write any intentional licence change;
  5. commit the scroll, lock, audit, and toolchain digest;
  6. rebuild the box.

Do not delete the pin and accept whichever resolver happens to be newest.

Check the machine

doctor reports whether this machine can build, and says exactly what to do about anything missing. It only reads; it never writes and never touches the network.

sh
scrollcase doctor --pixi-version 0.73.0
# or take the required pixi version from a scroll:
scrollcase doctor --scroll my-box/linux-x86_64-cpu

Sample output:

text
ok    workspace   config /work/my-project/scrollcase.config.json
ok    scrolls     /work/my-project/scrolls
ok    git         HEAD 3f9c2ab17d42
ok    pixi        pixi at 0.73.0
ok    conda-pack  conda-pack

Every check reports rather than aborting at the first failure, so a machine missing both tools learns both in one run.

Builds are native

A box is always built on the OS and architecture it ships for: macOS arm64 boxes on an Apple Silicon Mac, Linux x86_64 boxes on Linux, Windows boxes on Windows. There is no cross-building — the self-test runs the box's own interpreter, which only proves anything on matching hardware.

Next

Continue with the Quickstart to initialize a workspace, author a scroll, and build your first box.

Scrollcase v1.0.0 · schema version 3 · Privacy · Changelog