Sound the Horn. Ship Everywhere.

Automatic updates for your desktop app, from one dashboard.

The update server you were about to build yourself

Storage, signing, channels and a client that applies updates safely. All of it is already done, for Windows today and macOS and Linux next.

Every release is signed

The release manifest is signed with your app's own key when you upload. The installer checks that signature before it touches a single file, so a tampered update never applies.

Stable, beta and canary

Every channel runs its own build: 42 to everyone on stable, 47 to your beta testers, 49 to your own team on canary. Protect a channel with a token or a password, and roll back by pointing it at an older build.

Only what changed downloads

Each file is checked against its SHA-256, then swapped in as one step. If anything fails, the old version is restored.

See who is on which version

Active devices, installs and which version each one runs, plus why people uninstall. Longer history on paid plans.

Upload from your CI

Add one step to a GitHub Actions workflow and every push uploads a build. A branch can get its own channel, so a build from a feature branch lands on beta without anyone clicking anything.

Done for you

We build your custom installer

Need more than the design studio? We design and build a branded installer for you — your screens, your install steps, your roll-out — and ship it through the same signed update pipeline.

See what we build

From your build folder to every install

No servers to run and no pipeline to configure. You do the first and third steps in the dashboard.

  1. 1

    Upload a build

    Drop your app’s files into the dashboard, or let your CI upload them. Each file is hashed before it leaves your machine, and files we already store are skipped.

  2. 2

    Omnihorn signs it

    The release manifest is signed with your app’s key and the files are scanned before the build goes live.

  3. 3

    Pick a channel

    Point stable, beta or any channel at the build. The next update check on that channel sees it.

  4. 4

    Installs catch up

    Your installer verifies the signature, downloads the changed files and swaps them in without a reinstall.

Pick your tier

Every plan ships signed updates to every install. Higher tiers raise the limits. Start with Indie for free and upgrade when your install base does.

Indie

Rare plan

Freeforever

For solo developers and side projects.

  • 3apps
  • 2channels per app
  • 2 GBstorage
  • 150 GBbandwidth a month≈ 5,100 active users
  • 7 daysof analytics history
  • 1team member
  • Shows a small "Powered by Omnihorn" badge in the installer

“Every studio started as a side project.”

Most popular

Pro

Epic plan

$19+ taxa month

For developers with a real product.

  • Unlimitedapps
  • 50channels per app
  • 20 GBstorage
  • 1 TBbandwidth a month≈ 34,000 active users
  • 30 daysof analytics history
  • 10team members
  • No Omnihorn branding in the installer
  • Priority build queue

“Your name on the installer, not ours.”

Studio

Legendary plan

$49+ taxa month

For teams shipping real products.

  • Unlimitedapps
  • 200channels per app
  • 100 GBstorage
  • 3 TBbandwidth a month≈ 100,000 active users
  • 90 daysof advanced analytics
  • 25team members
  • No Omnihorn branding in the installer
  • Priority build queue
  • Region restrictions
  • Webhooks

“Forged for teams who ship on Fridays.”

Enterprise

Unique plan

Custom

Unlimited scale, dedicated support and an SLA.

  • Unlimitedapps and channels
  • Unlimitedstorage and bandwidth
  • Fullanalytics history
  • Unlimitedteam members
  • Everything in Studio
  • Priority support
  • Custom SLA

“One of a kind. Signed in writing.”

Built by developers who shipped desktop apps the hard way

Pushing an update to a desktop app safely, especially on Windows, is a surprisingly painful problem with no clean off-the-shelf answer. So we built the infrastructure we wished existed.

Every update goes through the same checks, whichever plan you're on. Nothing is applied until it has proven where it came from.

acme-notes 1.4.3+build.42

  • Files hashed in your browser before upload
  • Manifest signed with your app’s key
  • Signature verified on the user’s PC
  • Every file’s SHA-256 checked after download
  • Applied atomically, rolled back on failure

Learn how desktop updates work, then set yours up

Guides for the people who ship the app, test it, approve it and secure it.

Common questions

›How do I add auto-update to a desktop app?

Upload your compiled app to Omnihorn and press Build installer. The installer it produces checks your release channel, verifies the signature on the update, downloads only the files that changed, and applies them with a rollback if anything fails. You do not write update code.

›Can Omnihorn create a Windows installer for my app?

Yes. You design the installer window in the dashboard, choose what launches after install, and Omnihorn builds a standalone setup.exe. It works with any framework because it ships your build folder; you do not need Flutter or Visual Studio on your side.

›What is a release channel?

A channel, such as production or beta, points installed copies of your app at one build. Moving the pointer ships the build, and pointing it at an older build is a rollback. Channels can be public, password-protected or token-only.

›Are updates signed?

Every release is signed with your app’s own Ed25519 key and the installer verifies it before any file is applied. See the security guide for exactly what is checked.

›Does it work on macOS and Linux?

Windows is supported today. macOS and Linux installers are on the roadmap and are not available yet.

›How much does it cost?

There is a free plan that needs no card. Paid plans raise limits; the pricing page lists them.

Your next release, on every install

Create a workspace in under a minute. Indie is free and doesn't need a card.

Start for free