Many Sites: Updating Nodes Nobody Visits

What one account sees across locations, how a node pulls a firmware release with nobody visiting, and the four things this cloud deliberately won't do.

Published 2026-09-10 · Updated 2026-10-07 · For restaurants →

Ten counters in one building is a wiring problem. Ten counters in ten buildings is a different problem: nobody is standing next to the hardware, and the person who could fix it is three hours away. This page is about what an account can and cannot do across sites — what you can see, how a node takes a new firmware release with nobody pressing anything, and the four things this deliberately does not do, which are as much a part of the answer as the features are.

What one account sees

Claim a node with its claim code and it appears in your fleet. Claiming links ownership; it does not configure a cloud token on the device. Heartbeats and unattended updates also require the node's cloud connection to be configured. What that view holds is modest and worth stating exactly: what each node is, when it was last seen, and the address it has on its own network.

That address opens the node's own page when you are on its network. The fleet website does not proxy local device requests. Direct browser access from a separate origin requires both browser platform permission and a device CORS policy; it is not a qualified integration path on shipping Nodeware. See the browser integration guide.

A node keeps printing whether or not it is claimed, and whether or not our cloud is reachable. Claiming is how you find out about it, not how it works.

Updating a node nobody will visit

This is the part that actually changes with distance. A node asks the cloud what it should be running, and is handed a short-lived signed download URL plus the image's sha256 in the same authenticated answer. It verifies the digest against what it downloaded, writes the other boot slot, and restarts. The image never travels on the strength of a URL alone.

Per node, the controls are:

  • Automatic or pinned. Pinned means this node runs the version you named and nothing else.
  • A channel, for nodes you want on a different track from the rest.
  • A maintenance window, so a restart lands at four in the morning rather than during service.
  • Update now, for when you are watching and want it over with.

This has been proven unattended on real hardware, which is the only kind of proof worth quoting: a node pulled a release with nobody pressing anything, held its reboot through a quiet-bus wait, came back on the other slot and reported the update applied — while a second node stayed pinned on an older build throughout.

Publishing a build is not shipping it

This is the sentence that trips people, so it is here rather than in a footnote. A release exists before it goes anywhere. It is published at a rollout of zero and stays there until somebody promotes it, and that gap is not bureaucracy — it is what creates a rollback target. A fleet where every node is already on the newest thing has nothing to fall back to.

A yank stops the spread, not the access

Yanking a bad build stops its automatic spread, not access to it. A node explicitly pinned to a yanked version is still offered that version, deliberately — because the operator who pinned it may have pinned it for a reason, and silently overriding that is the behaviour you would least want from a fleet tool at two in the morning. It is a brake on distribution, and this site will not sell it as anything stronger.

We publish no rollout speed, no time-to-update, and no fleet size. Not as modesty — those figures do not exist in a form anyone could stand behind, and a number invented for a page is the thing this site exists not to do.

When an update goes wrong

Two different failures, two different recoveries, and they are worth telling apart before you need them:

  • A bad image that still boots. One call reverts the node to its factory image.
  • An image that cannot boot at all. It needs no call: the bootloader puts the node back on the image it was running. That was proven on a real node with a deliberately broken image, and it is the reason the slot arrangement exists. We quote no recovery time for it — one observation on one bench is not a measured spec.

A node also refuses an image built for a different hardware variant before it opens a socket for it, which is the one failure rollback genuinely cannot help with: an image for the wrong variant boots, serves its API and reports itself healthy while quietly declaring the wrong peripherals. Hardware variants has the full table of what each one declares.

Each site is still its own network

