How to Make Your Own AltStore or SideStore Source

An AltStore or SideStore source is the link that makes your apps show up inside those stores. This guide shows how to build one from AltStore’s own developer documentation, which SideStore also follows. Last checked: October 28, 2026, against AltStore’s Make a Source, Updating Apps, Distribute with AltStore Classic and AltSource CLI pages, and SideStore’s App Sources page.

The Risks First

  • A source only lists apps. The IPA files it links to are what get installed, so only list apps you built yourself or are allowed to share. Re-uploading other people’s paid apps is copyright infringement.
  • Anyone who can edit your JSON file or your download links can change what your users install. Use an account with two-factor authentication on the host, and do not link to IPA files on servers you do not control.
  • Your users still install with their own Apple ID, so the free-account limits apply to them: 3 apps at a time and a 7-day signature.
  • AltStore checks permissions. Its docs say it “will refuse to install any app whose permissions do not match” what the source lists, so an incomplete listing breaks installs.

What a Source Is

AltStore’s docs describe a source as “just a self-hosted JSON file containing basic metadata about your apps”. You put the file on any web host that serves it at a stable HTTPS URL, put your IPA files online next to it, and share the URL. Several sources in our list of AltStore and SideStore sources are hosted on GitHub Pages or as a raw file in a GitHub repository.

SideStore’s App Sources page says SideStore “is fully compatible with AltStore Sources (or AltSources)” and points to AltStore’s documentation for the format. One source file therefore covers both stores, as long as you build it for AltStore Classic (see the PAL note below).

This is not a sources.list file. That format is for jailbreak package managers such as Cydia and Sileo and does not work in AltStore or SideStore.

The Minimum Source File

In AltStore’s docs, the source-level keys not marked optional are name, nsfw, apps and news. This is a small working layout for one app, built from the examples in AltStore’s docs:

{
  "name": "My Example Source",
  "subtitle": "A source for all of my apps",
  "iconURL": "https://example.com/source_icon.png",
  "website": "https://example.com",
  "nsfw": false,
  "apps": [
    {
      "name": "My Example App",
      "bundleIdentifier": "com.example.myapp",
      "developerName": "Example Developer",
      "localizedDescription": "What the app does.",
      "iconURL": "https://example.com/myapp_icon.png",
      "versions": [
        {
          "version": "1.0",
          "buildVersion": "1",
          "date": "2026-10-28",
          "downloadURL": "https://example.com/myapp-1.0.ipa",
          "size": 79821,
          "minOSVersion": "14.0"
        }
      ],
      "appPermissions": {
        "entitlements": [],
        "privacy": {}
      }
    }
  ],
  "news": []
}

The Keys That Matter Most

Key What AltStore’s docs say about it
bundleIdentifier Must match CFBundleIdentifier in the app’s Info.plist exactly, and is case sensitive. A source cannot list two apps with the same one.
version and buildVersion Must match CFBundleShortVersionString and CFBundleVersion in the Info.plist.
downloadURL For AltStore Classic, the URL of the uploaded .ipa file.
size The app size in bytes, shown to users on the store page.
date The release date in ISO 8601 format, for example 2026-10-28.
minOSVersion / maxOSVersion Optional. AltStore hides updates the device cannot run. The docs warn that most apps should not set a maximum.
appPermissions Every entitlement and every privacy “UsageDescription” key in the app. AltStore compares them with the downloaded IPA.
marketplaceID Only for notarized AltStore PAL apps. Not required for AltStore Classic.
category Optional. One of developer, entertainment, games, lifestyle, other, photo-video, social or utilities.

To read the Info.plist values from an IPA you built, rename a copy to .zip, open Payload/YourApp.app/Info.plist, and copy the three values above. If you still need the IPA itself, see how to create your own IPA file.

Step by Step

  1. Build your app and export the .ipa file.
  2. Upload the .ipa to a host you control and copy its direct download URL.
  3. Write the JSON file, or download AltStore’s example source for AltStore Classic from the Make a Source page and edit it.
  4. Fill in the Info.plist values, the size in bytes and the full permissions list.
  5. Upload the JSON file and open its URL in a browser to check that it loads as plain JSON.
  6. Add the URL in AltStore or SideStore and test an install on a real device before you share the link.

Tools That Fill It In for You

  • altsource (AltServer for macOS). AltStore’s docs say AltServer for macOS includes a beta command-line tool at AltServer.app/Contents/MacOS/altsource. altsource new --ipa creates a source from an IPA, and altsource update adds an app or a new version.
  • AltPublisher. AltStore’s docs mention it as a “community-built tool” for generating a source.
  • AltStudio and AltSource Browser. SideStore’s docs list these community tools. They warn that after AltStudio creates a source you must remove its auto-generated marketplaceID and Build fields, “otherwise SideStore will believe it to be a notarized source and prevent your source being added”.

Community tools are not made by AltStore or SideStore. Check the JSON they produce before you publish it.

Publishing Updates

To ship a new version, upload the new IPA and add a new entry at the start of the app’s versions list. AltStore’s Updating Apps page says it compares the first entry with the installed version and “does not use dates to determine if there’s a newer version”. Each entry needs a different version or buildVersion. Users still have to install the update themselves, which our guide to updating sideloaded apps covers.

Sharing Your Source

SideStore’s docs give a one-tap link format: sidestore://source?url= followed by your source URL. They note that the link crashes if SideStore is not installed, so also give people the plain URL to paste into the Sources tab.

A Note on AltStore PAL

AltStore PAL, the EU version, uses notarized apps in Apple’s ADP format, and needs a marketplaceID and a manifest URL instead of a plain IPA link. That takes a registered Apple developer account and Apple’s notarization, so it is a different job from a sideloading source. SideStore will not add a notarized source. If you are sharing IPA files, build for AltStore Classic.

FAQ

Can I host a source on GitHub?

Yes. A source is a static JSON file. GitHub Pages and raw files in a repository both serve it, and several public sources work this way.

Why does AltStore refuse to install an app from my source?

The most common cause in the docs is a permissions mismatch: the appPermissions list must include every entitlement and privacy key the IPA uses. A wrong bundleIdentifier or version string also causes problems.

Why do my users not see the update?

The new version is probably not first in the versions list, it has the same version and build as the old one, or its minOSVersion is higher than their iOS version.

Can Scarlet use my AltStore source?

Scarlet uses its own repository format and signs apps with a shared enterprise certificate, so it is a separate system. See our IPA libraries and repositories guide. Scarlet is confirmed on iOS 14 through iOS 26; iOS 27 support is reported by third parties but not officially confirmed.

Similar Posts