Flash a cheap mini-PC and it boots straight into your web page, full-screen. Set it up from the screen. It updates and heals on its own โ for years, on a wall.
The content is the product. The stick is just the delivery mechanism.
kioskage turns a throwaway mini-PC into a maintenance-free wall display: it boots to full-screen Chromium pointed at a URL you choose, with an on-screen setup flow so you never need a laptop at the wall.
It's the whole appliance, open-sourced โ FreeBSD image, self-healing over-the-air updates, a setup portal, fleet keep-alive, and drop-in content tools you can use even without the stick. Bring your own content; kioskage carries it.
How it works
A stick owns nothing but the display. It pulls its code from the public repo and its brand from your private overlay, pulls its own content from your server โ every display in a fleet can show a different page โ and pings back a keep-alive so you can watch them all. Nothing phones home to us.
Only the sticks need to run FreeBSD. Your content server and the management hub can be anything โ any web server for the content, any host with an SSH server for the tunnels. Linux, BSD, a container, or whatever you already run. We run FreeBSD on everything ourselves, but it isn't required.
Planned โ a management server the sticks dial out to over reverse SSH (held open with autossh), so you can reach any display for maintenance even when it sits behind NAT on someone else's network.
Features
/ setup
On-screen setup
Connect Wi-Fi or Ethernet and point it at your URL from the display itself โ scan a QR from your phone, or use a keyboard. No laptop, no SSH.
/ ota
Self-healing updates
Pulls nightly, health-checks the result, and automatically rolls back if an update fails to come up. The running revision is always one that passed.
/ brand
Overlay branding
Public code plus a small private overlay โ your brand.conf, a logo, an optional portal โ equals your fleet's identity. Nothing brand-specific in the code.
/ resilient
Offline-resilient content
A drop-in service worker never shows a browser error page, keeps the last good render when the network drops, and reloads only when the content actually changes.
/ fleet
Fleet keep-alive
Each display tags its requests with its name and version, so one line of your access log tells you who's alive, on what build, and when it last checked in.
/ locked
Locks down
Password-gate the setup portal and validate a kiosk key against your content server. Boots read-only; the cursor hides; a physical factory-reset is the escape hatch.
Hardware
kioskage runs on cheap mini-PCs โ the kind you leave on a wall and forget. The two verified units are honestly overkill: FreeBSD plus Chromium is light, so the bar for anything else is low.
Verified today
PROVEN
HIGOLE D5
Intel Celeron J3455 ยท Apollo Lake ยท x86-64
Realtek Gigabit Ethernet
Onboard Wi-Fi (client) ยท eMMC boot
VERIFIED
MeLE mini-PC
x86-64 fanless mini-PC
USB Wi-Fi dongle for the setup hotspot
onboard Wi-Fi can't host an access point
Bring your own โ the bar
โ
Boots FreeBSD 15 with Chromiumamd64 today, arm64 increasingly โ the OS and browser are light. Most cheap Intel/AMD mini-PCs qualify.
โ
HDMI display outputIt drives one screen, edge to edge.
โ
Ethernet and/or Wi-Fi supported by FreeBSDEither works. Ethernet is the simplest path.
โ
For on-screen Wi-Fi setup: an AP-capable adapterOr an ~$8 USB dongle โ or skip it and set up over Ethernet.
On the radar โ leaner & cheaper
CANDIDATE
Raspberry Pi 5
arm64 ยท tiny and cheap
Ethernet works on FreeBSD
onboard Wi-Fi isn't fully supported โ pair a compatible USB dongle, or use Ethernet
FUTURE
RISC-V boards
as FreeBSD + Chromium support matures
the leanest, most open target
Why FreeBSD on the sticks? A smaller footprint and a more unified distribution model than a typical Linux appliance. It should also port to NetBSD without much trouble โ worth it if you want to run even leaner hardware.
Quickstart
01 โ Flash
Write the image
Provision a mini-PC with the FreeBSD image from a USB stick. Boots from eMMC; card slots stay empty.
02 โ Boot
It comes up in setup
First boot shows a setup screen with a QR code and an address โ the display hosts its own portal over a temporary hotspot.
03 โ Point it
Give it a page
Enter a kiosk key or a full URL. It goes full-screen, remembers everything, and starts on every boot from then on.
Even if you never touch the appliance, js/ makes any signage page well-behaved on an always-on screen: no error pages, change-only reloads, and fleet keep-alive. It's independent of the stick โ drop it into a page you already have.