Toit is a modern high-level language designed specifically for microcontrollers. It is open source and the language implementation consists of the compiler, virtual machine, and standard libraries that together enable Toit programs to run on an ESP32.
Toit is optimized for live reloading on your microcontroller. Your code runs incrementally as you write it and you get instant feedback. Push changes over your local WiFi in two seconds and reserve your USB cable for charging your phone. You iterate quickly, learn fast, and build better things.
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.
This architecture provides a lot of flexibility and it allows you to customize the functionality of your devices by choosing the right services and containers to run instead of re-compiling and re-linking.
Toit comes with pre-packaged development support that makes experimenting and learning by running code on your device easy. You change your code in your editor, update it on your device, and restart it all within seconds. No need to flash over serial, reboot your device, or wait for it to reconnect to your network. It only takes a few minutes to get started.
Under the covers, the development support is provided by Jaguar — a small, open-source Toit service that runs in a container on your ESP32. It uses the capabilities of the Toit virtual machine to let you update and restart your code through an HTTP server that runs on the device and is accessed via local WiFi. Jaguar is completely optional and it intended to be used during development only, so it is typically left out on devices in production.
When you are ready to run your devices in production, you can rely on the Toit virtual machine's support for over-the-air (OTA) firmware updates. You choose when and where to download the updates from and the updates can bundle any number of containers, so all your applications and services can be kept up-to-date through the OTA mechanism. Jaguar is an excellent source of inspiration for how to use the OTA support from your own applications.
If you're looking for a more managed solution for your fleet of devices, Toit offers premium, pre-packaged deployment support through the Artemis. Artemis is a fleet management infrastructure that connects your devices to the cloud and makes it possible to seamlessly update the firmware, containers, and configurations that run on your devices. It is free for up to ten devices and built to scale.
Artemis is the combination of an on-device service that communicates with a broker in the cloud — and the developer tooling to help orchestrate the devices. Hosting your own broker is possible and encouraged, so all your data and code remains under your control. Since Artemis runs in its own container on your devices, it is easy to add Artemis to already deployed devices and remove it again later.