Repository navigation
Releases: EarthstormSoftware/juggle-os
Release list
Juggle OS v1.0.0
Juggle OS 1.0: images for older Raspberry Pis (32-bit, armhf; tested on a Pi 2), and Juggle Flash for Windows and Linux (x64), which writes them. Flash a card with Juggle Flash or juggle flash v1.0.0, or update a Pi already on Juggle OS from Juggle Flash or with juggle update <pi> v1.0.0. They download the image and check it against SHA256SUMS.
Based on Raspberry Pi OS Lite, Trixie (Debian 13), armhf. It's built with pi-gen's 2026-10-06-raspios-trixie-armhf release, with packages as of the build day. Linux kernel 6.18.50, Python 3.13.
What's new
- The app contract is frozen at 1.0. What an app can rely on (how it's installed and run, the files it may write, the hardware it may use, and the requests it may make) only grows from here: an app made for Juggle 1.0 runs unchanged on every 1.x release, and anything that would break one waits for 2.0.
- Apps must say which Juggle OS they need, with
"juggle": "1.0"in theirapp.json, as Juggle Hello and the apps built on App Base already do. An app without it isn't installed, and one already installed isn't started: the login screens say why. Add the line and install the app again: it's the same app, and keeps its settings and everything else it has saved. - Juggle Flash and
juggleare as in v0.8.0, now versioned 1.0.0.
Tested
- In QEMU: two boots and an update to the other slot, on a card with an old data partition where the new one goes, with apps that don't say which Juggle OS they need (or need a later one) refused, and an app from before 1.0 installed again keeping its state. This image, as published, in one boot.
- On a Pi 2, with this release's code and Juggle Hello: updated over Wi-Fi and kept, with all the checks passing; a kernel panic and a hang during trial updates each went back to the OS before, by itself; and the power pulled during a trial boot, while running and early in a boot, with the Pi back each time and nothing to recover.
Juggle OS v0.8.0
Images for older Raspberry Pis (32-bit, armhf; tested on a Pi 2), and Juggle Flash, a new app for Windows and Linux (x64) that writes them. Flash a card with Juggle Flash or juggle flash v0.8.0, or update a Pi already on Juggle OS from Juggle Flash or with juggle update <pi> v0.8.0. They download the image and check it against SHA256SUMS.
Based on Raspberry Pi OS Lite, Trixie (Debian 13), armhf. It's built with pi-gen's 2026-10-06-raspios-trixie-armhf release, with packages as of the build day. Linux kernel 6.18.50, Python 3.13. The image itself is as in v0.7.0: this release is about setting Pis up.
What's new
- Juggle Flash. One window that takes you through flashing a card: the image (the latest release, another version, or a file), the card (only cards in card readers are offered, with their size and name), the Pi's settings (checked as you type), a last check naming the card, then writing and checking it with a progress bar. It also sets up a card that already has Juggle OS, and lists the Pis you've set up, each to update (with the same trial as
juggle update), forget, or use as the default. Downloadjuggle-flash-v0.8.0-win-x64.ziporjuggle-flash-v0.8.0-linux-x64.tar.gz: one program each, withjugglebeside it. They aren't code-signed, so Windows' SmartScreen warns the first time. On Linux it needs a desktop's usual libraries andpkexec. If your SSH key has a passphrase, add it to ssh-agent (ssh-add) for updates from Juggle Flash. - Administrator rights only to write the card. Juggle Flash and
juggleask everything first, as you (the card, the settings, then the confirmation, so nothing is asked once writing starts), and only writing the card asks for administrator rights: Windows asks through UAC, with no extra window, and Linux throughpkexec(Juggle Flash) orsudo(juggle). The card is checked again just before writing, to be sure it's still the one you chose. Your settings, SSH key andknown_hostsare written as you. - The card is ejected safely when it's done, so the settings are on it before you take it out.
--no-ejectleaves it in. - A default Pi. New Pis start from its settings, whichever Pi you set up last: choose it with Use as default in Juggle Flash or
juggle default <name>. - Ethernet only with Wi-Fi saved: type
-for the Wi-Fi network injuggle flashandjuggle setup(Enter takes the saved one). - Clearer messages from
juggle updatewhen a Pi can't be reached (check it's on and on the network), when it doesn't take your SSH key, and when ssh doesn't know its host key.
Tested
- In QEMU: two boots and an update to the other slot, on a card with an old data partition where the new one goes. This image, as published, in one boot.
- On Windows: cards flashed and set up with
juggleand with Juggle Flash (through UAC), checked and ejected, and booted in a Pi 2; Pis updated over SSH withjuggleand from Juggle Flash. On Linux (Debian 13 in WSL2, with a USB card reader): cards flashed withjuggle(throughsudo) and with Juggle Flash (throughpkexec). Juggle Flash's packages for both, as published, run.
Juggle OS v0.7.0
Images for older Raspberry Pis (32-bit, armhf; tested on a Pi 2). Write one with juggle flash v0.7.0, or update a Pi already on Juggle OS with juggle update <pi> v0.7.0. Both download the image and check it against SHA256SUMS.
Based on Raspberry Pi OS Lite, Trixie (Debian 13), armhf. It's built with pi-gen's 2026-10-06-raspios-trixie-armhf release, with packages as of the build day. Linux kernel 6.18.50, Python 3.13.
What's new
- ApplPi OS is now Juggle OS. The command is
juggle, you log in asssh juggle@<pi>.local, and the setup hotspot isJuggle-SETUP. Nothing reads the old names, so a Pi on ApplPi OS is flashed again with this release rather than updated. To keep your saved Pis, copy%APPDATA%\ApplPi\devices.jsonto%APPDATA%\Jugglefirst: a reflashed Pi then keeps its name, Wi-Fi and SSH host key. juggleruns on Linux too. Build it as one self-contained file (dotnet publish src/Juggle.Cli -r linux-x64orlinux-arm, see the README). It flashes cards from a USB card reader or SD slot, never the disk the system runs from, and needs no desktop.- Apps say which Juggle OS they need.
"juggle": "1.0"inapp.json, and the OS gives apps its own version inJUGGLE, so an app that needs something newer is refused with a clear message instead of failing later. It's optional until v1.0. Apps made for ApplPi OS change"applpi"to"juggle"in theirapp.json. - An update that hangs goes back too. If a new OS on trial hangs before it has checked itself, the Pi restarts into the old one after 15 minutes, and says on the next boot that the trial restarted before it could check itself.
juggle updatewaits long enough to report it. - A card flashed again starts clean. Its data partition is formatted on the first boot, so an old app, its settings and old Wi-Fi details don't come back.
- The screen shows the new logo at boot, one icon per CPU core on the console, and the Pi's model on the login screens.
Tested
- In QEMU: two boots and an update to the other slot, on a card with an old data partition where the new one goes. This image, as published, in one boot.
- On a Pi 2: a kernel panic and a hang during a trial update both went back to the old OS; the power pulled during a trial boot, while running, early in a boot and while settings were being written, with nothing lost; flashed with this release's code, checked on its screen and over SSH, and flashed again to start with an empty data partition. A card flashed and the Pi updated from Linux (Debian 13). A second Pi flashed from ApplPi OS with its app redeployed.
ApplPi OS v0.6.0
Images for older Raspberry Pis (32-bit, armhf; tested on a Pi 2). Write one with applpi flash v0.6.0, or update a Pi with applpi update <pi> v0.6.0. Both download the image and check it against SHA256SUMS.
Based on Raspberry Pi OS Lite, Trixie (Debian 13), armhf. It's built with pi-gen's 2026-10-06-raspios-trixie-armhf release, with packages as of the build day. Linux kernel 6.18.50, Python 3.13.
What's new
- Apps can change the Pi's Wi-Fi.
app-request wifi <network> [<country>], with the password on its input, sets a new Wi-Fi network from the next start. It's on trial: if the Pi can't connect within 5 minutes, it puts the network it had before back and restarts, so a mistyped password can't leave a Pi off the network. - Apps can scan for networks.
app-request networkslists the Wi-Fi networks in range, strongest first, for the app's page to offer. - The Wi-Fi fallback waits longer. After a power cut a router can take a while to come back, so a Pi now waits 6 hours without a network by default (up to a day can be set) before starting setup mode. Wi-Fi settings it has never connected with, which may be mistyped, still get 5 minutes.
- Wi-Fi settings count as working only once they give an address. The Wi-Fi check now waits up to a minute for an IPv4 address before taking new settings as proven.
Tested
- In QEMU: two boots and an update to the other slot.
- On a Pi 2, updated over SSH from v0.5.0: the scan, a wrong Wi-Fi password put back in about 6 minutes, and the right one kept. The same on a second Pi through an app's page (App Base), after updating it from v0.4.0.
ApplPi OS v0.5.0
Images for older Raspberry Pis (32-bit, armhf; tested on a Pi 2). Write one with applpi flash v0.5.0, or update a Pi with applpi update <pi> v0.5.0. Both download the image and check it against SHA256SUMS.
Based on Raspberry Pi OS Lite, Trixie (Debian 13), armhf. It's built with pi-gen's 2026-10-06-raspios-trixie-armhf release, with packages as of the build day. Linux kernel 6.18.50, Python 3.13.
What's new
- Setup mode. A Pi with no settings starts a Wi-Fi hotspot,
ApplPi-SETUP. Join it from a phone or laptop and the setup page opens. There you set the Pi's name, its Wi-Fi, the time zone and the SSH keys, so a Pi can be set up withoutapplpi.- The page is HTTPS. Its certificate's fingerprint is shown on the Pi's screen and on the page at
http://192.168.4.1, so you can check you're talking to your Pi. - It lists the Wi-Fi networks it can see. It can keep, paste or upload an SSH key, or make one for you to download.
- When done, it shows the Pi's host key, and a
known_hostsline to add, then restarts.
- The page is HTTPS. Its certificate's fingerprint is shown on the Pi's screen and on the page at
- The Wi-Fi fallback. If Wi-Fi doesn't connect after a while, the Pi restarts in setup mode for a while, then tries again. It's a setting,
wifi_fallback: on or off, after how many minutes (5 by default) and for how many (10 by default). Set it inapplpi.jsonor from the app. - Apps can ask for setup mode through
app-request:setuprestarts the Pi in setup mode, to rename it or change its Wi-Fi;factory-resetforgets the Pi's settings and starts setup mode (the app and its settings are kept);wifi-fallbackchanges the fallback setting.
Tested
- In QEMU: two boots and an update to the other slot, and a Pi with no settings set up through the setup page.
- On a Pi 2: the hotspot from a phone, the setup page, the Wi-Fi fallback, and setup mode started from an app's page.
ApplPi OS v0.4.0
Images for older Raspberry Pis (32-bit, armhf; tested on a Pi 2). Write one with applpi flash v0.4.0, or update a Pi with applpi update <pi> v0.4.0. Both download the image and check it against SHA256SUMS.
What's new
- Apps can ask the OS for a few things through
app-request, and nothing else:- install a new version of themselves, on trial: if the new version doesn't stay up for 30 seconds, the old one comes back;
- set the time zone and time server;
- restart the Pi.
- Each app has its own watchdog. If an app turns it on and then stops responding, it is restarted.
rpi_ws281xis in the image for LED apps. An app that uses the PWM hardware sets"pwm": trueinapp.json, and the onboard audio is left off for it.- Images are published:
applpi flashandapplpi updateaccept a release name orlatest.
Tested
- In QEMU: two boots and an update to the other slot.
- On a Pi 2 with an app, including an OS update that broke the app, which went back to the old slot.