Hoquiam
Products / Devices & developers

Hoq Sync

Folders kept in step across your computers, encrypted before they leave each one.

In development12 features, all in betasync.hoq.app

What it does

Hoq Sync keeps a folder the same on each of your computers. Files are split into content-defined chunks, each sealed with XChaCha20-Poly1305 under a key that only your devices hold. The coordinator and relays carry sealed chunks and a sealed change log, and never receive a key that opens them.

Devices reach each other first through a relay over TLS on port 443, inside a Noise IK session between the two devices. The relay then introduces them, and they try direct paths: TCP, QUIC over UDP with hole punching, and a port forwarded by the router through PCP, NAT-PMP or UPnP. If a direct path drops, traffic falls back to the relay. A web-only setting keeps everything on port 443.

Edits on two computers at once are resolved with version vectors. The losing version is kept beside the file as name.sync-conflict-<date>-<device>, as Syncthing names them. Hoq Sync runs on Linux and macOS today and is not yet open to customers.

In numbers

256-bitfolder key that never leaves your devices unwrapped
~1 MiBaverage chunk, so a small edit re-sends little
443the only port relayed traffic needs

Specifications

File encryptionXChaCha20-Poly1305 per chunk, with sizes padded (Padmé) to hide exact lengths. Change records, including paths, are sealed the same way.
Who holds the keysA random 256-bit key per folder, made on the device that creates it. The server stores it only wrapped to each member device's X25519 public key.
Chunk namesA chunk's id is a BLAKE3 keyed hash under the folder key, so the server cannot test whether you hold a known file.
Device-to-device protocolNoise_IK_25519_ChaChaPoly_BLAKE2s, end to end between your devices, inside TLS WebSockets on port 443 when relayed.
Direct pathsTCP, QUIC over UDP with hole punching, and router port mapping by PCP, NAT-PMP or UPnP IGD. Each can be turned off, leaving web traffic only.
ChunkingContent-defined chunks of 256 KiB to 4 MiB, about 1 MiB on average, so an edit re-sends only nearby chunks.
ConflictsVersion vectors decide; the other version is kept as name.sync-conflict-<date>-<device>.ext.
PlatformsLinux (systemd user service) and macOS (launchd agent). Windows is planned.
Ignore rulesA .hoqignore file in gitignore syntax, synced like any other file.

Features

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

Folders 5
Create and joinMake a synced folder from a directory and join it on another of your computers.
Share to a deviceGive another of your computers a folder by wrapping its key to that device.
Conflict copiesKeeps the losing side of a simultaneous edit as a named conflict copy.
Cross-OS namesHandles NFC/NFD names, case-only collisions and names Windows refuses.
Ignore fileSkips paths listed in .hoqignore.
Network 5
Relay over 443Devices meet through a relay over TLS WebSockets, end-to-end encrypted with Noise.
Direct connectionsDevices introduced by the relay connect directly over TCP when they can.
Hole punchingQUIC over UDP reaches devices behind NAT without a forwarded port.
Router port mappingAsks the router to forward the direct port by PCP, NAT-PMP or UPnP.
Web onlyOne setting turns off direct paths and UDP, leaving TLS on 443 only.
Setup 2
Pair with Hoq IDAdds a computer to your account by a device sign-in that you approve.
Background serviceInstalls itself as a systemd user service on Linux or a launchd agent on macOS.

Works with

  • Hoq TermBoth sign devices in through Hoq ID and run end-to-end Noise sessions through Hoq relays.

Your data

Where it is keptOn your own computers. Hoq stores device public keys, wrapped folder keys and the sealed change log, none of which it can open.
Getting it outYour files are ordinary files in an ordinary folder on each computer.
If you leavenot published

APIs and standards

  • hoq-sync command line: pair, status, devices, folders, create, share, join, run, direct, service
  • Relay protocol: WebSocket over TLS 1.3 on port 443, Noise IK inside
  • Standard: Noise Protocol Framework (IK)
  • Standard: XChaCha20-Poly1305
  • Standard: BLAKE3
  • Standard: X25519
  • Standard: QUIC
  • Standard: STUN
  • Standard: PCP
  • Standard: NAT-PMP
  • Standard: UPnP IGD
  • Standard: WebSocket

Compared

Checked 2026-11-01Hoq SyncSyncthingDropbox
PlatformsLinux and macOS; Windows plannedmacOS, Windows, Linux, FreeBSD, Solaris, OpenBSD and others1not published2
Where files are storedOnly on your computersOnly on your computers1Dropbox servers2
Client-side encryption by defaultYes, XChaCha20-Poly1305 with keys only your devices holdUntrusted (encrypted) devices are optional and marked beta3Dropbox doesn't offer client-side encryption; end-to-end encryption is an add-on2
Relayed trafficEnd-to-end encrypted with Noise; relays run by HoqEnd-to-end encrypted; public relays or your own4not applicable2
What a relay or untrusted peer can seePadded sizes, timing and IP addresses; never names, paths or contentsFolder ID and label, approximate file sizes, IP addresses, device IDs and traffic volume3not applicable2
TransportTLS WebSocket on 443 with Noise inside; direct TCP and QUICTLS with perfect forward secrecy1TLS between apps and Dropbox servers2
  1. https://syncthing.net/
  2. https://help.dropbox.com/security/how-security-works
  3. https://docs.syncthing.net/users/untrusted.html
  4. https://docs.syncthing.net/users/relaying.html