Runtime detection
Scan the folder to find requirements.txt, package.json, go.mod, pom.xml, Gemfile, composer.json, Cargo.toml, config.toml (Hugo), etc.
open-source / offline-first / edge computing
daedalus is an open-source tool that compiles your application and its runtime into one self-extractible, signable, encryptable binary.

field comparison
One .de file, no runtime dependency, SISR delta updates, and a health gate -- compared with the packaging paths developers already know.
| Capability | daedalus | Docker | Podman | AppImage | Snap | Flatpak | PyInstaller | Nix |
|---|---|---|---|---|---|---|---|---|
| Application + runtime | App + runtime in one .de | Image layers | Image layers | One AppImage file | Snap package | App + separate runtime | App + Python runtime | Store paths |
| No host daemon at launch | No Docker, cloud, npm/pip/apt | Requires daemon | Daemonless | Requires FUSE | Requires snapd | Requires Flatpak runtime | No Python install | Requires Nix store |
| Automatic runtime detection | 14 runtimes | Manual packaging | Manual packaging | Manual packaging | Manual packaging | Manual packaging | Spec / entrypoint | Derivation |
| Delta update path | SISR chunk diffing | Full layer redownload | Full layer pull | Full binary redownload | Delta via squashfs | OSTree deltas | Full binary redownload | Store path replacement |
| Signed artifact | Ed25519 manifest + binary | External signing | External signing | Detached signature | Signed assertions | Repository signing | External signing | Cache signing |
| Encrypted payload | AES-256-GCM + external key | Not built in | Not built in | Not built in | Not built in | Not built in | Not built in | Not built in |
| Health gate + rollback | Pending --> Confirmed / Quarantined | Orchestrator concern | Orchestrator concern | Not built in | Refresh rollback | Not built in | Not built in | Generations + rollback |
| Cross-platform targets | 6 targets | Multi-platform images | Multi-platform images | Linux | Linux | Linux | Per-OS builds | Multi-platform packages |
01 / Build time
No Docker, no cloud runtime, no npm/pip/apt at runtime.
daedalus build ./my-app -o my-app.de
Attach any model to the project. It detects the dependencies and entrypoint required to build the app or tool.
Scan the folder to find requirements.txt, package.json, go.mod, pom.xml, Gemfile, composer.json, Cargo.toml, config.toml (Hugo), etc.
Runs pip install, npm install, go mod download, mvnw package, bundle install, composer install, etc.
Go, Rust, Java (Maven/Gradle), .NET --> native binary.
--embed-interpreter python3|node|deno|ruby|php|perl|java|go|wasm|custom bundles the interpreter into the rootfs.
Copies app files, tree-shaking (--tree-shake), minification (--minify).
zstd+tar by default (level 1--19, default 3). SquashFS option (--squashfs) for format v5.
Content-defined FastCDC chunking (target 8192 bytes by default), delta manifest with Merkle tree, Ed25519 manifest signature.
AES-256-GCM with HKDF-SHA256 derivation, salt/nonce stored in JSON metadata. The key is never in the binary.
[stub][payload][metadata][footer]. The stub is the ELF/Mach-O/PE that executes everything.
Ed25519 over SHA-256(footer ‖ payload ‖ metadata).
Binary format
The stub is the ELF/Mach-O/PE that executes everything.
02 / Runtime (user side)
The user launches ./mon-app.de.
The user launches ./mon-app.de.
The stub reads /proc/self/exe and parses the footer from the end of the file.
Cache warm: if the source file SHA-256 matches an existing cache entry (~/.cache/daedalus/<hash>/rootfs/) AND size/mtime match, extraction is skipped --> direct exec.
Cold path: reads the payload, decrypts if needed, verifies Ed25519 (v3+), verifies SHA-256, verifies embedded SISR authenticity.
Atomic extraction with flock, LRU GC (max 16 entries by default).
Health gate: if the version was just updated (Pending state), supervised launch (fork/spawn). If the app survives the timeout or exits 0 --> Confirmed. Otherwise --> Quarantined + automatic rollback to the backup.
execvp of the entrypoint with LD_LIBRARY_PATH, or user+mount namespaces + pivot_root (level 2 isolation).
Reserved flags --daedalus-version and --daedalus-update are intercepted before the app.
03 / SISR
Only modified layers are rebuilt. Update the model via SISR delta over a 960kbps link without re-downloading the full payload.
Triggered by --daedalus-update[=<URL>] or DAEDALUS_UPDATE_URL (Linux only).
Download the remote XBMR manifest, verify Ed25519 + Merkle root.
Retrieve modified chunks by SHA-256, hash-verified.
Atomically reconstruct the binary, mark Pending.
04 / detect + execute
detection + entrypoints
| Runtime | Detection markers | Entrypoints / frameworks |
|---|---|---|
| Python | requirements.txt, pyproject.toml, app.py, main.py | Django (manage.py runserver), FastAPI/uvicorn, Streamlit, PEP 621 (python3 -m module) |
| Node.js | package.json | Next.js standalone, Express (bin/www, dist/main.js), NestJS, Bun (bun.lockb), tsx/ts-node |
| Electron | package.json + dep "electron" | electron /app/main.js |
| Deno | deno.json, deno.jsonc | Fresh, deno run --allow-all |
| Java | pom.xml, build.gradle | Spring Boot fat JAR, mvnw/gradlew |
| Ruby | Gemfile, _config.yml | Rails (bin/rails server), Sinatra, Jekyll (bundle exec jekyll serve) |
| .NET/C# | *.csproj | ASP.NET (dotnet run --project), self-contained publish |
| Go | go.mod, main.go, cmd/ | go build --> static binary |
| PHP | composer.json, *.php | Laravel (artisan + FrankenPHP), WordPress, OpenEMR, Drupal, generic php -S |
| Perl | Makefile.PL, cpanfile | Mojolicious, Dancer |
| Hugo | config.toml, hugo.toml | hugo server |
| Wasm | *.wasm | wasmtime |
| Native binary | ELF/PE magic bytes | Any static or dynamic binary |
05 / universal
Compile from any host to any target.
| Short form | Rust triplet | Stub | OS |
|---|---|---|---|
| host | host | host stub | native |
| linux-x64 | x86_64-unknown-linux-musl | static ELF | Linux |
| linux-arm64 | aarch64-unknown-linux-musl | static ELF | Linux |
| darwin-x64 | x86_64-apple-darwin | Mach-O | macOS |
| darwin-arm64 | aarch64-apple-darwin | Mach-O | macOS |
| win-x64 | x86_64-pc-windows-gnu | PE (.exe) | Windows |
| win-arm64 | aarch64-pc-windows-gnu | PE (.exe) | Windows |
06 / field
Offline-first. Zero Docker. Security by default.
Package a diagnostic AI model + Python runtime in a .de. Deploy on a Raspberry Pi at a rural clinic with no cloud, no fiber, intermittent 2G/3G. Update the model via SISR delta over a 960kbps link. Patient data stays on-device.
LoRaWAN sensors feed a solar gateway with no local data center. The .de binary fits in a LoRa window. Delta updates compress bandwidth by 90%. No pip install on the gateway. AES-256-GCM keeps production data encrypted at rest.
Solar and wind monitoring on isolated sites with no cloud. Production data needs encryption. AES-256-GCM embeds security in the binary. Ed25519 signing guarantees the binary has not been tampered with in transit.
Package Ollama + a model + a custom app in a .de. 100% on-device inference. No cloud GPU, no reliable npm registry needed. Update the model via SISR delta. Hot-swap layers to patch the app without rebuilding the whole binary.
A full app rebuild is slow (Python, Node with 2000 packages). daedalus --update performs an incremental rebuild. Only changed layers are rebuilt. swap patches a layer live in an existing .de without a full rebuild.
Sell or distribute an app without npm, PyPI, or Docker Hub. One .de file to copy to a USB stick, NAS, or file server. Ed25519 signing guarantees authenticity. Optional AES-256-GCM encryption protects intellectual property.
Distribute apps written in 11 runtimes (Python, Node.js, Go, Rust, and more) without managing complex dependencies, virtual environments, or heavy containers. Daedalus packages runtime + code into one self-extractible .de / .daedalus (SquashFS v5) that runs immediately on any Linux distribution, no install step.
Deploy software updates across fleets of thousands of edge / IoT terminals (industrial routers, sensors, kiosks, cameras) exposed to attacks or bandwidth constraints. SISR delta updates cut the size of transmitted patches dramatically, and the auto-update daemon built into the binary stub orchestrates background updates.
Run third-party code or plugins in sensitive environments without risking the host (privilege escalation, data leaks, malicious syscalls). The stub applies strict kernel-level confinement at launch via Landlock (filesystem isolation), seccomp (syscall filtering), and user namespaces.
Meet regulatory and compliance requirements (Cyber Resilience Act, security audits) by guaranteeing the origin and integrity of every binary deployed in production. daedalus attest signs at build time with Ed25519 + SHA-256, auto-generates provenance, SBOM, and CVE vulnerability scans, and stores integrity evidence on a trusted attestation registry.
Give teams a secure internal channel to distribute their CLI tools and internal utilities without publishing to public repositories. A centralized private registry with org/app organization, role-based access control (RBAC), and direct CI/CD integration (GitHub Actions, GitLab CI).
Deploy on Raspberry Pi, IoT gateway, or industrial device without Docker, pip install, or cloud. Static ELF stub on ARMv7/ARM64, 512MB RAM is enough.
Machine without internet, behind a firewall, in an aircraft, or on an isolated site. The .de is self-contained. Run it. Update via local file copy or SISR over sneakernet.
Updates over 960kbps links, LoRa, intermittent 4G, and satellite. SISR delta updates only transmit modified chunks. 90% bandwidth compression vs full binary redownload.
Run on Android through the stub, without root. Package a mobile companion app with its runtime embedded. Cross-compile from macOS or Linux to ARM64 Android targets.
One .de file on a USB stick, NAS, or file server. Ed25519 signing guarantees authenticity. No registry needed. Distribute as you would any other binary.
Optional AES-256-GCM encryption protects the payload intellectual property. The key is never in the binary. Only users with the key can decrypt and run the app.
Desktop version of a SaaS that works without a connection, with optional sync when back online. Package the full stack: frontend, backend, database, runtime.
Deploy in regulated environments (healthcare, finance, defense) without cloud. Air-gapped, strict compliance, mandatory signature verification. Your data never leaves your infrastructure.
Offline diagnostic app on Raspberry Pi at the clinic, no cloud, local data compliance. Patient data stays on-device. HIPAA-ready by design.
LoRaWAN sensors, solar gateway, no local data center. Delta updates over 960kbps. Low-power, low-bandwidth, high-reliability deployments for farms and greenhouses.
Solar/wind monitoring on isolated sites, production data encryption, no cloud. SCADA-adjacent deployments with signed, verified binaries and strict audit trails.
Air-gapped, strict compliance, no cloud runtime, mandatory signature verification. Deploy on classified networks. Your supply chain, your keys, your control.
Offline coding tools on low-cost hardware, no reliable registry. Package IDEs, compilers, and learning environments. Students run them anywhere, on any hardware.
Offline player on set-top box, no manual update. Package media codecs, players, and scheduling software. Update via SISR during off-air windows.
Checkout app on a low-cost terminal, no cloud, signature guarantees integrity. Package the POS software, payment processor, and inventory system together in one .de.
Infotainment, logistics, and tracking on vehicles and containers without a permanent connection. Update via SISR when the vehicle docks. Low bandwidth, high reliability.
AI anywhere
Package Ollama + any local model with your app. Deploy AI where the cloud does not reach: rural clinics, isolated gateways, air-gapped networks, low-bandwidth links.
Attach any model to your project. daedalus detects dependencies and entrypoints, then bundles the runtime + model + app into one .de.
Run entirely offline. No cloud GPU, no API key, no reliable internet. The model and app execute on the target machine.
Update the model via SISR delta over 960kbps links, LoRa, or intermittent 4G. Only changed chunks are transmitted.
Ed25519 signing + AES-256-GCM encryption. The key is never in the binary. Patient data and proprietary models stay on-device.
07 / fail-closed
Memory safety via Rust. The key is never in the binary.
Zero unsafe in daedalus-core and daedalus-cli. Memory safety via Rust.
unsafe only in daedalus-stub for FFI calls: execvp, fork, waitpid, mount, pivot_root, flock. Every unsafe block has a SAFETY comment.
ANSSI-Rust compliant: no panic!() in lib, no unwrap()/expect() without context, checked/wrapping/saturating arithmetic, no mem::forget/.leak().
Ed25519: Ed25519 bit validation (CVE-2023-48022).
Encryption: AES-256-GCM + HKDF-SHA256, external key never embedded.
Seccomp (Linux): optional BPF denylist.
Landlock (Linux): optional LSM filesystem sandbox.
App Sandbox (macOS): optional sandbox profile.
08 / workspace
Workspace crates
Shared library -- format, compression, detection, signing, assembly, CAS, SISR. Zero unsafe.
Self-extractible launcher (ELF/Mach-O/PE). Only crate with unsafe (FFI).
Cross-platform CLI. Zero unsafe.
Key modules in daedalus-core
format.rs -- Footer, MAGIC constants, read/write, version gating
detect.rs -- Runtime detection (14 runtimes), entrypoint resolution
assembly.rs -- Binary assembly [stub][payload][meta][footer]
encrypt.rs -- AES-256-GCM + HKDF-SHA256
sisr_stage.rs / sisr_header.rs -- Build-time chunking, Merkle tree, signature
sisr/engine.rs -- Runtime engine: apply_update, atomic swap
sisr/health.rs -- Health gate state machine (Pending/Confirmed/Quarantined)
sisr/resilience.rs -- Backup/restore/rollback
manifest.rs -- Binary DeltaManifest (XBMD magic)
layer.rs -- RuntimeLayer, ConfigLayer, Capability
metadata.rs -- BunFeatures, EmbeddedInterpreter, EncryptionMeta, Service, HealthCheck
cas.rs -- Content-addressable storage
chunker.rs -- FastCDC content-defined chunking
compress.rs -- zstd
embed.rs -- Interpreter embedding
pkgmgr.rs -- Package manager detection + install
registry.rs -- Layer registry (local dir or HTTP)
universal.rs -- Multi-arch binary polyglot
cron.rs -- Scheduled tasks
minify.rs / treeshake.rs -- JS/TS/CSS minification
persistent.rs -- Persistent storage
09 / terminal
build <dir>
Package a folder as .de
run <file>
Execute a .de
inspect <file>
Read .de metadata
keygen
Generate an Ed25519 key pair
sign <file>
Sign a .de with the private key
verify <file>
Verify the Ed25519 signature
trust <keyfile>
Add a public key to the trust store
scan [dir]
Find all .de files and display their metadata
doctor
Check system prerequisites
clean
Remove cache and artifacts
dashboard
TUI dashboard (SISR benchmarks + cache state, ratatui)
selftest
Test a .de in an ephemeral sandbox
upgrade
Auto-update the daedalus binary
migrate
Migrate a legacy .daedalus v1 to v2+ SISR
swap
Hot-swap a layer in an existing .de
publish
Publish a .de to a registry
registry
Push/Pull/List layers in a CAS registry
serve
Start a local registry
env
Display build config and environment
feedback
Open the feedback page
completion <shell>
Generate completion (bash/zsh/fish/elvish/powershell)
man [dir]
Generate man pages
daedalus
One .de file to copy to a USB stick, NAS, or file server.
documentation
Everything you need to package, sign, and distribute your applications with daedalus. From your first .de binary to enterprise fleet deployment.
If you are new to daedalus, this section guides you through the essential resources to get started.
Step-by-step tutorials, organized by language and workflow.
User guides on how to install, set up, configure, and use daedalus products.
Reference documentation for formats, the build tool, and security.
New to daedalus? Start with Get Started to install and build your first .de binary in under 10 minutes. Then explore the guides for step-by-step tutorials on your specific use case.
blog
How delta chunking compresses a 200MB payload into 18MB over LoRa + satellite. Field data from 3 rural deployments.
Ted Kouhouenou
How clinics and agriculture co-ops sign binaries once and verify on 500+ devices without a CA. No cloud required.
Ted Kouhouenou
SHA-256 + Ed25519 + SBOM + transparency log. The trust layer for edge distribution is here.
Ted Kouhouenou
Named after the mythical craftsman who built the Labyrinth. A dead SSD, a bootable USB stick, and one year of building on 8GB of RAM with no disk.
Ted Kouhouenou
products
Package any app + runtime into a single .de binary. 11 runtimes, 6 targets, zero host dependencies.
CAS registry for .de binaries. Push, pull, version. Ed25519 signing built in. Private or public.
Signed attestation for every binary: SBOM, CVE scan, provenance proof. Deploy with confidence on edge fleets.
Auto-update daemon + SISR delta updates + health gate. Deploy signed binaries to 100 to 100,000 devices. Per-device pricing.
Package Ollama + any local model + your app in one .de. Runs on a Raspberry Pi, an edge gateway, or a laptop. No cloud GPU. No reliable internet required.
pricing
For individual developers and open-source projects.
Limite : utilisation locale & projets open-source publics.
Get startedFor independents building commercial products and automating their CI/CD.
For teams collaborating on distribution and CI/CD integration.
For enterprises deploying trust and runtime at scale on the Edge/IoT.
No more absurd "per user" pricing in Enterprise. Enterprise accounts pay for the number of managed devices and the level of guarantee - not for counting developer licenses. Try it with a private cloud, a full SBOM, and a self-hosted registry.
Talk to sales