Command-line reference
Every command and option.
One executable, crisptastic, does everything: scaffolding, the development
server, builds, deployment, and the production host. A second tool, crispc,
is described at the end.
crisptastic --version # crisptastic 0.1.0+build-0
crisptastic --help # list commands
crisptastic help <command> # help for one command
Every failure prints error: ... to standard error and exits with status 1.
Success exits with 0. The global option --color auto|always|never controls
colour; auto honours NO_COLOR and TERM=dumb.
Command map
| Command | Purpose | Chapter |
|---|---|---|
init | Create a new site | Quickstart |
dev | Development server: watch, recompile, live-reload | Quickstart |
run | Same server without live-reload | below |
serve | Low-level server that ignores crisptastic.toml | below |
check, routes | Compile and inspect without serving | below |
deploy | Build, sign and encrypt a deployment Capsule | Deploying |
capsule keygen|publish|pull | Signing keys and Capsule storage | Deploying |
notify | Ask a host to activate a published Capsule | Deploying |
host | Production server for Capsules | Running a host |
fabric status|issue-join | Cluster operation | Clustering |
assets plan|publish | Deploy-time asset publication (preview) | Deploying |
build cbor|capsule, artifact ... | Internal Site Artifacts (not deployable) | below |
completions, man | Shell completion scripts and man pages | below |
There is no status, logs, rollback, new, test, or fmt command. Some
older design documents list them; they do not exist.
Development commands
init
crisptastic init [ROOT] [--force]
Creates (in ROOT, default the current folder) exactly three files:
crisptastic.toml, index.html.crisp and assets/site.scss. It refuses to
overwrite an existing one unless you pass --force.
dev
crisptastic dev [ROOT] [--config FILE | --no-config] [options]
Compiles the site, serves it, watches for changes and live-reloads the browser. Default address: http://127.0.0.1:6174/.
- Edits to
.crispfiles and assets are picked up within about a second. - If a change fails to compile, the previous good version keeps serving, the error is printed in the terminal and shown in the browser.
- Edits to
crisptastic.tomlare not picked up; restart. - A compile error at startup exits with status 1.
- HTML responses are sent with
no-storecaching headers. - It listens on loopback by default, but
--bind 0.0.0.0:6174is accepted without warning.
dev runs your pages through the same engine as production, but it is not
the production profile. These production behaviours are not active in dev:
Secure cookies, the ban on state changes during GET, and the sealing of
[env] values. CSRF checks are. See
Sessions and forms and
Configuration.
run
crisptastic run [ROOT] [--config FILE | --no-config] [--watch | --no-watch] [options]
Like dev without live-reload, the development namespace and the no-store
headers. run watches for changes by default; pass --no-watch to
disable that.
serve
crisptastic serve ROOT [--watch] [options]
A lower-level server. ROOT is required, crisptastic.toml is not used
for runtime settings (only [security] and [cors] are applied), and it does
not watch unless you pass --watch. A sessions folder is used only if you
pass --sessions, and it must already exist. Prefer run.
Options shared by dev, run and serve
| Option | Meaning |
|---|---|
--bind ADDR | HOST:PORT to listen on (default 127.0.0.1:6174) |
--assets DIR | Static assets folder |
--sass-load-path DIR | Extra Sass search folder (repeatable) |
--sessions DIR | Where to keep session files |
--env NAME[=VALUE] | Add a context.env value (repeatable). A bare NAME copies the variable from your shell |
--debug | Print request telemetry to the terminal |
--debug-file PATH | Write telemetry as JSON lines to a file |
--trace-http | Add per-request trace events |
--telemetry-endpoint URL, --telemetry-token, --telemetry-token-env, --telemetry-filter, --telemetry-app, --telemetry-where, --telemetry-instance, --telemetry-flush-ms | Telemetry sink settings; see Configuration |
Environment variables CRISPTASTIC_FETCH_API_KEY, _SCOPE, _CACHE_TTL_MS,
_MAX_CONCURRENT_REQUESTS and _HEADERS_JSON override the [fetch] table.
check and routes
crisptastic check ./my-site # ok: 5 routes, 3 partials
crisptastic routes ./my-site # one route pattern per line
check compiles every page and partial, validates the crisptastic.toml in
the site folder exactly as run would (unknown keys, wrong types, [security]
and [cors]), and reports the first error with its file, line and column. It
does not compile Sass or check for clashes between integration endpoints and
pages (those are caught at startup). The path argument is required. routes
prints dynamic segments as :name.
Build and deployment commands
These are explained in Deploying; the exact syntax is:
crisptastic capsule keygen --private release.pk8 --public release.pub
crisptastic deploy ROOT \
--recipient AGE_RECIPIENT [--recipient ...] \
--signing-key release.pk8 \
--out ../site.capsule.age \
[--publish-store-dir DIR | --publish-s3] \
[--peer HOST:PORT --client-cert F --client-key F --server-ca F] \
[--application-id 32_HEX] \
[--desired-replicas N] [--minimum-ready-replicas N] [--sleepable]
crisptastic capsule publish CAPSULE (--store-dir DIR | --s3)
crisptastic capsule pull DIGEST --out FILE (--store-dir DIR | --s3)
crisptastic notify --peer HOST:PORT --digest SHA256 \
--client-cert F --client-key F --server-ca F
--out must be outside the project folder. --desired-replicas,
--minimum-ready-replicas and --sleepable apply only with --peer; without
--peer they are silently ignored.
Host and cluster commands
See Running a host for host (it has many options) and
Clustering for:
crisptastic fabric status --peer HOST:PORT --client-cert F --client-key F --server-ca F [--domain D]
crisptastic fabric issue-join --cluster-id 32HEX --boot-id 32HEX --credential-serial N \
--endpoint quic://IP:PORT --certificate-der FILE --request-id 32HEX
Internal build commands
crisptastic build cbor ROOT --out site.cbor
crisptastic build capsule ROOT --out site.capsule
crisptastic artifact check|routes FILE
crisptastic artifact serve FILE
These produce a Site Artifact: the compiled routes and programs of a site,
without signing, encryption, secrets or assets. It is useful for testing and
embedding. It cannot be deployed to a host, and build capsule does not
make the thing deploy makes, despite the name. Use deploy.
Shell completion and manual pages
crisptastic completions zsh > ~/.zfunc/_crisptastic # bash, elvish, fish, powershell, zsh
crisptastic man --out ./man # writes crisptastic.1 and one page per command
Environment variables
| Variable | Used by |
|---|---|
NO_COLOR, TERM | Colour output |
PORT | host: default bind becomes 0.0.0.0:$PORT |
CRISPTASTIC_FETCH_* | [fetch] overrides |
CRISPTASTIC_CAPSULE_S3_*, AWS_* | S3 Capsule storage |
CRISPTASTIC_LLM_ENDPOINTS_FILE | Operator catalogue for the experimental [llm] capability |
CRISPTASTIC_FABRIC_ADMISSION_AUTHORITY | Cluster join grants |
Any name you list under [env_from_process] or in a provider's *_env setting | Secrets and settings |
crispc
crispc is a separate, portable compiler for Crisp templates. It generates
source code in JavaScript, C, Rust or Java and is used to embed templates in
other programs. It is not the web framework, and it implements a different
dialect: it accepts @code { ... } blocks and host-language expressions, and
rejects the web-only directives (@fetch, @shape, @session, @cookie,
@redirect). Pages written for crisptastic should be checked with
crisptastic check, not crispc.
crispc compile page.html.crisp --dialect js
crispc dialects # js c rust java
crispc emitters
crispc build is an alias for compile.