d daedalus

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 (gcc or musl-tools) — required by backhand (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