Harbor
0.2.0-alpha06 · GitHub
More about this app
Work-profile manager with optional Shizuku tools for automation
Website · Install from F-Droid · GitHub Releases
Harbor is a free and open-source Android work-profile manager. It creates an isolated Work space where apps keep separate data from the Personal side of the phone.
Harbor does not require Google Play services, root, an account, analytics, advertising, or the INTERNET permission for its core features.
Harbor is alpha software. Use it for testing and non-critical data while device compatibility is still being expanded.
Screenshots
Harbor Personal and Work interfaces.
Why Harbor
Harbor is designed to keep its normal Work-profile path local and based on Android's supported APIs.
| Harbor | |
|---|---|
| Internet permission | No |
| Analytics or telemetry | No |
| Advertising | No |
| Account required | No |
| Google Play services required | No |
| Root required | No |
| Shizuku required for core features | No |
| Core management API | Android DevicePolicyManager |
Core features
- Create a standard Android work profile.
- Show and search apps installed inside Work.
- Launch apps and open Android app details.
- Freeze and unfreeze eligible apps.
- Perform batch app-management actions.
- Use Android's confirmation flow for uninstall.
- Create launcher shortcuts for Work apps.
- Send selected files from Personal to Work.
- Send a single Personal APK into Work and open Android's confirmation-based installer.
- On Android 11+, manage each Work app's eligibility for Android's cross-profile connection flow while leaving final consent to Android.
Shizuku is not required for these normal Work-profile features.
Optional advanced tools
Shizuku can be enabled separately for advanced functionality, including:
- Local diagnostics.
- Package cloning.
- Android-user discovery.
- Secondary-user creation where supported.
- Harbor installation for those users.
- User switching.
- Experimental additional workspaces.
Additional workspaces depend on Android and OEM support. Harbor intentionally does not provide destructive full-user deletion.
How Harbor works
Android work profiles are separate spaces managed by the operating system. Apps inside Work have their own app data and appear with Android's work badge.
Your phone
├── Personal
│ ├── Harbor
│ └── Personal apps
│
└── Work
├── Harbor (profile owner)
└── Isolated Work apps
Harbor uses Android's supported DevicePolicyManager APIs. The Harbor copy inside Work becomes the profile owner and performs management actions locally. Harbor respects Android's one-managed-profile-per-parent-user model rather than trying to bypass it.
Install
F-Droid
F-Droid is the recommended installation source.
Harbor's F-Droid recipe is configured for reproducible upstream-signed APKs. F-Droid independently rebuilds each tagged release and publishes Harbor's developer-signed APK only when that rebuild matches the upstream release artifact.
GitHub Releases
Alpha APKs are also available from GitHub Releases.
Signing note: for releases that F-Droid successfully reproduces and publishes through the configured upstream-signed flow, the GitHub and F-Droid APKs use the same Harbor signing identity. If F-Droid cannot reproduce a release, that version is skipped rather than published with a separate F-Droid signing key.
Create your Work space
- Install and open Harbor on the Personal side.
- Tap Create Work space.
- Follow Android's Work-profile setup screens.
- Open the work-badged Harbor app.
- Manage apps inside Work from there.
Personal to Work file sharing
Harbor supports sending files from Personal to Work. Selected files are copied into:
Downloads/Harbor
inside Work. The original Personal file is not deleted. Harbor does not provide a Work-to-Personal export flow.
Current limitations
Harbor is still alpha software, and some behavior remains device-dependent.
- Work-profile provisioning and device-policy behavior can differ by manufacturer.
- Additional Shizuku workspaces are experimental.
- Some launcher behavior remains device-dependent.
- Harbor supports Personal-to-Work file transfer, not Work-to-Personal export.
- Android generally permits one managed profile per parent user.
- Per-app cross-profile access requires Android 11 or newer and only controls app eligibility; Android still owns the final connection-consent flow.
See Compatibility for tested configurations and device-specific limitations.
Compatibility
Harbor targets Android 10 through Android 16 (API 29-36).
Help test Harbor on more devices
Harbor needs real-device testing across more Android versions and manufacturers before it can move beyond alpha. If you have an untested device, compatibility reports are useful even when everything works correctly.
Testing is especially useful on:
- Google Pixel running Android 16.
- A physical encrypted Android 10 device.
- Xiaomi / HyperOS.
- Oppo, Realme, or Vivo devices.
- OnePlus devices.
- LineageOS or another GMS-free Android build.
- Any other manufacturer or Android version not listed below.
Please test the normal Harbor flow where possible: Work-profile provisioning, opening the Work Harbor instance, app listing, freeze/unfreeze, uninstall, launcher shortcuts, Personal-to-Work file sharing, reboot, and Harbor updates.
Open a device compatibility report and include your device model, manufacturer, Android version, Harbor version, and what worked or failed. Do not include personal data or sensitive app information.
For the detailed test matrix, see Compatibility.
Physical devices tested
- Samsung Galaxy S24
The OnePlus 13 remains planned secondary coverage and has not been tested yet.
See Compatibility for emulator results, feature-specific user reports, and device-specific limitations.
Privacy and security
Harbor is designed to work locally:
- No
INTERNETpermission. - No analytics or telemetry.
- No advertising.
- No account system.
- No Firebase or Google Play services dependency.
- No remote configuration.
- App and user diagnostics stay on the device.
Harbor declares QUERY_ALL_PACKAGES because its local Work app catalog needs to enumerate installed applications. This permission does not grant access to another app's private data, Internet access, or arbitrary cross-user access.
For the security model and design boundaries, see Privacy, Threat model, and Architecture.
FAQ
Does Harbor require root?
No.
Does Harbor require Shizuku?
No. Shizuku is optional and only used for advanced functionality.
Does Harbor require Google Play services?
No.
Does Harbor access the Internet?
The core app does not declare the INTERNET permission.
Can Harbor send files from Work back to Personal?
No. Harbor currently provides Personal-to-Work file transfer only.
How do I let an app such as microG connect across Personal and Work?
On Android 11+, open Harbor inside the Work profile, open the app's action sheet, and enable its cross-profile access control. Harbor adds that package to Android's profile-owner eligibility allowlist without removing unrelated entries. Return to the app and complete Android's own connection-consent flow. Android 10 does not provide this public DPC API.
Can I switch directly between a GitHub APK and the F-Droid build?
For versions published through F-Droid's reproducible upstream-signed flow, the APKs use the same signing identity, so signature compatibility permits normal in-place updates between those sources subject to Android's version rules. A release that F-Droid cannot reproduce is not published there.
For developers
Requirements
- JDK 17
- Android SDK Platform 36
- Android Build Tools 36.0.0
Build and verify
./gradlew testDebugUnitTest lintDebug assembleRelease
./gradlew generateSbom
Debug builds use com.monstera.harbor.debug. Production identity is com.monstera.harbor, with DPC receiver com.monstera.harbor.admin.HarborDeviceAdminReceiver.
Project structure
app/ Compose UI, DPC receiver, manifests
core/policy/ Public DevicePolicyManager facade
core/data/ Local app catalog and preferences
core/topology/ Users, profiles, ownership, capabilities
privileged/shizuku/ Isolated Shizuku backend
feature/advanced/ Shizuku and multiple-user UI
fastlane/metadata/ F-Droid listing metadata, changelogs, and images
docs/ Architecture, privacy, threat model, release guidance
Before contributing, read Architecture, Threat model, Compatibility, Dependencies, and Releasing.
License
Apache License 2.0.
Harbor is behaviorally inspired by Island, but it is a clean implementation with its own application identity and public-API-first architecture.
How Shizuku is used
Can clone apps into the work profile, manage Android users and switch users via Shizuku's `privileged shell commands`.
This is an AI-assisted analysis of Shizuku-related usages in the app's public source code. It is best effort, so it may not catch every single usage.
How this app uses Shizuku
Harbor uses Shizuku to run a small set of fixed system commands for work profile cloning and multi user workspaces.
- Clone apps to work profile: the user can copy a selected app into the work profile without copying its data using the
cmd package install-existingshell command through Shizuku. - Browse parent packages: the user can list apps installed in the parent user to pick what to clone using the
pm list packagesshell command through Shizuku. - Check work profile setup: the user can resolve the parent user, work profile and current user using the
am get-current-userandcmd user listshell commands through Shizuku. - List Android users: the user can see switchable full Android users using the
cmd user listshell command through Shizuku. - Create full user: a name typed in settings is used to create a new full Android user with the
pm create-usershell command through Shizuku. - Switch Android user: the user can request a switch to another full user with the
am switch-usershell command through Shizuku. - Install Harbor elsewhere: the user can make Harbor available in another full user with the
cmd package install-existingshell command through Shizuku.
Android APIs or commands used
/system/bin/cmd user listcmd package install-existing/system/bin/pm list packages/system/bin/pm get-max-users/system/bin/pm create-user/system/bin/am get-current-user/system/bin/am switch-userandroid.system.Os.getuid
Notable details
Advanced cloning and multi user tools need Shizuku, while core Harbor features remain available without it.
Changelog
What's new for version 0.2.0-alpha06
Harbor 0.2.0-alpha06 improves the Personal and Work privacy dashboard, adds safer Work-profile setup checks, and provides explicit per-app cross-profile access controls on supported Android versions.
Permissions
3 permissions requested
Sources
2 sources
Sources
2 sources