Chel is the command-line tool for Chelonia, which implements Shelter Protocol for end-to-end encrypted apps. It signs and pins your app's contracts, runs the server that stores and relays their messages, and reads and writes the server's data.
- One tool, from contract to server. Make a signing key, sign each version
of a contract, pin it, and serve your app:
chel serveuploads the pinned contracts when it starts. - A native binary from npm.
npm installpicks the build for your platform, so you don't need Deno to run it. - Your choice of database: in memory, files, SQLite, Redis, or a mix of them by key prefix.
- Ready for a public server. Signups are limited per IP address, new accounts have a size cap, and storage is counted per account.
- A dashboard for your server.
chel servealso starts a dashboard with the registered users, the stored contracts, and each account's storage and credits. It shows this only behind a password, and by default only the server's own machine can open it. See docs/server.md. - One config file.
chel.tomlis checked for typos and wrong values when chel starts, and any setting can also come from an environment variable.
Add it to your project, and run it with npx chel:
npm install --save-dev @chelonia/cliOr install it for your user:
npm install --global @chelonia/clichel --help lists the commands, and chel <command> --help shows the
options of one.
Pre-compiled native binaries are published for the following platforms:
| OS | Architecture | npm sub-package |
|---|---|---|
| Linux | x64 | @chelonia/cli-x64-linux |
| Linux | arm64 | @chelonia/cli-arm64-linux |
| Windows | x64 | @chelonia/cli-x64-win32 |
| macOS | x64 (Intel) | @chelonia/cli-x64-darwin |
| macOS | arm64 (Apple Silicon) | @chelonia/cli-arm64-darwin |
When you install @chelonia/cli, npm selects the sub-package for your platform
through optionalDependencies. Windows on arm64 is not supported.
The Linux binaries are linked against glibc, so on musl-based distributions (Alpine, for example) their SQLite backend does not work. Run chel from source with Deno 2.8.0 or newer there, or use another database backend. The details are in docs/distributing.md.
If chel cannot start, the launcher explains why rather than printing a stack
trace: exit code 127 means no sub-package for your platform is installed, and
126 means one was found but its binary is missing or not executable (reinstall
with npm install --force @chelonia/cli).
chel init # writes chel.toml, with a fresh server_id
chel keygen # makes a key pair to sign contracts with
# Sign a contract, then pin it into contracts/ and chelonia.json
chel manifest --name my.app/list --contract-version 1.0.0 <secret key file> list.js
chel pin list.1.0.0.manifest.json
# Serve the app in dist/, upload contracts/, and watch it for new versions
chel serve --dev --app-manifest chelonia.json distBy default the server keeps everything in memory. Before running it for other people, read docs/server.md.
- Commands: every command and its options.
- Running a server: what
chel servedoes, the dashboard, and production. - Configuration:
chel.toml, its database backends, andchelonia.json. - Signup and billing: the checks on new accounts, and how storage is charged.
- Distributing: how chel is built, packaged and published.
See HISTORY.md
