← all projects

quest-tools

Take back control of your Meta Quest 3 / 3S – terminal UI to debloat, kill telemetry, tune performance and back up save games & settings over ADB. Every change can be undone.

Python★ 0 stars0 forksMITupdated 25 minutes ago

v1.1.0 released 2 hours ago

Quest Tools logo

Quest Tools

Take back control of your Meta Quest 3 / 3S.
Debloat, kill telemetry, tune performance, back up save games and settings —
from a fast, good-looking terminal UI. Every change can be undone.

Latest release Meta Quest 3 | 3S Python 3.10+ No dependencies Platforms MIT license

Quest Tools main menu


✨ Highlights

  • Menu-driven terminal UI: arrow keys, hotkeys, type-to-filter, checklists. No commands to remember.
  • Live status bar showing headset and controller battery, temperature, refresh rate, connection, disabled packages and active profile, plus warnings such as TRACKING OFF.
  • Undo for everything. Every package toggle, property and setting change is journaled with its previous value, and one key reverts a whole operation.
  • Debloat that knows what it's doing. A curated knowledge base marks packages as recommended, optional, caution, keep or protected. It never disables the services that break your home panels or purchased apps.
  • Firmware-update aware. Horizon OS updates silently re-enable packages. Quest Tools notices and restores your profile with one action.
  • Backups that matter. Settings snapshots with diff and selective restore, and app backups that include your save games (/sdcard/Android/data and obb).
  • Performance tuning. CPU/GPU levels, fixed foveated rendering, eye-buffer resolution, refresh rate, presets and a live monitor.
  • Zero dependencies. Pure Python standard library plus adb. Every function also works from the command line, including --json output.

🥽 Supported headsets

Quest Tools is made for the Meta Quest 3 and Meta Quest 3S. Both run the same Horizon OS, so every feature, profile and knowledge-base entry applies to both.

Headset Status
Meta Quest 3 ✅ supported, tested (Horizon OS v209/v210)
Meta Quest 3S ✅ supported (same OS and packages as the Quest 3)
Quest 2 / Quest Pro / other Android devices ⚠️ not supported: generic ADB features may work, but Quest-specific functions and the package knowledge base are not tailored to them

🚀 Quick start

Requirements

  • A Meta Quest 3 or 3S
  • Python 3.10+
  • Android platform tools (adb): download
  • Developer mode enabled on the Quest (via the Meta Horizon phone app), with USB debugging allowed when the headset asks

Get it

git clone https://github.com/Hemiize/quest-tools.git
cd quest-tools

…or download the ZIP from the latest release.

Run it

Platform
Windows double-click Quest Tools.cmd. It opens its own terminal window
any python -m questtools in the project folder

Quest Tools finds adb on its own: the adb_path setting, then QUESTTOOLS_ADB, then PATH, then C:\platform-tools, then the Android SDK.

🎮 Using the UI

Key Action
↑ ↓ · PgUp PgDn · Home End move
Enter open / run
digit or letter in front of an entry jump straight to it
Esc / Backspace back one level
just type (in lists) filter, e.g. oculus
Space · a toggle · toggle all (checklists)
Tab package list: switch between known and all packages
F5 refresh the status bar
Ctrl+C stop a live view (monitor, logcat)
q quit

Picking packages to disable

Menus

Menu What's inside
1 Overview status · health check · live monitor · device info · connected devices
2 Privacy & Debloat telemetry report · check / apply profile (with dry run) · disable & enable packages from a checklist · full package analysis · explain a package · offline mode · Private DNS (AdGuard, Mullvad, Quad9, …) · save your own profile
3 Performance current values · presets (battery → max) · CPU/GPU level · foveation (dynamic/fixed) · eye-buffer resolution · refresh rate · reset · process list · live monitor
4 Headset FPS overlay · Guardian · proximity sensor · Phone SDK · SDK throttling · restart VR shell · reboot (normal/bootloader/recovery) · volume · key events · type text · open URL
5 Apps apps sorted by size → details & permissions · launch · stop · backup with save game · export APK · per-app logcat · grant/revoke permissions · clear data · uninstall · install APKs (drag & drop)
6 Backups & Settings settings snapshot · diff · selective/exact restore · app backups with save games · restore · browse settings
7 Media screenshot (raw / wake headset / system) · screen recording · filtered, colourised logcat
8 Files arrow-key file browser · download · delete · upload · disk usage
9 Connection one-step Wi-Fi ADB setup · connect by IP · disconnect · pairing · choose device
0 Tools adb shell · command library · change history · undo · run any command · configuration

🛡️ How it keeps you safe

  • Journal & undo. pm disable/enable, setprop, settings put/delete and system-app removals record the previous value in %APPDATA%\questtools\journal.jsonl (~/.config/questtools on Linux/macOS). Tools → Undo reverts any operation, even a full settings restore.
  • Knowledge base (questtools/kb.py). Tested facts win over name patterns. com.oculus.ocms, com.oculus.store and com.meta.credentialsmanager are marked keep: without them the home panels or your purchased apps disappear. Those are skipped unless you pass --force. Protected packages such as com.oculus.updater are never attempted.
  • Dry runs everywhere. Profiles, restores and performance changes can show what would happen before anything is touched.
  • Connection-safe restores. adb_enabled, adb_wifi_enabled, development_settings_enabled and similar keys are never restored, so you can't lock yourself out.

Built-in profiles

Profile Disables
telemetry telemetry, crash/bug-report uploaders, metrics, ad ID, promotions, federated learning, cloud backup
privacy everything in telemetry plus unused Meta convenience services (assistant, social, casting, remote desktop, …)

⌨️ Command line

Every menu action is also a command, which makes it handy for scripts and automation:

python -m questtools status
python -m questtools doctor
python -m questtools debloat apply privacy --dry-run
python -m questtools settings backup -m "before experimenting"
python -m questtools settings restore --only secure,packages
python -m questtools perf preset performance
python -m questtools --json status          # machine-readable
python -m questtools undo

Global options: -s SERIAL, --json, -y. Changing commands accept -n/--dry-run. See python -m questtools --help and python -m questtools <area> --help.

Backups, screenshots and videos go to ~/Quest/ (override with QUESTTOOLS_OUT). Configuration and journal go to %APPDATA%\questtools (override with QUESTTOOLS_HOME).

⚠️ Limitations

  • The Quest can't be rooted. com.oculus.updater and com.oculus.q4bservice cannot be disabled. To fully cut off Meta, use offline mode or a DNS filter on your router.
  • Performance overrides (debug.oculus.*) reset on reboot.
  • "Wake headset" screenshots can be black if the headset hasn't rendered a frame yet. They work best while you wear it.
  • Internal app data (/data/data) is not readable without root. Save games stored under /sdcard/Android/data are backed up.
  • Built for Quest 3 / 3S. Tested on a Quest 3 running Horizon OS v209/v210 under Windows. Newer firmware may rename or add packages, and Linux/macOS are less tested.
🗂️ Project layout
Quest Tools.cmd    double-click launcher (own window)
questtools/
  tui.py           interactive UI: header, menus, pickers, file browser
  term.py          keyboard input (arrows, Esc, …) and flicker-free drawing
  cli.py           command tree; no command → UI
  adb.py           find adb, pick device (USB before Wi-Fi), run/sh/batch
  ops.py           state-changing actions with journal + revert()
  store.py         configuration, journal, profiles, saved commands
  kb.py            knowledge base, classification, built-in profiles
  probe.py         full device status in a single adb call
  transfer.py      pull/push with progress (name, MB, %)
  ui.py            colours, tables, bars, prompts
  commands/        device, debloat, perf, quest, apps, settings, net, media, files, backup, tools
tools/
  tuidemo.py       replay the UI with scripted keys (tests, screenshots)
  termshot.py      renders the SVG screenshots in this README
  make_icon.py     builds docs/questtools.ico
  glyphcheck.py    ensures only glyphs the Windows console font (Consolas) can draw are used

⚖️ Disclaimer

Use at your own risk. Quest Tools changes system packages, properties and settings on your device through Android's developer interface (ADB). Although every change is journaled and designed to be reversible, things can go wrong: features may stop working, apps or purchases may temporarily disappear, data may be lost, or a device may need a factory reset.

  • This software is provided "as is", without warranty of any kind, as stated in the MIT License. The author (hemiize) is not liable for any damage to devices, loss of data, save games or purchases, account restrictions, or any other direct or indirect consequences of using it.
  • Enabling developer mode and modifying system components may affect your warranty and may be restricted by the terms of service of the device manufacturer. You are solely responsible for making sure your use is permitted.
  • Back up first. Use Backups & Settings to create a settings snapshot and back up your apps and save games before making changes.
  • Only use Quest Tools on devices you own or are authorised to manage.
  • The package knowledge base reflects observations on specific hardware and firmware. Package behaviour can change with any update.
  • Quest Tools is an independent project and is not affiliated with, endorsed or sponsored by Meta Platforms, Inc. "Meta", "Meta Quest", "Oculus" and "Horizon" are trademarks of Meta Platforms, Inc. "Android" is a trademark of Google LLC. All trademarks belong to their respective owners.

👤 Author & license

Created by hemiize · hemiize.xyz

Released under the MIT License – © 2026 hemiize. You may use, modify and redistribute Quest Tools, as long as the copyright notice naming hemiize is kept in all copies and derived works.