Made with <3 by DMP
> ACCESS GRANTED. JACK IN. SIDELOAD. UPLOAD. REPEAT.
[ STATUS ] ONLINE
[ TARGET ] META QUEST // ALL MODELS
[ STACK ] ELECTRON · REACT · TYPESCRIPT
I REMOVED DISCUSSIONS SINCE PEOPLE WERE ONLY USING IT AS A WAY TO AVOID ADDING LOGS TO AN ISSUE IT SEEMS, EVEN IF THAT WAS NOT THE INTENTION, IN ACTUALITY THAT WAS THE RESULT
VR CyberDeck is a cross-platform desktop deck for managing, sideloading, and uploading content to Meta Quest devices. It plugs into a community-run game library, runs the whole download → install → metadata → upload pipeline for you, and wraps the whole thing in a neon terminal aesthetic that doesn't feel like a 2014 sideloader.
VR CyberDeck started as a fork of ApprenticeVR by jimzrt. The core engine — ADB control, the download/upload pipeline, rclone integration, library connection — is theirs. Everything below the surface is a heavy rewrite of the experience:
| ApprenticeVR | VR CyberDeck | |
|---|---|---|
| Theme | Stock Fluent UI | Fully optional cyberpunk / neon-terminal rebrand |
| Onboarding | Hardcoded (original) /Configure server before use (forks) | Bundled server defaults — works on first launch |
| Intro | None | UNAUTHORIZED → AUTHORIZED glitch boot |
| Identity | None | Matrix-style random g33ky_u$3rn4m3$ per session |
| Console | None | In-header Hacker Console + ADB Shell with quick-command shortcuts and user macros |
| Live HUD | None | Header // TRANSFER_BUS strip with rotating progress, speed, ETA |
| Library view | Table only | Table and card view, sort presets, table stretches edge-to-edge |
| Trailers | Loads full youtube.com page | Locked-down nocookie embed — no ads, no suggestions, no subscribe |
| Downloads | Sequential | Up to 5 concurrent, with NEW / UPDATED badges |
| Uploads | Headset-only | Headset or local PC files (folders + ZIPs) |
| Quit safety | None | Confirmation prompt when transfers are in flight |
| Settings | Flat panel | Collapsible sections, accent color, font picker, tab memory |
| A11y | Limited | Full colorblind theming, font picker, font scale to 200%, 900x640 min size |
| Sound | None | Optional drop-in click / type / matrix sound effects |
| Updates | Manual | In-app auto-updater on every platform |
[ LIBRARY ]
- Bundled server defaults — no JSON, no rclone, no setup required
- Card view + table view, persistent sort, size presets, 18+ filter
- Table view stretches to fill the window so wide screens aren't wasted
- Built-in mirror management with public mirror fallback
NEW/UPDATEDbadges driven off reallastUpdatedtimestamps
// NOTE: NEW = added to the library in the last 30 days. UPDATED = existing game updated in the last 7 days. Both badges can appear on the same title simultaneously.
[ TRANSFERS ]
- Up to 5 parallel downloads with live progress
- Live
// TRANSFER_BUSstrip in the header — rotates through active downloads/uploads with name, stage, %, speed, and ETA - Unified Transfers drawer (downloads + uploads in one place) with stage-aware labels (
Installing APK...,Copying OBB...) - Scan existing downloads folder and reconcile against the library
- Clear-completed, retry, and per-item delete actions
- Close the window mid-transfer? Cyberdeck warns you with
[ TRANSFERS IN PROGRESS ]before letting you bail (works for both X and Cmd+Q on macOS)
[ UPLOADS ]
- Auto-detect games on your headset that are missing or newer than the library
- Local PC upload — point at a folder or pre-made ZIP, no headset required
- Full pipeline: stage → ADB pull APK → grab OBBs → metadata → 7z → rclone
- Optional
CRACKEDtagging on uploads
[ DEVICE / ADB ]
- Auto-connect Quest on launch
- ADB Shell dialog with built-in quick-command shortcuts:
PERFORMANCE— pin CPU/GPU level, swap refresh rate (72/90/120Hz), reset textureUPDATES— block / unblock the OS updater and Meta StoreSYSTEM— reboot variants, battery, storage, wifi, IP, proximity togglePACKAGES— list 3rd-party / all / current focused appWIRELESS—tcpip 5555,adb devices
- Custom user macros — define your own labelled shortcut for any command you spam (right-click to edit/delete, persisted across sessions)
- Disable-sideloading toggle for safety
- WiFi bookmarks for wireless ADB
[ TRAILERS ]
- Locked-down
youtube-nocookie.com/embed/player — no ads, no suggested videos, no subscribe button, no comments, no end-screen "Watch next" grid - Autoplays as soon as you open the trailer drawer
[ INTERFACE ]
- Glitch boot intro, neon Hacker Console, themed dialogs top to bottom
- Compact laptop-friendly header — drops down to a 900x640 min window
- Dark mode done right (no half-themed popups)
- Accent color picker, tab memory
- Font picker — swap Courier New for Console / Terminal / System Mono if the default is hard to read
- Optional sound effects — drop
click.wav,type.wav, ormatrix.wavinto your user-datasounds/folder (orresources/sounds/for bundled), and the UI plays them on button clicks, the boot intro typing, and the ADB shell matrix load. Toggle + volume in Settings, with a per-file "✓ READY / — missing" status readout. - Colorblind mode now covers the whole UI — version subtitles, filter counters, Transfers button, battery pill, breach animation all swap palette
- Font scale up to 200%
- One-click log upload from Settings → Log Upload
| File | Platform |
|---|---|
vr-cyberdeck-x.x.x-x64.dmg |
macOS x64 |
vr-cyberdeck-x.x.x-arm64.dmg |
macOS arm64 |
vr-cyberdeck-x.x.x-setup-x64.exe |
Windows — Installer |
vr-cyberdeck-x.x.x-portable-x64.exe |
Windows — Portable |
vr-cyberdeck-x.x.x-x86_64.AppImage |
Linux x64 |
vr-cyberdeck-x.x.x-arm64.AppImage |
Linux ARM64 |
vr-cyberdeck-x.x.x-amd64.deb |
Debian/Ubuntu x64 |
vr-cyberdeck-x.x.x-arm64.deb |
Debian/Ubuntu ARM64 |
Always grab the latest release. If it's already installed, just update in-app.
macOS — "App is damaged":
xattr -c /Applications/VR\ CyberDeck.app
Linux AppImage:
chmod +x vr-cyberdeck-x.x.x-x86_64.AppImage
./vr-cyberdeck-x.x.x-x86_64.AppImage
- Install the build for your OS
- Plug in your Quest via USB (data-capable cable)
- Allow USB Debugging on the headset
- Browse the library and hit download
That's it. The bundled server config means there's nothing to configure on first run.
Want to point at a custom server, swap in your own rclone config, or upload from PC? See Settings — every advanced flow lives there.
Power user? Open the ADB Shell from the sidebar — the shortcut panel above the terminal covers most Quest tweaks in one click, and you can save your own commands as
MY MACROSpills.
Found a bug? Got an idea? Want to swap notes with other CyberDeck users?
- 🐛 Open an issue for crashes, broken downloads, ADB weirdness, or anything that looks wrong. Include a log file from Settings → Log Upload and I can usually figure it out fast.
- 💬 Start or join a Discussion for feature ideas, questions, "is this normal?", custom shortcut macros worth sharing, sound-effect recommendations, or anything that isn't strictly a bug.
I REMOVED DISCUSSIONS SINCE PEOPLE WERE ONLY USING IT AS A WAY TO AVOID ADDING LOGS TO AN ISSUE IT SEEMS, EVEN IF THAT WAS NOT THE INTENTION, IN ACTUALITY THAT WAS THE RESULT
If you've got a sound clip you think would suit the UI (terminal click, mechanical keyboard tap, matrix-style hum), open an issue — happy to bundle community favourites in a later build.
npm install --legacy-peer-deps
| Platform | Command |
|---|---|
| Windows | npx electron-vite build && npx electron-builder --win --x64 |
| macOS | npx electron-vite build && npx electron-builder --mac --x64 |
| Linux | npx electron-vite build && npx electron-builder --linux --x64 |
Built on top of ApprenticeVR by jimzrt. Without that foundation this project doesn't exist.
GNU Affero GPL v3
You’re already here. You’ve already scrolled.
Just hit the ⭐ and we both win.
⭐ Star this repo please
