Skip to main content

Unjiggle

Your iPhone home screen is a mess. You know it. You've given up fixing it. Unjiggle fixes it for you.

Unjiggle is an AI-powered CLI that reads your iPhone home screen, scores your organization, roasts your app collection, writes obituaries for your dead apps, and generates share cards you'll actually want to post.

unjiggle go — one command to scan, score, and analyze your iPhone

Quick Start

pip install unjiggle

Connect your iPhone via USB, then:

unjiggle go

One command. It scans your phone, scores your organization, calculates your swipe tax, and generates a share card that auto-copies to your clipboard. Cmd+V to paste into iMessage, Twitter, or Instagram.

Share Cards

Every feature generates a 1080x1350 share card that copies to your clipboard automatically. No screenshots needed — just Cmd+V.

Unjiggle share card — The Organized Maximalist, score 70/100

Features

Core (no API key needed)

Command What it does
unjiggle go Full experience: scan, score, archetype, swipe tax, share card
unjiggle swipetax How many unnecessary swipes your layout costs per year
unjiggle scan See your layout color-coded by category
unjiggle score Organization score (0-100) with breakdown
unjiggle demo Try it without a phone — see what the output looks like

Viral features (works without API key, better with one)

Command What it does
unjiggle mirror Personality roast from your app collection
unjiggle obituary Eulogies for your dead apps

These generate share cards with or without an API key. With Claude or GPT, the roasts are funnier and more personal. Without, you get a solid rule-based analysis.

AI-powered (needs API key)

Command What it does
unjiggle analyze Deep AI observations (Claude or GPT-4.1)
unjiggle suggest Interactive walkthrough — apply changes step by step
unjiggle suggest --apply-all Just Fix It mode — apply everything at once

Safety

Command What it does
unjiggle safety-test Read the layout and verify a backup without changing the phone
unjiggle safety-test --write-roundtrip Offer a write test that can change icons; requires confirmation
unjiggle backup Save current layout
unjiggle restore List backups; pass a file to attempt a restore

Safety update in 0.3.2

Earlier versions of safety-test sent the layout back to the iPhone despite saying the test changed nothing. Sending even an unchanged layout can make iOS add or move icons. The default test now only reads the phone and saves a backup.

  • A write test requires --write-roundtrip and a separate yes/no confirmation that defaults to No. It is not needed before using Unjiggle.
  • Preparing to apply changes no longer runs an extra test write.
  • If the layout changes while a backup is being checked, Unjiggle stops and keeps the original backup. New verified backups do not overwrite files from the same second.
  • Restore saves the phone's current layout first. If the phone does not match the requested backup afterward, the command reports failure and exits with an error. It does not retry or try another restore automatically.
  • Restore refuses completely empty layouts and unsupported backup formats rather than sending them to the phone. Layouts containing only widgets are supported.

These changes do not establish a fix for icons returning on iOS 27, or a safe way to recover folders lost after resetting the Home Screen. If a test or restore has already changed your layout unexpectedly, stop further attempts and keep your backups. Backup files contain app and folder names; share them privately when seeking help.

Requirements

  • macOS (USB communication with iPhone)
  • iPhone connected via USB with "Trust This Computer" accepted
  • Python 3.10+
  • API key (optional): set ANTHROPIC_API_KEY or OPENAI_API_KEY for AI features. Core features and share cards work without one.

How It Works

Unjiggle uses pymobiledevice3 to communicate with your iPhone's SpringBoard services over USB. It reads the IconState (your home screen layout), enriches it with App Store metadata, and generates observations and layout suggestions.

On macOS 12-15, it can also read Screen Time data from knowledgeC.db for real app usage stats (last opened, daily opens). On newer macOS versions, it falls back to positional heuristics.

Share cards render to PNG via Chrome headless and auto-copy to your macOS clipboard.

Earlier device testing used an iPhone 16 Pro on iOS 26; it does not establish safety on other iOS versions. Applying or restoring a layout can add or move icons. A verified backup is not a guarantee that a restore will succeed, and an immediate match does not prove the layout will stay the same after a reboot.

GUI Coming Soon

A native Mac app with live preview, drag-and-drop editing, animated before/after transformations, and a slider to control aggressiveness is in development.

Sign up for early access: unjiggle.com

License

GPL-3.0 (matching pymobiledevice3)

Metadata

Release files for unjiggle 0.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for unjiggle 0.3.2
File Size Uploaded
unjiggle-0.3.2.tar.gz 305.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for unjiggle 0.3.2
File Interpreter ABI Platform
unjiggle-0.3.2-py3-none-any.whl Python 3 none any Details

Total release size: 377.6 kB

Release files / unjiggle-0.3.2.tar.gz

Download URL unjiggle-0.3.2.tar.gz
Size 305.4 kB
Tags Source
SHA-256 checksum
How to use checksums
17582f7d5eaa43a69315a97cd6e81851bc19536a68cdec566adab46d9a8fac1f
BLAKE2b-256 checksum
How to use checksums
8b8430a5b281ccf1f9b83cc3a0306f8f4e435e6f017fd505be71d4079d6498d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / unjiggle-0.3.2-py3-none-any.whl

Download URL unjiggle-0.3.2-py3-none-any.whl
Size 72.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7eb923c3404eb1158736be9a7fc160398437abf5d375ade7049461ab5c0c04ba
BLAKE2b-256 checksum
How to use checksums
ccf968c5b0096db4309e99d6a9013a058a171c7e7a272729075c38d013c94478
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.3

2 release files

This release

0.3.2 This release

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page