Skip to main content
The sign command signs iOS applications using either Apple ID credentials, PEM certificates, or ad-hoc signing. It can also register devices and install signed apps automatically.

Usage

plumesign sign [OPTIONS] --package <PACKAGE>

Required arguments

--package
path
required
Path to the app bundle or package to sign. Can be either:
  • .app directory (signed in-place)
  • .ipa file (requires --output unless using --apple-id)
plumesign sign --package MyApp.ipa --apple-id

Signing method

Choose one signing method:
--apple-id
boolean
Use Apple ID credentials for signing. Requires prior login via plumesign account login.This method automatically:
  • Retrieves signing certificates from your Apple Developer account
  • Registers the app bundle identifier
  • Generates provisioning profiles
plumesign sign --package MyApp.ipa --apple-id --output signed.ipa
--pem
path[]
PEM files containing certificate and private key for signing. Can specify multiple files.
plumesign sign --package MyApp.ipa --pem cert.pem key.pem --output signed.ipa
If neither --apple-id nor --pem is specified, the app will be signed ad-hoc (without a certificate).

Provisioning profile

--provision
path
Provisioning profile file (.mobileprovision) to embed in the signed app.
plumesign sign --package MyApp.ipa --pem cert.pem --provision profile.mobileprovision --output signed.ipa

Bundle customization

--custom-identifier
string
Override the bundle identifier in Info.plist.
plumesign sign --package MyApp.ipa --custom-identifier com.company.newapp --apple-id
--custom-name
string
Override the bundle display name.
plumesign sign --package MyApp.ipa --custom-name "My Custom App" --apple-id
--custom-version
string
Override the bundle version.
plumesign sign --package MyApp.ipa --custom-version "2.0.0" --apple-id

Tweaks

--tweaks
path[]
Paths to tweak files to inject into the app during signing. Can specify multiple tweaks.
plumesign sign --package MyApp.ipa --tweaks tweak1.dylib tweak2.dylib --apple-id

Device registration and installation

--register-and-install
boolean
Register the device with your Apple Developer account and install the signed app.Only works with --apple-id. Will prompt for device selection if --udid is not provided.
plumesign sign --package MyApp.ipa --apple-id --register-and-install
--udid
string
Specific device UDID to register and install to. Used with --register-and-install.
plumesign sign --package MyApp.ipa --apple-id --register-and-install --udid 00008030-001234567890123A
--mac
boolean
Install to connected Mac instead of iOS device (arm64 Macs only).Conflicts with --udid. Only available on Apple Silicon Macs.
plumesign sign --package MyApp.ipa --apple-id --register-and-install --mac

Output

--output
path
Output path for the signed .ipa file.Required when:
  • Signing an .ipa file without --apple-id (ad-hoc or PEM signing)
Ignored when:
  • Signing an .app directory (always signed in-place)
plumesign sign --package MyApp.ipa --pem cert.pem --output signed.ipa
When signing .app directories, the bundle is modified in-place. The --output flag has no effect for .app bundles.

Examples

Sign with Apple ID

plumesign sign --package MyApp.ipa --apple-id --output signed.ipa

Sign with PEM certificate

plumesign sign --package MyApp.ipa \
  --pem certificate.pem privatekey.pem \
  --provision profile.mobileprovision \
  --output signed.ipa

Ad-hoc signing

plumesign sign --package MyApp.ipa --output signed.ipa

Sign and install to device

plumesign sign --package MyApp.ipa \
  --apple-id \
  --register-and-install \
  --udid 00008030-001234567890123A

Sign with custom bundle info

plumesign sign --package MyApp.ipa \
  --apple-id \
  --custom-identifier com.mycompany.app \
  --custom-name "My App" \
  --custom-version "1.0.0" \
  --output signed.ipa

Sign in-place (.app bundle)

plumesign sign --package MyApp.app --apple-id

Terminal output

$ plumesign sign --package MyApp.ipa --apple-id --output signed.ipa
[2026-03-03T10:15:23Z INFO] Restoring session for [email protected]...
[2026-03-03T10:15:24Z INFO] Modifying bundle...
[2026-03-03T10:15:25Z INFO] Registering bundle identifier...
[2026-03-03T10:15:26Z INFO] Signing bundle...
[2026-03-03T10:15:28Z INFO] Saved signed package to: signed.ipa

Build docs developers (and LLMs) love