Prerequisites
Before building, ensure you have:- Completed the development setup
- Downloaded the SlipStream client binaries
- Installed all dependencies
Quick start
Install dependencies
Install all required npm packages (one-time setup):This will download:
- Electron
- electron-builder
- All required npm packages (socks-proxy-agent, socks, http-proxy, ip)
Platform-specific builds
macOS
- Universal build
- ARM64 only
- Intel only
Build for both Apple Silicon and Intel:Output:
dist/SlipStream-GUI-macOS-ARM64.dmg and SlipStream-GUI-macOS-Intel.dmg- Electron runtime
- Node.js dependencies
binaries/slipstream-client-mac-arm64binaries/slipstream-client-mac-intel- Application assets and UI
Windows
- Installer + Portable
- 64-bit only
- 32-bit only
- Portable only
Build both installer and portable versions:Output:
dist/SlipStream-GUI-Windows-x64.exe(installer)dist/SlipStream-GUI-Windows-x64-Portable.exe
- Electron runtime
- Node.js dependencies
binaries/slipstream-client-win.exe- Application assets and UI
Linux
- All formats
- x64 only
- ARM64 only
Build AppImage and DEB packages:Output:
dist/SlipStream-GUI-Linux-x64.AppImagedist/SlipStream-GUI-Linux-x64.deb
- Electron runtime
- Node.js dependencies
binaries/slipstream-client-linux- Application assets and UI
electron-builder configuration
The build configuration is defined inpackage.json under the build key:
Key configuration options
- extraResources: Bundles binaries into the app’s Resources folder
- files: Specifies which files to include/exclude from the build
- target: Defines output format (DMG, NSIS, AppImage, etc.)
- category: App category for system integration
Binary bundling
The build process automatically verifies and bundles the required binaries:- Verification step: Before building, the
verify-binaries.jsscript runs automatically (defined asprebuild:*scripts in package.json) - Checks performed:
- Binary files exist in the
binaries/directory - Files are not Git LFS pointers
- Files are larger than 10KB (real binaries, not placeholders)
- Binary files exist in the
- Bundling: electron-builder copies binaries to the app’s Resources folder
Output directory
All built applications are placed in thedist/ folder:
dist/ directory also contains temporary build artifacts that can be safely deleted.
What gets bundled
The built applications are completely self-contained:- ✅ Electron runtime
- ✅ All Node.js dependencies
- ✅ SlipStream client binaries (platform-specific)
- ✅ Application UI and assets
- ✅ No internet connection required to run
Distribution
The built DMG (macOS), EXE (Windows), and AppImage/DEB (Linux) installers can be distributed directly to users. They include everything needed to run the application.User experience
After download:- ✅ User downloads DMG/EXE/AppImage installer
- ✅ User installs (one click)
- ✅ User runs the app
- ✅ Everything works automatically - no manual actions needed!
- ✅ SlipStream client binaries are bundled inside the app
- ✅ Users never see these files
- ✅ No terminal commands needed
- ✅ No chmod or permission setup needed
- ✅ App automatically handles all permissions
Troubleshooting
Build fails with permission errors
The app automatically sets execute permissions on first run. For development testing:Missing dependencies
- Run
npm installagain - Check that all dependencies in
package.jsonare installed - Clear npm cache:
npm cache clean --force
App doesn’t find SlipStream client
- Make sure the binaries are present under
binaries/:binaries/slipstream-client-mac-arm64binaries/slipstream-client-mac-intelbinaries/slipstream-client-win.exebinaries/slipstream-client-linux
- Check the build logs to see if files were copied correctly
- The app automatically finds binaries in the Resources folder when packaged
Binaries are Git LFS pointers
If the verify script reports LFS pointers instead of real binaries:Development mode testing
To test the app during development without building:Next steps
Contributing
Learn how to contribute to the project
Development overview
Understand the architecture and tech stack