Wheelhouse docs

Integration offers#

An installed app can make an offer on another page of the web UI: a note on how the two work together, and in some cases a change that connects them. With AdGuard Home installed, for example, the DNS page offers "Point the resolver at AdGuard Home", with a button that adds AdGuard Home's address to the DNS servers the router forwards queries to.

An offer never changes anything by itself. Its change goes to the pending changes, and takes effect when it is applied with Apply changes in the bar at the bottom of the page.

The card#

An offer appears on the page it is for, as a card with:

  • the offer's title, followed by the app and its address, such as "from AdGuard Home at 10.99.0.10";
  • the offer's text;
  • for an offer with a change, Add this change, which adds it to the pending changes. It needs the operator role; a viewer sees it disabled, with "Changing settings needs the operator role". The notice says "Change saved — It takes effect when you apply pending changes.";
  • for an offer with a change, Show what this changes, which lists the change as it will read in the pending changes. In Advanced mode it reads Show the 1 command, and shows the command.

A stopped app makes no offers. The offers on a page are read again every 30 seconds while it is open.

The Integrations section of the install panel, and the Integrations panel on an app's page, list the offers an app makes and the pages they appear on.

Values from this router#

The catalogue names no address, network or domain of its own; a test refuses one. An offer's change takes those values from the router it appears on:

ValueTaken from
The app's addressThe app's address on the app network.
The DHCP scope and subnetThe first DHCP scope, by name, that has a subnet, and its first subnet.
The domainThe router's Domain name (System → Settings), or else its first authoritative DNS zone.

When the router lacks a value, the offer keeps its text and drops its change, and adds a sentence saying why, such as "This change is not offered because the router has no DHCP scope." An app on the router's own network has no address of its own, so an offer that needs one reads "This change is not offered because the app has no address."

The offers in the catalogue#

The catalogue declares 22 offers. Six of them carry a change.

PageAppOfferChange
DNSAdGuard HomePoint the resolver at AdGuard HomeAdds the app as a DNS server the router forwards to
DNSPi-holePoint the resolver at Pi-holeAdds the app as a DNS server the router forwards to
DNSUnboundResolve recursively instead of forwardingAdds the app as a DNS server the router forwards to
DNSBlockyFilter through BlockyAdds the app as a DNS server the router forwards to
DNSdnsmasqHand wildcard zones to dnsmasqForwards the router's domain to the app
DHCPnetboot.xyzPoint PXE clients hereSets the TFTP server of the first DHCP subnet to the app; the boot file name is set on the subnet
DHCPWatchYourLANTurn discoveries into reservations—
FirewallCrowdSecCrowdSec detects, it does not block—
NATCloudflaredAn alternative to a port forward—
NATNginx Proxy ManagerOne forward instead of many—
CertificatesNginx Proxy ManagerIts certificates stay in the proxy—
QoSSpeedtest TrackerSet shaping from measured speed—
SessionsntopngTraffic history for each device—
Static routesTailscaleTailscale routes are approved in Tailscale—
WireGuardWG-EasyThis is a separate tunnel—
SystemPrometheusCollect Wheelhouse’s own metrics—
Apps, Installed tabPortainerContainers made in Portainer are not managed here—
CompanionsdnsmasqWildcard DNS, per-device DHCP options and PXE—

The entries for the three built-in features carry the other four, none with a change: WireGuard's "Allow tunnel traffic through the firewall", Suricata IDS's "The IDS does not block traffic" and UPnP's "UPnP adds firewall rules too" for the Firewall page, and UPnP's "Rules 4000-4199 belong to UPnP" for the NAT page. A built-in feature makes its offers while it is installed, that is while its page is in the menu, and its card names the feature with no address: "from UPnP / NAT-PMP".

With AdGuard Home at 10.99.0.10, Add this change on its DNS offer adds one change: 10.99.0.10 as a DNS server the router forwards queries to.

What offers do not do#

  • They never apply a change themselves.
  • They cannot be edited on the router: their text and changes come from the catalogue.
  • They are not notifications: an offer is shown only on its page, and nothing is sent anywhere.

For automation#

GET /api/apps/hints/{page} answers the offers for one page, with their changes filled in from this router: for example GET /api/apps/hints/dns. The pages the catalogue uses are dns, dhcp, firewall, nat, certificates, qos, sessions, routes, wireguard, system, apps and daemons (the Companions page).

See also#

Updated 2026-09-18 manual apps hints integration