Automatically generate an AltStore / SideStore source from GitHub releases.
This project fetches IPA files from a GitHub repository, extracts metadata, and builds a fully compatible apps.json feed for AltStore-compatible distribution — fully automated via GitHub Actions.
- 🔄 Automatically processes GitHub releases
- 📦 Extracts IPA metadata (version, build, bundle ID, entitlements)
- 🧪 Supports pre-releases (beta builds)
- 📰 Generates AltStore news entries
- ⚡ Fully automated via GitHub Actions
- 🌐 Includes a web UI for installation
- 🔗 Fully dynamic URLs (works on forks + custom domains)
- 🧠 Centralized configuration via
repovars.py
Click Fork and clone your copy.
All configurable values are stored in:
repovars.py
This file controls everything the generator needs, including:
source = {
# AltStore source metadata
}
app = {
# App configuration (name, bundle ID, icons, etc.)
}Open repovars.py and update:
- repo name
- description
- icon
- tint color
- homepage
- app name
- bundle identifier
- screenshots
- developer name
- default metadata
👉 This replaces all previous .env / GitHub variable configuration.
The workflow will:
- Run every hour ⏱
- Fetch latest releases
- Process IPA files
- Use
repovars.pyfor configuration - Generate
apps.json - Deploy to GitHub Pages
No secrets or environment variables required.
Go to:
Settings → Pages
Set:
- Source:
Deploy from branch - Branch:
pages
Your AltStore source will be available at:
https://YOUR_USERNAME.github.io/YOUR_REPO/apps.json
altstore://source?url=https://YOUR_USERNAME.github.io/YOUR_REPO/apps.json
sidestore://source?url=https://YOUR_USERNAME.github.io/YOUR_REPO/apps.json
- GitHub Actions fetches releases
- IPA is downloaded and inspected
Info.plist+ binary metadata extracted- Configuration is loaded from
repovars.py apps.jsonis generated- Published via GitHub Pages
.
├── generate.py # Main generator
├── repovars.py # 🔧 ALL CONFIGURATION
├── index.html # Web UI
├── out/ # Generated apps.json
├── cache/ # Release tracking
└── .github/workflows/ # Automation
- All customization is done in
repovars.py - Pre-releases are supported
- Draft releases are ignored
- Latest version is shown first in AltStore
- No environment variables required
- Multi-app support
- Screenshot gallery UI
- Beta/stable split feeds
- Version history browser
- Faster IPA parsing (no extraction)
MIT (or your choice)
- AltStore / SideStore ecosystem
- GitHub API