← Back to site Loading…

rescriptum

Install

Guide

Generated on August 30, 2026

Install

Install

rescriptum is one self-contained binary. There is no runtime to install, no interpreter, no container image, and nothing written outside the directory you point it at. Copy it somewhere and run it.

Download a release

Binaries for every published target are attached to each release, with a SHA-256 sum beside them.

TargetFor
armv7-unknown-linux-gnueabihfSynology DS416j and other ARMv7 NAS boxes (glibc ≥ 2.17)
aarch64-unknown-linux-muslmodern ARM NAS, Raspberry Pi
x86_64-unknown-linux-muslmost other Linux hosts
aarch64-apple-darwinlocal development, Apple silicon
x86_64-apple-darwinlocal development, Intel Macs
$ VERSION=0.2.0 TARGET=x86_64-unknown-linux-musl
$ curl -fsSLO https://github.com/z29k/rescriptum/releases/download/v$VERSION/rescriptum-$VERSION-$TARGET.tar.gz
$ curl -fsSLO https://github.com/z29k/rescriptum/releases/download/v$VERSION/rescriptum-$VERSION-$TARGET.tar.gz.sha256
$ shasum -a 256 -c rescriptum-$VERSION-$TARGET.tar.gz.sha256
$ tar xzf rescriptum-$VERSION-$TARGET.tar.gz
$ sudo install -m755 rescriptum-$VERSION-$TARGET/rescriptum /usr/local/bin/

Check the sum. This binary runs as root on hardware you are about to install, which is about as much trust as a program gets.

On a Synology

Take the .spk for your model instead — rescriptum-<version>-armv7.spk for the DS416j and other armada38x machines, -x86_64.spk for every Intel model — and install it with Package Center → Manual Install. It creates the shared folder, registers the port with the firewall, links the CLI onto PATH and starts at boot. Details, and what it deliberately does not do for you, are on the Synology page.

The Linux builds are linked against musl, statically, so they do not care how old the host’s glibc is:

$ file /usr/local/bin/rescriptum
ELF 64-bit LSB executable, x86-64, ... statically linked, stripped

Or build it

You need a Rust toolchain and nothing else for a native build:

$ git clone https://github.com/z29k/rescriptum && cd rescriptum
$ ./build.sh

Cross-compiling for the NAS needs cargo-zigbuild and Zig, which stand in for a full cross toolchain. The build page has the details, including how to confirm the result really is static — a dynamically linked musl binary fails at exec time, on the NAS, rather than at build time on your laptop.

Run it

$ mkdir -p /srv/answers
$ RESCRIPTUM_ANSWERS_DIR=/srv/answers rescriptum
2026-08-22T18:00:00Z - rescriptum 0.1.0 listening on 0.0.0.0:8000 — store=files:/srv/answers workers=8 max_conn=2048 timeout=10s
2026-08-22T18:00:00Z - warning: /srv/answers does not exist yet — every request will 404 until it does

The startup line is worth reading rather than scrolling past:

FieldMeaning
listening onthe address actually bound, not the one requested — with :0 they differ
store=files:<dir> or sqlite:<path>, so a misconfigured store is visible immediately
workers=runtime threads, CPU count by default. Not a concurrency limit
max_conn=in-flight connections before the server sheds with 503
timeout=header-read timeout and whole-connection deadline

Anything wrong with the answer set — a group extending a group that does not exist, a document that will not parse — is reported here too, once, at startup. It is also reported by rescriptum check, which is the better place to find out.

Confirm it is alive:

$ curl http://localhost:8000/health
OK

GET /health is the one endpoint that never needs a token and is never rate-limited, so a monitor keeps working even while the server is refusing everything else.

Where it looks by default

RESCRIPTUM_ANSWERS_DIR defaults to /srv/answers, and RESCRIPTUM_DB_PATH to /srv/answers.db. /srv is where the filesystem hierarchy standard puts data served by the system, which is what these are. Nothing creates the directory for you; the startup line says so if it is missing.

Everything is configured through the environment; there is no configuration format to learn and no command line to get wrong. If you have nowhere good to put a token — DSM 7, say — RESCRIPTUM_ENV_FILE names a file of the same variables. The full list is in the configuration reference.

Next