package icon

Shelf

Hide folders instantly behind a working decoy app. Root optional.
New in version 0.11.3
- Fixed a crash when opening an image in the viewer.
- A root folder left open by a crash is hidden again on the next start.
- A hide that fails partway keeps its record, so nothing is left scrambled.
- Locking during a hide or unhide no longer interrupts it.
- Private move no longer stores the original path in plain text.
- Fixed a calculator crash on very large numbers.
- Large PDFs no longer run the viewer out of memory.
- Flip to hide also works from the disguise.
- Many smaller fixes.
Shelf is a private-space utility that can appear on the launcher as a habit
tracker, calendar, or calculator. Each decoy is a functional app with its own
name, icon, and colour scheme.

Five taps in the top-right corner open the credential prompt. Settings adds a
second, quieter gesture: a long or double tap on the decoy title, or the PIN
typed straight into the calculator. Access uses a PIN, a password, a 3×3 pattern, or a
knock code on four unmarked quarters. The knock pad shows a blank screen while
it is entered, so a watcher learns neither the length of the code nor how far
through it you are. Optional strong-biometric unlock always opens the real
space, with the credential as fallback. The entry gesture can also put up a
fake app-has-stopped dialog; a long press on its message carries on to the
credential.

Auto hide runs after screen off, immediately when Shelf leaves the foreground,
or never. It closes the private space and puts exposed folders back out of
sight. A timer can also put them back after a set time with the screen on. An optional quiet notification, under the disguise's own name, offers
the same emergency hide on demand.

Folders you add stay on the list whether or not they are hidden, and one control
hides or unhides all of them at once. A hidden folder can be opened without
unhiding it: photos, video, audio, PDFs, and text are decrypted as they are
read, with nothing written back to disk and no gallery picking them up.

An optional second credential opens a private space that looks and behaves like
the real one and contains nothing that matters, the one to give up if you are
ever made to hand one over. Shelf records that it was used and tells you on your
next real unlock, along with any wrong credentials someone else tried.

A separate emergency PIN destroys the encryption keys and journals as soon as it
is entered at any unlock prompt. Turning the phone face down or plugging in a
USB cable can also lock everything at once.

Folders can be hidden in three ways: with root, by clearing permission bits on
the backing filesystem; with optional all-files access, by moving the folder
under random names into a hidden directory; or with no special permission, by
renaming it with a leading dot through the system folder picker. All three
replace file names with opaque identifiers, protect the first 64 KiB of each
file, and keep the originals in a recovery manifest encrypted with your
credential. Folders at the top of internal storage or in Download need
all-files access, since Android grants no picker access there.

Each folder operation is journalled before anything changes. Recovery markers,
"Unhide everything", read-only health checks, and a password-encrypted export
of recovery records cover reinstalls and lost app data.

The theme follows the system or is fixed to light, dark, or AMOLED. Shelf can be
kept out of the recent apps list, and screenshots of the private space are
blocked unless you allow them.

Root is optional. Shelf has no network access, analytics, advertising, or cloud
service.

Shelf does not provide full-file encryption. Data beyond each protected header
remains recoverable with forensic tools, and historical file names may remain in
system or app caches. Shelf is designed to prevent casual browsing, not resist
an attacker with root access. The full threat model is at
https://github.com/melastore/shelf/blob/main/THREAT_MODEL.md

Versions

Although APK downloads are available below to give you the choice, you should be aware that by installing that way you will not receive update notifications and it's a less secure way to download. We recommend that you install the F-Droid client and use that.

Download F-Droid
  • Version 0.11.3 (29) suggested Added on Oct 29, 2026

    arm64-v8a armeabi-v7a x86 x86_64

    This version requires Android 11 or newer.

    It is built and signed by the original developer, and guaranteed to correspond to this source tarball.

    Permissions
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "specialUse"
      Allows the app to make use of foreground services with the type "specialUse"
    • android.permission.MANAGE_EXTERNAL_STORAGE
    • show notifications
      Allows the app to show notifications
    • run at startup
      Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
    • Schedule precisely timed actions
      This app can schedule work to happen at a desired time in the future. This also means that the app can run when you're not actively using the device.
    • use biometric hardware
      Allows the app to use biometric hardware for authentication
    • Schedule alarms or event reminders
      This app can schedule actions like alarms and reminders to notify you at a desired time in the future.
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • io.github.melastore.shelf.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 3 MiB PGP Signature | Build Log

  • New in version 0.11.2
    - Hiding and unhiding are much faster.
    - Folders hidden before a reinstall or cleared data can be unhidden again.
    - "Recover renamed folder" works again.
    - "Hide again after" now fires on time. This adds one permission, exact alarms, granted at install.
    - Status bar icons follow the app theme.
    - A cancelled export no longer leaves an empty file.
    - Recovery files remember which folders had scrambled contents.
  • Version 0.11.2 (28) - Added on Oct 25, 2026

    arm64-v8a armeabi-v7a x86 x86_64

    This version requires Android 11 or newer.

    It is built and signed by the original developer, and guaranteed to correspond to this source tarball.

    Permissions
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "specialUse"
      Allows the app to make use of foreground services with the type "specialUse"
    • android.permission.MANAGE_EXTERNAL_STORAGE
    • show notifications
      Allows the app to show notifications
    • run at startup
      Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
    • Schedule precisely timed actions
      This app can schedule work to happen at a desired time in the future. This also means that the app can run when you're not actively using the device.
    • use biometric hardware
      Allows the app to use biometric hardware for authentication
    • Schedule alarms or event reminders
      This app can schedule actions like alarms and reminders to notify you at a desired time in the future.
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • io.github.melastore.shelf.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 3 MiB PGP Signature | Build Log

  • New in version 0.11.1
    - Fixed a root-hidden folder getting stuck if it was re-hidden while open in the viewer.
    - Root hides that could not reach the files no longer need file access to unhide.
    - The calculator opens with a sum that adds up to your PIN.
    - Emergency wipe also removes recovery markers and folder access grants.
    - A damaged PIN file shows an error instead of counting as wrong tries.
    - Viewer files open before their thumbnail loads and show their subfolder.
  • Version 0.11.1 (27) - Added on Oct 22, 2026

    arm64-v8a armeabi-v7a x86 x86_64

    This version requires Android 11 or newer.

    It is built and signed by the original developer, and guaranteed to correspond to this source tarball.

    Permissions
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "specialUse"
      Allows the app to make use of foreground services with the type "specialUse"
    • android.permission.MANAGE_EXTERNAL_STORAGE
    • show notifications
      Allows the app to show notifications
    • run at startup
      Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
    • use biometric hardware
      Allows the app to use biometric hardware for authentication
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • io.github.melastore.shelf.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 3 MiB PGP Signature | Build Log