Quickstart
Quickstart
Prerequisites
- Linux x86_64
- Rust with musl target:
rustup target add x86_64-unknown-linux-musl zstd(available on most distributions)- C compiler (
gccormusl-tools) — required bybackhand(squashfs)
Verify all prerequisites in one command:
make preflight # or: daedalus doctor
If anything is missing, auto-fix what can be installed:
daedalus doctor --fix # interactive (asks before each fix)
daedalus doctor --fix --force # non-interactive (for scripts and CI)
1. Build the launcher stub
make stub
# or: cd stub && cargo build --release --target x86_64-unknown-linux-musl
2. Build & run a Python app
daedalus build ./examples/hello-web -o hello-web.de
./hello-web.de
# Server listening on http://127.0.0.1:8080
Open http://127.0.0.1:8080 in your browser.
3. Build & run a Node.js app
daedalus build ./examples/hello-node -o hello-node.de
./hello-node.de
# Server listening on http://127.0.0.1:8080
See the Node.js guide for details on dependencies and node_modules.
4. Inspect a .de
daedalus inspect hello-web.de
name: hello-web
runtime: python
entrypoint: /usr/bin/python3.12 /app/app.py
layers:
- runtime 11.9MB compressed / 54.0MB raw
- app 0.0MB compressed / 0.0MB raw
integrity sha256: 4232327e...
5. Sign & verify
# Generate a keypair
daedalus keygen --key-dir $XDG_DATA_HOME/daedalus/keys
# Sign a .de
daedalus sign hello-web.de --key $XDG_DATA_HOME/daedalus/keys/<fingerprint>.key
# Copy public key to trusted directory
cp $XDG_DATA_HOME/daedalus/keys/<fingerprint>.pub $XDG_DATA_HOME/daedalus/trusted-keys/
# Verify
daedalus verify hello-web.de
Debug
DAEDALUS_VERBOSE=1 ./hello-web.de
# Shows cold/warm start, extraction, and cache status
Incremental rebuild
The runtime layer (interpreter + stdlib + .so) is cached. Only app code is recompressed on subsequent builds:
# First build : ~25s (Python) / ~53s (Node)
# Rebuild (code): ~1s