BINLANDER
SEAMLESS INSTALLER & UPDATER FOR NATIVE APPS
DEVELOPER
macOS
.app bundle
Windows
.exe
Linux
AppImage
Your Binaries
$ binlander
wrap
--binary=app
--update-url=
...
CLI Wrap
BINLANDER
wrap • sign • deploy
Your Cert
Code Sign
END USER
Your App
Seamless Experience
∅
No SDK
Zero integration code
</>
OSS
Fully auditable
⌘
Cross-Platform
Mac, Windows, Linux
↻
Auto Updates
Silent & seamless
BINLANDER
COMPLETE NATIVE APP DEPLOYMENT ECOSYSTEM
v2.4.1 LIVE
MISSION CONTROL
Update Server
DEVELOPER
macOS
.app
Windows
.exe
Linux
AppImage
Your Binaries
BINLANDER
CLI Wrapper
Your Cert
Sign
PUSH
END USERS
App v2.4.1
App v2.4.1
Checking...
Seamless Updates
UPDATE
CHECK
MISSION CONTROL FEATURES
Δ
Delta Updates
Ship diffs, not full binaries
%
Staged Rollouts
5% → 25% → 100%
↺
Instant Rollback
One-click revert
⊞
Release Channels
Stable / Beta / Canary
◉
Analytics
Version distribution & adoption
⤴
CI/CD Webhooks
Auto-publish on build
⚑
Team Management
Roles & permissions
☁
Hosted or Self-Host
Your infrastructure or ours
No SDK
Zero integration code
100% auditable OSS
Invisible
Users see your app
Not Binlander
DEVELOPER EXPERIENCE
From zero to deployed in minutes
1
Install
2
Configure
3
Wrap
4
Sign
5
Ship
Terminal
$
brew install binlander
==> Downloading binlander-2.4.1...
==> Installing binlander
==> Caveats: None
✓ binlander installed to /usr/local/bin
$
_
Also: curl -sSL binlander.io/install.sh | sh • go install github.com/binlander/cli@latest
binlander.yaml
app:
name:
"MyApp"
version:
"2.4.1"
updates:
url:
"https://updates.myapp.com"
channel:
"stable"
check_interval:
"6h"
Or pass flags directly: binlander wrap --url=... --channel=stable
Terminal
$
binlander wrap
./dist/myapp
⠋ Wrapping binary...
✓ Wrapped: myapp-darwin-arm64
✓ Wrapped: myapp-win32-x64.exe
✓ Wrapped: myapp-linux-x64.AppImage
$
codesign
--sign "Dev ID" ./out/*
✓ Signed with your certificate
Your existing signing workflow — audit the OSS wrapper anytime
CI/CD INTEGRATION
.github/workflows/release.yml
name:
Release
on:
[push: tags]
jobs:
build:
- uses:
binlander/action@v1
with:
binary:
./dist/myapp
mission_control_token:
${{ secrets.BL_TOKEN }}
Pipeline
Build ✓
Wrap ✓
Push ✓
MISSION CONTROL DASHBOARD
https://mission.binlander.io/myapp
Active Users
12.4k
Latest Version
2.4.1
On Latest
89%
Version Distribution
2.4.1
2.4.0
Recent Releases
v2.4.1
stable
2 hours ago
Rollout: 100%
Pause
Rollback
...
WHY DEVELOPERS CHOOSE BINLANDER
0
Zero Integration Code
No SDK, no dependencies, no changes to
your application code. Just wrap and ship.
Keep your codebase clean
◎
Your Signing, Your Trust
Use your existing certificates. Audit the
OSS wrapper. Users trust your signature.
Full transparency, full control
⚡
Minutes, Not Weeks
Stop building installer infrastructure.
One config file, one command, done.
Ship features, not plumbing
∞
All Platforms, One Flow
macOS, Windows, Linux. Same config,
same workflow, same dashboard.
True cross-platform
brew install binlander
Start shipping in under 5 minutes
THE INVISIBLE EXPERIENCE
What your users see vs. what's really happening
WHAT THEY SEE
BEHIND THE SCENES
1
Download
myapp.com/download
Download MyApp
Version 2.4.1 for macOS
Download
Also available for Windows and Linux
"Normal download page"
User
CDN
myapp.com
Serves wrapped binary
MyApp.dmg
Contains:
App + Binlander runtime
Invisible wrapper
Signed by dev
Fully auditable
2
Install
M
Applications
Drag to install
"Standard Mac installer"
/Applications/MyApp.app/
├── Contents/
│ ├── MacOS/
│ │ └── MyApp
← Your actual app
│ ├── Resources/
│ │ └── .binlander/
← Hidden runtime
│ └── Info.plist
└── _CodeSignature/
Binlander Runtime
~200KB total
No UI, no tray icon
Zero user visibility
3
Use (Forever)
MyApp
User is productive, uninterrupted
"Just my app, working great"
While user works:
App Launch
Version check: 50ms, non-blocking
Update Available
v2.4.2 found → download starts silently
Background Download
Delta update: 2.1MB (not full 45MB)
Staged
Ready for next restart (or force)
Mission Control
User's App
v2.4.1
Server
v2.4.2
"Any updates?" → "Yes, here's delta"
User never interrupted
Zero UI, zero prompts
Optional: subtle menu bar indicator
"Restart to update" (if configured)
WHAT USERS GET (WITHOUT KNOWING IT)
✓
Always Current
Latest features + security patches
⚡
Zero Interruptions
No popups, no "update now" dialogs
Δ
Minimal Bandwidth
Delta updates, not full downloads
↺
Silent Recovery
Auto-rollback if update fails
∅
No Branding
They see your app, not Binlander