Toit uses virtual machine technology to support running multiple containers on your device. The containers are developed and maintained independently from each other and the virtual machine provides the capabilities for safely running your platform-independent applications, services, and drivers side-by-side.
Containers can be installed dynamically, in which case a program on the device downloads the container and installs it. Installing containers this way does not require a firmware update. In fact, the container can be started without even rebooting the device. Jaguar, Toit's development tool, uses this method to install containers, and provide rapid development cycles.
Containers must be compiled with the same SDK version as the firmware.
Alternatively, containers can be installed statically, where they are bundled together with a firmware. These bundles are called envelopes and are an integral part of Toit's firmware process.
When flashing a device, Toit's tools take a firmware envelope as input and flash it onto the device. Similarly, Toit use firmware envelopes as input for over-the-air updates.
Different tools have different capabilities: