Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,690 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MultiStore

A multi-account fork of SideStore — sideload and refresh apps across several Apple IDs at once, from one app.

Latest release CI License: AGPL v3 iOS 15+ Swift 5 | 6 Fork of SideStore

MultiStore is a fork of SideStore that adds support for multiple Apple IDs. You can add several Apple accounts, and every installed app permanently remembers which account signed it; refreshes are automatically grouped per account, so they always use the correct one. If one account has a problem (expired session, revoked certificate, reached the app limit), only that account's apps are affected — every other account keeps refreshing normally.

It's aimed at anyone who regularly sideloads more apps than a single free Apple ID allows, or who wants to manage multiple signing identities from one installation.

It uses its own display name ("MultiStore") and bundle identifier (com.SideStore.MultiStore), so it can live side-by-side with a normal SideStore install without conflicts.

Everything SideStore already does still applies — untethered sideloading with just your Apple ID, on-device resigning via a custom VPN + minimuxer, and automatic background refresh to beat the 7-day expiry. MultiStore extends SideStore with a multi-account signing layer while leaving the existing sideloading, refresh, and VPN workflow unchanged.

Contents

Quick Start

Want to get running quickly? Here's the short version:

  1. Download the latest release (or a build from Actions for the newest development version).
  2. Sideload SideStore-multi-account.ipa with iLoader (recommended).
  3. Import your pairing file when MultiStore asks (in iLoader: Manage Pairing File → Export).
  4. Add one or more Apple IDs in Settings → Account → + Add Account.
  5. Install and refresh apps as usual — each one is remembered and refreshed with its own account.

Why multiple accounts?

Each free Apple ID is limited to three active apps and a seven-day signing certificate. With several accounts you effectively get more total app slots and staggered expirations, all managed from a single app — instead of juggling separate installs.

Important

MultiStore does not bypass Apple's free developer restrictions. Each Apple ID is still limited to three active apps and seven-day certificates — MultiStore simply manages multiple legitimate Apple IDs from one application.

Feature AltStore SideStore MultiStore
In-app refresh (no AltServer / no computer)
Multiple Apple IDs
More than 3 apps (using multiple free accounts)
Per-app signing account
Independent per-account refresh
Failure isolation
Side-by-side install (with SideStore)

❓ possible but unverified  ·  — not applicable (installing SideStore beside SideStore makes no sense)

Features

  • Multiple Apple Developer accounts with isolated authentication sessions, certificates, teams and credentials.
  • Permanent app → account binding — each InstalledApp stores a signingAccountID; refreshes are partitioned per account and run independently.
  • Failure isolation — one account failing never stops the others from refreshing.
  • Automatic data migration — updating MultiStore converts any existing single-account data in its own store to the multi-account model in place, with no data loss (it does not import a separate SideStore install — see the FAQ).
  • Minimal account UI — add / remove / view accounts and their status in Settings, set a default account, and change any app's signing account.
  • Coexists with SideStore — distinct bundle identifier, display name, keychain namespace and app group.

Deep dives:

Architecture

Each app is bound to the account that signed it via a stable signingAccountID — resolved to that account's Apple Developer Team ID and signing certificate, never a display name or email. At refresh time apps are grouped by account, and each account is authenticated and re-signed independently — so one account's failure is isolated to its own apps.

flowchart LR
    subgraph A["Account A · Team XXXX"]
        A1["App 1"]
        A2["App 2"]
    end
    subgraph B["Account B · Team YYYY"]
        B1["App 3"]
    end
    A -->|refresh| RA["Authenticate & re-sign"]
    B -->|refresh| RB["Authenticate & re-sign"]
    RA -->|success| OK["Apps 1 & 2 refreshed"]
    RB -->|failure| FAIL["Account B fails"]
    FAIL --> ISO["Only App 3 affected —<br/>Account A keeps working"]
Loading

In practice

Scenario SideStore MultiStore
An account's session expires All refreshes fail Only that account's apps fail
A certificate is revoked Manual recovery Only the affected account's apps stop
Juggling multiple Apple IDs Manual, one at a time Built in

Screenshots

Accounts screen with multiple Apple accounts signed in Reassigning a signed app to another account App details showing the signing account and team
Multiple Apple accounts signed in Move a signed app to another account Each app records the account that signed it

