os.ivan.gg

Install

Installing on a Pixel 8 Pro from a computer with fastboot. The steps follow the GrapheneOS command line install guide, adapted to our builds. If something here differs from that guide and isn't about our signing key, their guide is likely right; read it alongside this page.

Installing erases everything on the phone. Unlocking the bootloader and locking it again each wipe all data. Back up first. This is an alpha from a personal research project: only install it on a phone you can afford to lose data on. See the terms.

Before you start

1. Download and verify

Releases are published at github.com/os-ivan-gg/releases, one release per build, tagged with the build number. Each holds the install zip, husky-install-<build>.zip, and a checksum file, SHA256SUMS-<build>. The release notes list the same SHA-256 values.

The release tagged updates holds the files the phone's built-in updater reads. You don't need it to install.

Verify the SHA-256 of the install zip against the release notes and the SHA256SUMS-<build> file before flashing:

# Linux
sha256sum husky-install-*.zip
# macOS
shasum -a 256 husky-install-*.zip
# Windows (PowerShell)
Get-FileHash husky-install-*.zip -Algorithm SHA256

If the checksum doesn't match, delete the file and download it again. Don't flash a file that doesn't match.

2. Enable OEM unlocking

  1. In the phone's current OS, open Settings → About phone and tap Build number seven times to enable Developer options.
  2. Open Settings → System → Developer options and turn on OEM unlocking. The phone may need an internet connection for the switch to become available.

3. Unlock the bootloader

  1. Boot into the bootloader: turn the phone off, then hold volume down while pressing power. Or, with USB debugging on, run adb reboot bootloader.
  2. Connect it to the computer and check that it is seen:
    fastboot devices
  3. Unlock:
    fastboot flashing unlock
    Confirm on the phone with the volume keys and the power button. This wipes the phone.

4. Flash the factory images

Extract the install zip and run the flash script from inside its folder, with the phone still in the bootloader and connected:

unzip husky-install-<build number>.zip
cd husky-install-<build number>
./flash-all.sh          # Linux, macOS
flash-all.bat           # Windows

Wait until it finishes and the phone is back in the bootloader. Don't unplug the phone while it runs.

Flash our key (avb_custom_key)

Then, still in the bootloader and from the same folder, flash our public key. The install zip includes it as avb_pkmd.bin:

fastboot erase avb_custom_key
fastboot flash avb_custom_key avb_pkmd.bin

The flash script may already do this; that is still to be confirmed on the first install, so run the commands anyway. Flashing the same key twice is harmless.

About our keys

Builds are signed with our own keys, generated on 2026-10-13. Their certificates use CN=os.ivan.gg. These are not GrapheneOS's keys: official GrapheneOS releases and updates won't install over our builds, and ours won't install over theirs without a wipe. A locked phone only boots a build whose key is in avb_custom_key.

The signing keys are kept with an offline backup by the maintainer.

5. Lock the bootloader

Locking turns on full verified boot and stops anyone from flashing the phone over USB. Don't skip it: see why an unlocked bootloader is unsafe.

fastboot flashing lock

Confirm on the phone with the volume keys and the power button. This wipes the phone again.

Lock only with our build and our key on the phone, together. If the avb_custom_key doesn't match the installed build, or the installed build isn't ours, the phone will refuse to boot once locked. Getting it back means unlocking the bootloader again (another wipe), which only works while OEM unlocking is still on. If flashing failed or you aren't sure what is on the phone, flash again before locking.

6. First boot

On a locked phone running our build, the Pixel shows a yellow notice at boot saying it runs a different operating system, with the fingerprint of the key. That notice is normal for any OS signed with its own key, GrapheneOS included, and can't be removed. Check the fingerprint against ours:

Verified boot key fingerprint (SHA-256 of avb_pkmd.bin):

65894abf 95040084 e7f27ff8 cb8e0d29
1b04abc2 66103fb8 8cef5e0c 8c8bf161

Once the phone has booted and you've checked it, go back to Developer options and turn OEM unlocking off. Leave it on until then.

Setting up

Updates

Going back

To leave os.ivan.gg, follow the install guide of the OS you want (for example GrapheneOS) from the unlock step. That wipes the phone. If you go back to the stock OS, run fastboot erase avb_custom_key before locking the bootloader.