Skip to content

Introduction

A runtime is an operating system and software stack that enables your program to run on the aleph.im network.

Runtimes are customized Linux root filesystems that integrate with the aleph.im infrastructure and provide access to APIs, as well as quick responses to HTTP requests and other events.

The project provides official runtimes with all you need for most programs and in most case you will simply use those.

Additionally, you can build and publish custom runtimes, and use any available runtime on the network for your program.

Existing Runtimes

Official runtimes

Aleph.im provides users with a default runtime based on Debian 12 "bookworkm", the current stable version of the Debian project which can be found on the Explorer. This runtime is built with software available in the distribution, including Python 3.11 and Nodejs.

There is also a Debian 11 "bullseye" runtime, which is deprecated but kept for compatibilities reason.

These are maintained as part of the aleph-vm repository, the code is available in the /runtime folder

Third-party runtimes

Runtimes made available on the network by third party can also be used by specifying their item_hash when creating your program.

User can also build and use their own runtime by uploading them to the aleph network, see Create custom runtimes

Init process

To optimize performance, runtime uses a custom Linux init process. This process is specially designed to quickly launch the right endpoint in response to events such as HTTP requests. This is especially useful when using on-demand execution.

This custom init consists in two simple programs, init0.sh and init1.py.

Use these in your custom runtime by copying them to /rootfs/sbin/init and /mnt/rootfs/root/init1.py respectively.

Persistent Execution may use the same init process, but this is not required. If you do not make use of the capabilities provided by the aleph.im ecosystem, using the default of your distribution (ex: systemd, OpenRC, ...) should work as well.

List of official runtimes

Functions

Runtime used for functions

name hash filesystem
Official runtime with Debian 11, Python 3.9 & Node.js 14 bd79839bf96e595a06da5ac0b6ba51dea6f7e2591bb913deccded04d831d29f4 ext4
Official runtime with Debian 12, Python 3.11 63f07193e6ee9d207b7d1fcf8286f9aee34e6f12f101d2ec77c1229f92964696 ext4
Official Node.js LTS runtime (with nvm support) on Debian 11 3c238dd3ffba73ab9b2cccb90a11e40e78aff396152de922a6d794a0a65a305e ext4
Deprecated Debian runtime f873715dc2feec3833074bd4b8745363a0e0093746b987b4c8191268883b2463 ext4

Instances

Roofs for Firecracker

name hash filesystem
Debian 11 “Bullseye” 887957042bb0e360da3485ed33175882ce72a70d79f1ba599400ff4802b7cee7 BTRFS
Debian 12 “Bookworm” 6e30de68c6cedfa6b45240c2b51e52495ac6fb1bd4b36457b3d5ca307594d595 BTRFS
Ubuntu 22.04 LTS 77fef271aa6ff9825efa3186ca2e715d19e7108279b817201c69c34cedc74c27 BTRFS

QEMU Disk Image

QEMU "runtimes" are regular disk image. The image uploaded to the network are the one directly provided by their respective project, specifically the cloud variant with cloud-init enabled.

name hash filesystem
Debian 11 “Bullseye” f7e68c568906b4ebcd3cd3c4bfdff96c489cd2a9ef73ba2d7503f244dfd578de disk img
Debian 12 “Bookworm” b6ff5c3a8205d1ca4c7c3369300eeafff498b558f71b851aa2114afd0a532717 disk img
Ubuntu 22.04 LTS 4a0f62da42f4478544616519e6f5d58adb1096e069b392b151d47c3609492d0c disk img

Confidential Computing Disk

No runtime or disk image are provided at the moment for confidential computing.

Firmware for Confidential computing

The runtime for the confidential image are custom-built OVMF file that are used to validate, decrypt and start confidential VM. Refer to the confidential section

  • Confidential firmware item hash : ba5bb13f3abca960b101a759be162b229e2b7e93ecad9d1307e54de887f177ff
  • Hash for verification for the confidentiality validation process 89b76b0e64fe9015084fbffdf8ac98185bafc688bfe7a0b398585c392d03c7ee