The sideloaded app shown is Geometry Dash — © RobTop Games, used here only to illustrate the UI. (For the record: I own it on Steam and Google Play — I just wasn't going to pay for it a third time on a third store 😉)

Requirements

  • macOS with Xcode 16+ (the project uses file-system-synchronized groups)
  • iOS 15+ target device
  • See CONTRIBUTING.md for the full local build setup

Building & CI

The app can only be built on macOS. Every push and pull request is automatically built by GitHub Actions using multi-account-ci.yml, which builds an unsigned archive and uploads a SideStore-multi-account.ipa artifact — grab it from the latest green run under the repo's Actions tab.

Stable builds are published under Releases; the CI artifacts are development builds intended primarily for testing.

Installing on your device

The CI IPA is unsigned, so you sideload it with your own Apple ID (which re-signs it).

Recommended: iLoader (iloader.app) — a free, open-source sideloader that installs the IPA and manages the pairing file MultiStore needs.

  1. Download SideStore-multi-account.ipa from the latest green Actions run and unzip it.
  2. In iLoader, sign in with your Apple ID and install SideStore.ipa (this re-signs it for your device).
  3. Launch MultiStore. When it asks for a pairing file:
    • In iLoader, click Manage Pairing File → Export.
    • Transfer the exported file to your iPhone (AirDrop / iCloud Drive / email / the Files app).
    • In MultiStore, import that file when prompted — this is required for installing/refreshing to actually work.
  4. Allow the VPN MultiStore installs, and enable Developer Mode (Settings → Privacy & Security, iOS 16+).

It appears as MultiStore on your Home Screen, alongside any existing SideStore.

Other sideloaders (Sideloadly, AltServer) also work; the pairing-file idea is the same — see the SideStore docs for background.

Tip: when updating, re-sideload over the existing app with the same Apple ID — don't delete it first — so your added accounts and app data are preserved.

Using multiple accounts

  1. Settings → tap your account (ACCOUNT section)+ Add Account and sign in with another Apple ID.
  2. New installs are signed with your default account; each app then refreshes with the account that signed it.
  3. To move an app to a different account: open an account → Manage Signed Apps → pick the app → choose another account (it re-signs it).

Note: due to an Apple authentication quirk, the first attempt to add an Apple account sometimes errors out — just tap Add Account and try again; the second attempt goes through.

Notes & known quirks

  • It still calls itself "SideStore" internally. Only the Home Screen name and bundle identifier are "MultiStore" (com.SideStore.MultiStore). The Xcode scheme, build artifacts (SideStore.ipa / SideStore.app), the internal product name and various log lines still say "SideStore" — this is intentional, so the build tooling and upstream compatibility stay intact.
  • "Re-sign / rebase signing key" prompt during Refresh All — you can safely refuse it. If you run Refresh All while your default account is not the account that signed MultiStore itself, MultiStore may warn that its own signing certificate doesn't match and offer to re-sign ("rebase") its key. Decline it — it's cosmetic. MultiStore itself is still refreshed and re-signed with its own correct certificate (the account that originally signed it), not the currently-selected default account's — exactly like every other app, each of which is re-signed with the key of the account that signed it. To avoid the prompt entirely, keep the account that signed MultiStore as your default (or refresh each account's apps from its own entry in the accounts screen).

Credits & acknowledgements

MultiStore stands entirely on the shoulders of these projects:

The multi-account layer is the only substantive addition here; all sideloading/refresh/VPN machinery is SideStore's work.

FAQ

Does this bypass Apple's limits?

No. Each Apple ID is still subject to Apple's normal free-developer restrictions (three active apps, seven-day certificates). MultiStore simply manages multiple legitimate Apple accounts independently from one app — it doesn't circumvent anything.

Can I use it alongside SideStore?

Yes. MultiStore installs under its own identity (com.SideStore.MultiStore), so it coexists with a normal SideStore install without conflicts.

Can I import my existing SideStore setup?

No — MultiStore is a separate app (its own bundle identifier, app group and keychain), so it can't read a stock SideStore install's accounts or apps. Set MultiStore up fresh: add your Apple account(s) and install your apps in it. Your existing SideStore keeps working, untouched and independent.

Why doesn't MultiStore import my SideStore data?

iOS isolates every app's sandbox, keychain access groups and app groups. Because MultiStore intentionally uses different identifiers so it can coexist with SideStore, iOS won't let it read SideStore's data — that isolation is exactly what makes side-by-side installs possible.

Why multiple Apple IDs instead of one paid Developer account?

MultiStore works with both free and paid Apple Developer accounts. Multiple accounts are primarily useful for users on free Apple IDs, which Apple limits to three active apps and seven-day certificates each. A paid Apple Developer Program membership removes those three-app and seven-day signing restrictions, making multiple accounts less necessary — but MultiStore lets several free accounts add up for those who'd rather not pay.

Can I remove an account?

Yes. Removing an account clears its stored credentials; apps it signed will stop refreshing until you re-sign them with another configured account (open the account → Manage Signed Apps, or reassign an app from its details).

What does "automatic migration" mean, then?

It's internal only: when you update MultiStore itself, any existing single-account data in its own store is upgraded to the multi-account model automatically (no re-login, no lost apps). It never pulls data from a separate SideStore install.

Is this affiliated with SideStore or AltStore?

No. It's an independent, community fork that builds on their work (see Credits).

Contributing

Contributions are welcome! Please see CONTRIBUTING.md.

License

This project is licensed under the AGPLv3 license, inherited from SideStore. See LICENSE.

About

MultiStore is a fork of SideStore that adds support for multiple Apple accounts, allowing apps to be signed and refreshed independently. SideStore itself is a fork of AltStore that doesn't require an AltServer.

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages