Skip to content

Feather is a free on-device iOS application manager/installer, using certificates part of the Apple Developer Program.

License

Notifications You must be signed in to change notification settings

khcrysalis/Feather

Repository files navigation

Feather

Feather is a free on-device iOS application manager/installer, using certificates part of the Apple Developer Program.

Features

  • Altstore repo support. Supporting Legacy and 2.0 repo structures
  • Import your own .ipa's.
  • Inject tweaks when signing apps.
  • Install applications straight to your device seamlessly over the air.
  • Allows multiple certificate imports for easy switching.
  • Configurable signing options. (name, bundleid, version, other plist options)
  • Meant to be used with Apple Accounts that are apart of ADP (Apple Developer Program). however other certificates can also work!
  • Easy resigning! If you have another certificate you would like to use on an app you may resign and reinstall that same app!
  • No tracking, analytics, or any of the sort. Your information such as UDID and certificates will never leave the device.

Important

Tweak support is in beta, make sure your tweaks work on the Ellekit hooking platform, and built with the latest version of theos.

Some tweaks, not all, should work with Feather. However, don't expect tweaks to work out of the box. As we will not change any dylib load command that isn't CydiaSubstrate.

Links

Visit the Feather Wiki here!
Visit the roadmap here!

Screenshots

Pointercrate-pocket.

Pointercrate-pocket.

Pointercrate-pocket.

Pointercrate-pocket.

Sources Store Library Signing

Tip

Go into lightmode to see lightmode screenshots!

How it Works

Feather allows you to import a .p12 and a .mobileprovision pair to sign the application with (you will need a correct password to the p12 before importing). Zsign is used for the signing aspect, feather feeds it the certificates you have selected in its certificates tab and will sign the app on your device - after its finished it will now be added to your signed applications tab. When selected, it will take awhile as its compressing and will prompt you to install it.

FAQ

What does Feather use for its server?

It uses the localhost.direct certificate and Vapor to self host an HTTPS server on your device - all itms services really needs is a valid certificate and a valid HTTPS server. Which allows iOS to accept the request and install the application.

Does Feather bundle its own certificate for the server?

Yes, to be able to install applications on device the server needs to be HTTPS. Which, we use a localhost.direct certificate for when turning on the server while attempting to install.

We have an option to download a new certificate to make this server be able to run in the far future but no guarantees. It entirely depends on the owners of localhost.direct to be able to provide a certificate for use. If it does expire and theres a new one available, hopefully we'll be there to update the files in the background so Feather is able to retrieve those.

Notifications aren't working

This is because of a default setting applied when using Feather, read below.

Why does Feather append a random string on the bundle ID?

New ADP (Apple Developer Program) memberships created after June 6, 2021, require development and ad-hoc signed apps for iOS, iPadOS, and tvOS to check with a PPQ (Provisioning Profile Query Check) service when the app is first launched. The device must be connected to the internet to verify.

PPQCheck checks for a similar bundle identifier on the App Store, if said identifier matches the app you're launching and is happened to be signed with a non-appstore certificate, your Apple ID may be flagged and even banned from using the program for any longer.

This is why we prepend the random string before each identifier, its done as a safety meassure - however you can disable it if you really want to in Feathers settings page.

Warning

If you want to keep application data through reinstalls, make sure you have the same bundleid.

What is remove dylib inside of options?

There's a very specific reason its there, for those wanting to remove pre-existing injected dylibs inside but it really serves no other practical use other than that. Don't use this if you have no idea what you're doing.

What about free developer accounts?

Sadly Feather is unlikely to ever support those as there are plenty of alternatives that exist! Here's a few: Altstore, Sideloadly

Building

git clone https://github.com/khcrysalis/feather # Clone
cd feather
make package SCHEME="'feather (Release)'" # Build

Tip

Use SCHEME="'feather (Debug)'" for debug build

Sponsors

Thanks to all my sponsors!!
"samara is cute" - Vendicated

Star History

Star History Chart

Acknowledgements

Contributions

They are welcome! :)