Desktop application shell for Agent Zero. This Electron app automatically downloads and displays the latest content from GitHub releases.
The app consists of two parts:
-
Shell (
shell/) - The Electron executable that handles:- Window management
- Checking for updates via GitHub Releases API
- Downloading and caching content
- Loading the downloaded content
-
Content (
app/) - The actual application UI:- HTML, CSS, and JavaScript files
- Bundled into
content.jsonon each release - Downloaded at runtime by the shell
Note: The
app/folder exists in this repo as source content for the GitHub Action to bundle. The built executable does NOT include these files - it downloads them from GitHub Releases at runtime. This enables "build once, update forever" - content updates are deployed by creating new releases, not rebuilding the app.
- Node.js 20+
- npm 9+
npm installnpm start# All platforms (on respective OS)
npm run make
# Platform specific
npm run make:mac
npm run make:win
npm run make:linux- Update the content in
app/directory - Create a new GitHub Release with a version tag (e.g.,
v1.0.0) - The
bundle-content.ymlworkflow automatically:- Bundles all files in
app/intocontent.json - Uploads
content.jsonto the release
- Bundles all files in
When users launch the app, it will:
- Check the latest release via GitHub API
- Compare timestamps with locally cached content
- Download new content if available
- Display the content
a0-launcher/
├── .github/workflows/ # GitHub Actions
│ ├── bundle-content.yml # Bundles app/ on release
│ └── build.yml # Builds executables
├── app/ # Source content (bundled on release, NOT in executable)
│ └── index.html
├── shell/ # Electron shell (packaged)
│ ├── assets/ # Icons and entitlements
│ ├── main.js # Main process
│ ├── preload.js # Context bridge
│ └── loading.html # Loading screen
├── forge.config.js # Electron Forge config
└── package.json
MIT