Wheelhouse docs

Apps — installed#

The Installed tab of Services → Apps has a card for each installed app and each installed built-in feature. The Containers tab beside it lists every container on the router, including containers Wheelhouse did not install.

Offers about apps#

Above the cards, an installed app can make an offer about the Apps page itself. Portainer is the one app in the catalogue that does: "Containers made in Portainer are not managed here". See Integration offers.

A built-in feature's card#

An installed built-in feature has a card with its name, "built in", the installed badge, and a link to its page, such as Open WireGuard →. Uninstalling it is done from its card on the Catalogue tab.

An app's card#

PartShows
TitleThe app's name in the catalogue, linking to its page, with its name on the router beside it.
BadgeThe app's state. See the state badge.
ImageThe end of the image reference: its name and tag, and its digest when it is pinned.
AddressThe app's address on the app network, or "Router network".
StatusThe container's status as the router reports it, such as "Up 3 hours", or "Stopped" or "Not running".
Health checkThe result of the last health check, for an app that has one.
A readingFor Prometheus and Traefik, one number the app reports about itself ("Series in memory", "HTTP routers"), with how long ago it was read.
Open … ↗The app's web interface, for an app that has one and an address.
Restart or StartSee below.

Restart and Start#

Restart restarts the app at once. It changes no settings, adds nothing to the pending changes and writes no revision; the restart is recorded in the audit log. The notice says "Restarted", with a sentence such as "adguard was restarted. Its settings did not change." Wheelhouse reads the app's status afterwards, and says so if the app is not running.

An agent that does not run on the router cannot use the router's own restart. It restarts the app by stopping it and starting it instead: two changes, applied one after the other, each a revision in the history.

A stopped app shows Start instead. It adds "Start app “adguard”" to the pending changes, and the notice says "Start saved — The app starts when you apply pending changes." Stopping an app is done on its page.

Both buttons need the operator role.

When nothing is installed#

The tab shows "No apps installed" and "Install an app from the catalogue.", with Browse the catalogue, which opens the Catalogue tab.

The state badge#

The same badge is on the app's catalogue card and on its page. An app with its own entry in the navigation carries an amber dot there while it is set to run but is not running.

BadgeMeans
runningThe app is running, and its health check passes or it has none.
unhealthyThe app is running, but its health check fails.
stoppedThe app is stopped in its settings, and is not running.
not runningThe app is set to run, but is not running. Its page offers Restart now, and its log usually says why.
stopped, but runningThe app is stopped in its settings, but something started it. Its page offers Set to running.

For the last two, the badge's tooltip describes the difference in one sentence, and the app's page shows it in full.

Health checks#

33 of the 37 apps in the catalogue have a health check. Wheelhouse connects to the app's port, waiting up to 2 seconds, and, where the catalogue names a path, makes one web request to it, waiting up to 3 seconds and not following redirects. It makes no request specific to the app. A result is kept for 10 seconds.

ResultHealth check readsCounts as
Nothing answers on the portno answer on 10.99.0.10:3000failing
The port answers; no path is namedlistening on 10.99.0.10:3000passing
The web request answers with a status below 500HTTP 200passing
The web request answers with 500 or aboveHTTP 502failing
The port answers, the web request does notport open, HTTP did not answerpassing

An app on the router's own network is not checked, because it has no address to connect to. When the agent does not run on the router, a check that gets no answer is not counted either, because the agent may have no route to the app network. In both cases the Health check line says the app was not checked and why, and the app does not count as unhealthy.

The Unhealthy tile counts the apps whose check fails.

In the menu#

An installed app whose catalogue entry names a menu entry, as 31 of the 36 do, is listed in the menu under Installed and opens its page. An amber dot beside it means it is set to run but is not running.

The Containers tab#

The Containers tab lists every container on the router in the panel Containers on the router. It is read when the tab is opened.

ColumnShows
NameThe container's name.
ImageIts image.
StatusIts status as the router reports it.
PortsThe ports it publishes.
ConfigurationWhether the router's configuration agrees with the container.

The Configuration column reads:

  • matches: the configuration and the container agree.
  • differs: they do not, for example for an app that is set to run and is not running. The badge's tooltip says how, and the app's page offers the fix.
  • not managed: the container is running, but it is not in the router's configuration. Something other than Wheelhouse created it, such as Portainer. No revision records it, restoring a revision does not remove it, and the router cannot remove it: whatever created it has to.
  • —: a stopped container that is not in the configuration. There is nothing to compare.

A not managed container has an Add to configuration button, for the operator role. It adds a change that puts the container in the configuration with the image it is running, and the notice says "Change saved — It takes effect when you apply pending changes." Its network, storage and environment variables have to be added as well: once the change is applied, the container is on the Installed tab, and Edit settings on its page adds them. The button is not offered for a container whose name or image the configuration cannot hold.

With no containers at all, the tab shows "No containers" and "No containers are running or stopped on the router."

For automation#

CallAnswers or does
GET /api/apps/installedThe installed apps with their settings, state, health and verdict, the built-in features, the images and the readings. ?probe=0 leaves out the health checks and readings.
GET /api/containersThe Containers tab: every container, the configuration, and a verdict for each, with snapshot_age_ms, the age of the container list.
POST /api/containers/{name}/restartRestart. Operator role and a licence.
POST /api/apps/restartA restart by stopping and starting, {"name": "adguard"}: two revisions. Operator role and a licence.

See also#

Updated 2026-09-18 manual apps containers health