Hoquiam
Products / Devices & developers

Hoq Devices

Pair a Linux box once, then give it a job and lease its hardware.

What it does

You install the hoq-deviced agent on a Linux box. It shows a six-digit code, you claim it in the Devices console, and it collects its credential once. From then on it reports what hardware it has, and reports again when you plug something in.

You give the box a role: scan documents, play signage, serve printers, stream barcode scans, forward Bluetooth sensors, drive a coffee roaster or show a station screen. The agent fetches that role's software and refuses it unless it carries an ed25519 signature from a key built into the agent. The signing key never sits on the Devices server or on a box.

Each role runs as its own systemd unit with a sandbox the agent writes from what the role declares: the paths it may write, the groups it needs, whether it may show the screen. Apps can lease the display, a scanner, a printer or a serial port separately, so one box serves two apps at once.

The box keeps itself. It installs security updates on its own, caps its log size, and reports free disk, temperature and pending updates. It never reboots on its own; it tells you a reboot is needed.

In numbers

7roles a box can be given
3versions of each role kept on the box for fallback
15 minbefore an unused pairing code expires
200 MBcap on the box's system log

Specifications

PairingSix-digit code, valid 15 minutes, 5 tries. The credential is collected once.
Signed softwareEvery role payload must carry an ed25519 signature from a key compiled into the agent. The download server is not trusted.
Closed role listintake, screen, print, vision, sensor, roast, station. The server names a role, never a URL or a command.
Closed command listPrinter add, remove, default, pause, resume and probe; screen mode; screenshot; reboot. There is no remote shell.
SandboxEach role runs as its own systemd unit with read-only system paths, a private /tmp, a memory cap, and only the paths it declared writable.
UpdatesSecurity updates install on their own; nothing else does. The box reports when a reboot is needed and never reboots by itself.
RollbackEach role keeps the running version and two earlier ones on the box.
Hardware leasesDisplay, input, printer, scanner, serial, audio and Bluetooth can each be leased by a different app.
AgentOne Rust binary for Linux with systemd.

Features

15 features, all shipped. Listed from the product's code and documentation; each row shows the day it was last checked.

Enrolment 3
Pair by codeThe box shows six digits; you claim it in the console.
One-time credentialThe box collects its credential once; a second pickup fails.
Hardware manifestThe box declares its capabilities and ports, and declares again when hardware changes.
Roles 5
Assign a roleGive a box one of seven jobs from the console.
Signed payloadsUnsigned or wrongly signed payloads are refused before unpacking.
Declared permissionsA role gets write paths, groups, network control or the display only if it asks for them.
Reconciled every pollUnits and permissions are rewritten each poll, so a change reaches boxes without a new release.
Reported versionThe version shown is read from the running process, not from what the installer intended.
Hardware 3
Capability leasesApps lease a display, input, printer, scanner, serial port, audio or Bluetooth separately.
Session or permanentA session lease ends when the app stops renewing; a permanent one ends when released.
One kioskThe agent owns the box's single kiosk screen and shows whichever role holds the display.
Upkeep 4
Security updatesSecurity updates only, applied automatically.
Health reportDisk free, temperature, pending and security updates, reboot needed.
CommandsQueue printer, screen mode, screenshot or reboot commands; each is delivered once and acknowledged.
Separate screen userThe screen and console run as their own user with no sudo.

Works with

  • Hoq ScreenThe screen role installs and runs the signage player.
  • Hoq VisionThe vision role streams camera and barcode scans to Hoq Vision.
  • Hoq SensorThe sensor role forwards nearby Bluetooth sensors to Hoq Sensor.
  • Hoq IntakeThe intake role scans and files documents into Hoq Intake.
  • Hoq PrintThe print role serves the printers the box can reach.

Your data

Where it is keptBox records, leases and commands are in Hoq Devices' database. Role data stays on the box in the paths the role declared.
Getting it outNot documented yet.
If you leaveA box can be revoked; its credential stops working. Account closing is not documented.

APIs and standards

  • Appliance REST: /v1/appliance/enroll, /pickup, /heartbeat, /manifest
  • App REST: /v1/appliances, /v1/leases with a Bearer key (scope devices:use)
  • Claim: POST /v1/claim (scope devices:admin)
  • Standard: ed25519
  • Standard: systemd
  • Standard: IPP
  • Standard: polkit

Compared

Checked 2026-11-01Hoq DevicesbalenaCloudMender
PriceNot published yetFree for 10 devices; Prototype $159/month for 30 devices1Basic $34/month up to 50 devices2
Operating system on the deviceAny Linux with systemdbalenaOS required3Any embedded Linux; Yocto and Debian paths documented4
Signed updatesEvery payload ed25519-signed, key built into the agentOS signed on secure-boot devices; app containers not signed5Signed artifacts on all tiers6
RollbackRunning version plus two earlier ones kept on the boxAutomatic host OS rollback on failed health checks7A/B partitions with automatic rollback2
Remote shellNone by design; fixed command listWeb terminal and SSH3Paid Troubleshoot add-on2
App packagingSigned role payloads run as sandboxed systemd unitsDocker-compatible containers3Optional containers through Update Modules2
Self-hosted serverNo, hosted onlyopenBalena, open source1Open-source server; on-premise on Enterprise4
Per-app hardware leasesDisplay, scanner, printer, serial and more leased separatelyNot published3Not published4
  1. https://www.balena.io/pricing
  2. https://mender.io/pricing/plans
  3. https://docs.balena.io/learn/welcome/primer/
  4. https://docs.mender.io/overview/introduction
  5. https://docs.balena.io/reference/os/secure-boot-and-full-disk-encryption/overview
  6. https://docs.mender.io/overview/artifact
  7. https://docs.balena.io/reference/os/updates/rollbacks