GitHub - Sank6/iCloud-Keychain-for-Linux: iCloud Keychain (Apple Passwords) on Linux with HideMyEmail and browser extension · GitHub
/" data-turbo-transient="true" />
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
Sank6
iCloud-Keychain-for-Linux
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>1 Commit<br>1 Commit
extension
extension
host
host
icp
icp
tests
tests
.gitignore
.gitignore
README.md
README.md
RESEARCH.md
RESEARCH.md
pyproject.toml
pyproject.toml
requirements.txt
requirements.txt
View all files
Repository files navigation
iCloud Keychain for Linux
Use your iCloud Keychain passwords on Linux - no Mac required. Sign in with your Apple ID and<br>icp registers this computer as one of your Apple devices, then downloads your passwords into a<br>private, encrypted store on your machine. A browser extension fills them in for you, just like the<br>Passwords app on a Mac or iPhone. Your Hide My Email addresses show up too.
Note: Most of this project was written with AI assistance (and reviewed by a human).<br>It works with my own Apple account, but that's no guarantee it will work with yours.<br>Your passwords never leave your computer, and nothing is ever changed in your Apple<br>account - icp only reads.
This is also untested with Advanced Data Protection enabled. Any help with this will be appreciated -<br>let me know if you have any issues with ADP enabled (also lmk if it works). Please don't spam escrow attempts!
What you'll need
An anisette server running on your machine. Apple's sign-in needs a small piece of data that<br>only Apple's own software can produce; the anisette server provides it locally. Start one with<br>Docker (or Podman) - it keeps running in the background:
docker run -d --restart=always -p 6969:6969 dadoum/anisette-v3-server:latest
You only have to do this once. (If you run it somewhere other than the default<br>http://localhost:6969, set ICP_ANISETTE_URL to its address.)
You will also need this repo. Clone it / download it as you wish.
Install
From the project folder:
python3 -m venv .venv && .venv/bin/pip install -e .<br>source .venv/bin/activate
Sign in
icp login
This will walk you through the login: enter your Apple ID, password, and the 2FA code Apple<br>sends to your other devices. icp then asks for a device passcode or iCloud Security Code so<br>it can join your keychain.
You're only asked for your password and 2FA code once . icp should stay signed in for a year after this.
The passcode step is important and can't be undone : entering the wrong passcode too many<br>times (about 10) will permanently lock your keychain recovery. One correct entry is<br>perfectly safe.
Your 2FA code and passcode are used immediately and never saved . Your password is kept<br>encrypted on your computer (in your login keyring) so icp can stay signed in without<br>asking you again - it never leaves your machine. Your access tokens and passwords are stored<br>the same way.
Browse your passwords
icp show
Opens a full-screen list - start typing to filter, Enter to reveal a password,<br>Esc to quit. Add a word to search directly, or --plain for plain text:
icp show github
Set up the browser extension
The extension/ folder works in Chromium based browsers and Firefox.
Chrome, Chromium, Helium, or Brave
Open your browser's extensions page (e.g. chrome://extensions, helium://extensions) and turn on Developer<br>mode .
Click Load unpacked and choose the extension/ folder. Copy the Extension ID it shows.
Connect the extension to icp by running:
">host/install.sh
Reload the extension. Click its toolbar icon - you'll see the logins for the current site.
Firefox
Open about:debugging#/runtime/this-firefox, click Load Temporary Add-on... , and choose<br>extension/manifest.json. (Firefox removes temporary add-ons when it restarts, so you'll need<br>to re-load it after restarting.)
Connect it to icp:
host/install.sh
Click the toolbar icon to see logins for the current site.
If you ever move this project to a different folder, just run host/install.sh...