What do all these releases mean? I’ve been experimenting and now I don’t know what code is being uploaded to the raspi. It can’t be all of these?
Each time you push code to Balena you create a new release. Only one release is active on your devices at any time (usually the last one you pushed).
From what I gather, an “application” is just a name for a set of devices that all have the same kind of hardware and run the same software.
Correct. An ‘application’ is a group of devices all running the same software. When you push to an application, all devices associated with that application get updated.
But what then is a “service”? For example when I look at the web console, I see a service called “main”.
Each application is comprised of one or more “services”. You can think of these as sub-applications, and each runs in a separate docker container on the device. You don’t need to use multiple services, and I recommend you start with a single service (which will effectively be your application). “main” is the name of the default service (e.g. if you are running a single service, it will be named “main”).
And where does the “supervisor” fit in in the world of releases?
The “supervisor” can be thought of as the Balena management software running on the device. It is responsible for things like updating your software when you push new code to the balena cloud.