Nothing spans sites at the network layer, and you should design as though that is permanent, because it is:

  • Peer discovery is per-LAN. Ask any node on a site for its peers and it lists the rest on that network, with what is plugged into each — one known address reaches the whole floor. It does not reach the next town.
  • A node per station, not a server per site. A node sits beside the hardware it drives, so one failure takes one station down rather than the floor. Proxy Node Raw ships as a bare board with no enclosure and no mount, so decide at each station where it will live.
  • The POS print path is local at every site. That is the property that makes a twelve-location group survive somebody else's outage, and it is the same property whether you have one site or twelve. Cloud-delivered jobs (CloudPRNT and text-to-print, both in development and neither in a released firmware image yet) are an addition that needs the internet; they never replace the local path.

The four things this does not do

  1. No remote access to a node, and no traversal into your networks. You cannot print to a site from head office, change a node's configuration, open a shell, or read a node's status from outside its LAN. Remote firmware updates, as above, are the one thing that crosses — and only because the node asks. Nothing on this page is a step toward more.
  2. No cloud in the print path, ever — which is the flip side of the same design, and the reason it is a feature rather than a gap.
  3. No uptime commitment for the cloud layer. Nodes do not need it to print; we are not going to publish a number for it.
  4. Telemetry is switched on, not assumed. A node with no receiver configured retains nothing, and data from a device that has opted out is dropped rather than stored. If you want it somewhere you control, the wire contract is self-hosted node telemetry.

Before you standardise across sites

Buying the same thing thirty times is exactly when an unproven claim gets expensive, so here is the one to check first. If your point of sale supports raw ESC/POS network printing, it can send receipts to the node on port 9100 with live status replies. Drawer commands on that port are blocked; drawer opening needs the HTTP endpoint. If your point of sale instead picks a printer from a certified list, that is the case we cannot show you working — the printer identities a node can advertise have never been accepted by a real point-of-sale system in our presence, and the compatibility page says so in the same words the firmware's own source does. Prove it on one site before you buy for thirty; Proxy Node Raw is one purchase, and ask about simulator evaluation access before planning a hardware-free trial.

Raw is a 2.4 GHz Wi-Fi board with one USB port. A powered hub can connect supported peripheral combinations within its eight-channel budget; the listed hub arrangement still needs qualification on Raw. For wired Ethernet, 5 GHz Wi-Fi or integrated powered USB ports, consider Station Hub — our own board with Ethernet, dual-band Wi-Fi and powered USB-A ports, offered as a paid presale that ships only after FCC authorization. Standardise on what you can hold in your hand, not on a ship window.

FAQ

Frequently asked questions

Can I push a firmware update to every site from one screen?
Proxy Nodes publishes and promotes releases. You choose each node's update policy, channel, pin and maintenance window, or request Update now. Nodes set to update automatically pull an offered release inside their maintenance windows. What you cannot do is reach into a site and force a specific node from outside its network — the node asks the cloud, the cloud never reaches the node.
What stops a bad release taking down every location at once?
A release is published at a rollout of zero and goes nowhere until it is promoted, so there is always an older build to fall back to. Yanking one stops it spreading automatically — though a node pinned to that version is still offered it, on purpose. And a node that takes an image it cannot boot is put back on the previous one by its own bootloader.
Do I need a point-of-sale connection between sites for this?
No, and there isn't one. Each site's print path is entirely local to that site. The only thing crossing the internet is a node asking whether there is a new firmware release, plus telemetry if you have configured a receiver.
What does the fleet view actually tell me?
What each node is, when it was last seen, and its address on its own network. It is presence, not remote control — and the address is a link your browser opens when you are on that network, because a public web page cannot read a private one.
If the cloud is down, what breaks?
Printing does not. The update check and the fleet view do. A node that cannot reach the cloud keeps driving its printer, keeps answering status queries, keeps buffering whatever telemetry it has, and carries on until somebody plugs the internet back in.
Can I run the telemetry side myself instead?
Yes. A node will point at your own receiver, and the batch format, the retry rules and the limits are all documented — that is a wire contract, not an integration. A node with no receiver configured stores nothing at all.

Related: a truck with an unreliable uplink · what an outage does to printing · self-hosted telemetry · Nodeware firmware · more for operators at Proxy Nodes for restaurants.

Related reading