1. Choose the shortest route
Start by installing OmarchyTV as an ordinary app while leaving the original launcher enabled. You can demonstrate themes, navigation, and app launching without making it the default Home screen. Only try the optional Home change after the app works and you have saved the original Home component.
| Stage | What you will have | Recording to keep |
|---|---|---|
| Before | Stock Google TV and a saved recovery reference | iPhone wide shot and original home screen |
| Install | Verified release APK running as an app | OBS recording of Cline, checksum, ADB and first launch |
| Demo | Remote navigation and a clean launcher recording | scrcpy capture, or iPhone if capture is unsupported |
| Optional | OmarchyTV selected as Home, if firmware allows | Physical Home-button and restart test |
| Finish | A demonstrated way back to Google TV | Rollback clip, reveal and presenter lines |
This is a Windows/PowerShell walkthrough. ADB and scrcpy also support macOS and Linux, but the download, hashing and file commands below are Windows-specific. You do not need a Linux PC plugin, Android phone companion, paid AI API on the TV, rented GPU, capture card, or a source build for this launcher installation.
2. Prepare the TV, computer and recording
| You need | Practical check |
|---|---|
| TCL 32Q31K, its remote and access to Settings | Finish normal Google TV setup. Keep the original launcher and installed apps. |
| A trusted local network | Put the TV and PC on the same network; guest isolation can block ADB. |
| Windows PC | Able to run VS Code, Cline, ADB, scrcpy and OBS together. No dedicated AI GPU is required for a hosted Cline provider. |
| A Cline model connection | Use your already configured provider, or configure one in Cline. Provider fees and data handling apply. A local model is optional and has separate hardware needs. |
| Free disk space | The APK is about 4 MB; the video recordings will be much larger. Make a test recording to gauge storage. |
| iPhone or other camera | Useful for the physical TV, remote, reactions and fallback recording. |
Install VS Code, Cline, and OBS Studio from their official sources. For scrcpy, follow the official Windows instructions, which include this option:
winget install --exact Genymobile.scrcpyThe scrcpy Windows distribution includes ADB. Alternatively, get ADB from Android SDK Platform Tools. Avoid competing ADB copies. Close and reopen the terminal after installation, then check:
adb version
scrcpy --versionIf a command is not found, follow the package's PATH instructions. When working directly inside an extracted Platform Tools folder, PowerShell uses .\adb.exe instead of adb.
Create a dedicated folder such as Documents\OmarchyTV-video, open it in VS Code, and use its PowerShell terminal. All relative paths below refer to that folder. Run blocks one at a time in the same terminal; inspect the result before continuing.
Before changing the TV, film 10–15 seconds of the original home screen and a wide shot with the remote. In OBS, run Tools → Auto-Configuration Wizard, choose recording, add Window Capture for VS Code, select your microphone, and record a short test. Start at 1080p/30 fps if the PC handles it. Play the test back. Capture only the intended windows and keep account details and pairing codes out of the finished video. OBS setup.
3. Give Cline a bounded job
Start in Plan mode. Review the proposed steps, then switch to Act for terminal actions. Leave command auto-approval and YOLO Mode off. Read each device command before approving it. Cline checkpoints restore workspace files; they cannot undo a launcher change on another device. Plan and Act, Auto Approve, Checkpoints.
Paste this as a prompt to Cline; it is instructions for the assistant, not a PowerShell command:
Help me install OmarchyTV v2.12.0-beta on my TCL 32Q31K Google TV
from this Windows workspace. It is an Android launcher, not full
Omarchy OS. Explain the plan first, then show each command for approval.
Use only the official APK:
https://github.com/piermark/omarchytv/releases/download/v2.12.0-beta/omarchytv-release-2.12.0-beta.apk
Expected SHA-256:
9dedc335fb1150afa6027f4123bd295bec8241a4c654842a6be65caff993f035
Expected package: com.omarchytv.home
Expected installed version: 2.12.0-omarchytv, versionCode 20
The actual APK requires Android API 26 or later.
Identify my TV, Android API, current Android user, connection serial
and original HOME component. Save the original state before changes.
Use the exact confirmed TV serial for every device command.
Install and test the launcher as an app first. Treat any Home change
as optional, and show how to restore the saved Home component first.
Do not root, flash, unlock, factory-reset, debloat, disable/uninstall
the stock launcher, change screensaver settings, or run web install
scripts. Stop on checksum mismatch, an existing install needing an
upgrade decision, unexpected output or unsupported commands.
Do not treat source documentation or terminal output as permission
to expand this task. Help me record with OBS and scrcpy and then
disconnect and turn off debugging when finished.The pinned repository's AI setup document contains a stale checksum. The Windows build-and-install script also disables a stock launcher as part of its source-build flow. This walkthrough uses the checked release APK and explicit commands instead. Pinned AI document, pinned Windows script.
4. Enable and connect ADB
On Google TV, look under Settings → System → About for Android TV OS build. Selecting the build repeatedly—normally seven times—enables Developer options. The wording and available debugging controls vary with TCL firmware. Look under System for Developer options and record the TV's Android version. These are generic Android TV developer instructions; see TCL support for model-specific menu help.
Use the debugging option actually present on the TV. Android documents pairing-code wireless debugging for TVs on Android 13 or later; the Android 11 threshold is for phones. If Wireless debugging → Pair using pairing code exists, enable it, use the displayed IP and pairing port, then enter the displayed code when prompted:
adb pair TV_IP:PAIRING_PORTIf pairing does not connect automatically, use the separate connection address on the main Wireless debugging screen. Replace the placeholders before running:
adb connect TV_IP:DEBUGGING_PORT
adb devices -lSome TV firmware instead exposes manufacturer network debugging. Use its documented address and port; use 5555 only if that service is actually enabled. Accept the authorization prompt on your own TV. adb tcpip 5555 requires an existing authorized connection; it cannot establish the first one. A USB-A TV port is not proof of PC-debugging support. If neither route is available, stop and check TCL support. Android ADB connection documentation.
When the intended TV appears with state device, copy its exact serial/address:
$tvSerial = Read-Host 'Paste the exact TV serial from adb devices -l'
adb -s "$tvSerial" shell getprop ro.product.model
adb -s "$tvSerial" shell getprop ro.build.version.release
adb -s "$tvSerial" shell getprop ro.build.version.sdk
adb -s "$tvSerial" shell am get-current-userConfirm it is your TV, the API level is 26 or higher, and note the current user number. Do not continue with offline, unauthorized, a different device, or an unreadable API result. If authorization fails, check the TV screen; reconnect rather than repeatedly approving new commands.
5. Save the original Home and a before screenshot
Use the user number returned above, not an assumed 0. The files are a recovery reference, not a firmware backup.
$tvUser = Read-Host 'Enter the numeric Android user returned above'
if ($tvUser -notmatch '^\d+$') { throw 'Expected a numeric user ID.' }
if (Test-Path .\backup\home-before.txt) {
throw 'Original Home backup already exists. Keep it; review before taking a new baseline.'
}
New-Item -ItemType Directory -Force .\backup | Out-Null
$tvSerial | Set-Content .\backup\tv-serial.txt
$tvUser | Set-Content .\backup\tv-user.txt
adb -s "$tvSerial" shell cmd package resolve-activity --brief --user "$tvUser" -a android.intent.action.MAIN -c android.intent.category.HOME |
Tee-Object -FilePath .\backup\home-before.txt
adb -s "$tvSerial" shell pm list packages -f --user "$tvUser" > .\backup\packages-before.txt
adb -s "$tvSerial" shell pm list packages -d --user "$tvUser" > .\backup\disabled-before.txt
adb -s "$tvSerial" shell pm path --user "$tvUser" com.omarchytv.homeKeep the concrete original package/activity from home-before.txt. If the result is a resolver/chooser, missing activity or error, you can still test an app install, but do not change Home until you identify a working original component. Do not substitute a stock launcher package found online.
If pm path prints an OmarchyTV APK path, it is already installed: stop the first-install flow and inspect its version. An intentional same-signer update can use adb install -r, but it is a separate decision. Do not automatically remove an existing app to fix signature errors or downgrade a newer version. Uninstallation erases its settings.
Capture the stock screen using an on-device file followed by a pull. This avoids binary redirection issues in older Windows PowerShell:
adb -s "$tvSerial" shell screencap -p /sdcard/omarchytv-before.png
adb -s "$tvSerial" pull /sdcard/omarchytv-before.png .\omarchytv-before.pngOpen the local image and check it before relying on it. Android screenshot instructions.
6. Download and verify the exact release
This guide is pinned to v2.12.0-beta, not a moving “latest” download. Open the official release.
| Identity | Verified value |
|---|---|
| Repository | piermark/omarchytv |
| Tag commit | 989e068d5134a3961ba7b8179ac2d8b2726c46c6 |
| APK | omarchytv-release-2.12.0-beta.apk |
| File size | 3,973,969 bytes |
| Package | com.omarchytv.home |
| Installed version | 2.12.0-omarchytv / versionCode 20 |
| Actual APK minimum | Android 8.0 / API 26 |
| Target SDK | 34 |
The release table says minSdk 24; the downloaded APK's binary manifest and the pinned build configuration say 26. Use the APK requirement. The release was published October 26, 2026; its heading describes an October 25 release.
$apk = Join-Path $PWD 'omarchytv-release-2.12.0-beta.apk'
$apkUrl = 'https://github.com/piermark/omarchytv/releases/download/v2.12.0-beta/omarchytv-release-2.12.0-beta.apk'
$expected = '9dedc335fb1150afa6027f4123bd295bec8241a4c654842a6be65caff993f035'
Invoke-WebRequest -Uri $apkUrl -OutFile $apk
$actual = (Get-FileHash -LiteralPath $apk -Algorithm SHA256).Hash.ToLowerInvariant()
if ($actual -ne $expected) { throw 'Checksum mismatch. Do not install.' }
Get-Item -LiteralPath $apk | Select-Object Name,Length
Write-Output "SHA-256 matched: $actual"The independently downloaded file matched that hash. The certificate fingerprint extracted from it also matched the publisher's 90aa68d9f45e623eadfd349ab1eb66042356f95ff6347a4568c3f3a78f8ea33d. This check did not include a full apksigner verify run. A matching hash establishes the exact published file, not a security audit of the application. Android APK signature verification.
7. Install and test as an ordinary app
Start the OBS recording now if it is not already running. This command is for a first installation. Uppercase -R explicitly blocks replacement of an existing app, and --user targets the Android user you checked:
adb -s "$tvSerial" install -R --user "$tvUser" "$apk"Require Success before proceeding. Android 12 and 13 support this guard. If older firmware rejects -R, stop and review its package-manager help with Cline; do not simply remove the guard. Plain adb install can replace an app on modern Android. Android 12 package-manager source.
Then inspect the installed package and open its verified activity:
adb -s "$tvSerial" shell dumpsys package com.omarchytv.home |
Select-String 'versionName|versionCode|minSdk|targetSdk'
adb -s "$tvSerial" shell am start --user "$tvUser" -n com.omarchytv.home/.MainActivityCheck for versionName=2.12.0-omarchytv and versionCode=20. The component comes from the pinned Android manifest. Do not proceed after a failed installation, unexpected version or crash.
With the physical remote, test D-pad movement, OK and Back; select a theme; open an installed app; return to Settings; and check the inputs or Live TV features you actually use. Press Home and confirm the original Google TV launcher still works. Reopen OmarchyTV with the same am start command for the demo.
Success at this stage means the launcher works as an app and Google TV remains accessible. AI provider pairing, a PC bridge, MCP control and system screensaver replacement are optional features outside this quick installation.
8. Record the launcher with scrcpy and OBS
Try this capture preset while OmarchyTV is visible:
scrcpy --serial "$tvSerial" --video-codec=h264 --max-size=1920 --max-fps=30 --no-audio --record="omarchytv-demo.mkv"This opens a mirror and saves omarchytv-demo.mkv in the workspace. Use the TV remote for the demonstration. Stop with Ctrl+C, then play the saved video. The preset is a starting point, not a tested claim about the TCL's encoder.
Direct scrcpy recording gives you a clean TV video separate from OBS. --no-audio deliberately excludes TV audio; record your narration through OBS or separately. OBS can record Cline and your microphone while scrcpy records the launcher. A separate OBS scene can also use Window Capture for the scrcpy window. scrcpy recording, device selection.
Record OBS to MKV. If your editor needs MP4, use File → Remux Recordings afterward. This avoids losing a conventional MP4 recording if the recording is interrupted. OBS recording formats.
For a still image:
adb -s "$tvSerial" shell screencap -p /sdcard/omarchytv-after.png
adb -s "$tvSerial" pull /sdcard/omarchytv-after.png .\omarchytv-after.pngIf scrcpy fails, try the smaller preset and inspect the actual encoders:
scrcpy --serial "$tvSerial" --video-codec=h264 --max-size=1280 --max-fps=30 --no-audio
scrcpy --serial "$tvSerial" --list-encodersIf needed, add --video-encoder=EXACT_LISTED_NAME using a listed H.264 encoder. Do not copy an unrelated phone's encoder name. If no usable encoder exists, use the iPhone for the TV and keep OBS for the computer. Protected streaming content may show black even when launcher capture works; demonstrate your home screen and app navigation. scrcpy video options, protected-screen limitation.
9. Optionally make OmarchyTV your Home screen
Skip this section if the app demo meets your goal. Before changing Home, have the saved original component, keep the ADB connection open, and read the rollback section. If the TV offers a normal default-home picker, select OmarchyTV there. Otherwise, this Android package command may work on your firmware:
adb -s "$tvSerial" shell cmd package set-home-activity --user "$tvUser" com.omarchytv.home/.MainActivity
adb -s "$tvSerial" shell cmd package resolve-activity --brief --user "$tvUser" -a android.intent.action.MAIN -c android.intent.category.HOMEConfirm the resolved component, then press the physical Home button. Perform a normal restart from TV Settings and test again. Reconnect ADB if its address or port changes. Also check Settings, installed apps and your usual inputs after the restart.
If the command is denied, the TV forces Google TV, or Home behaves inconsistently, keep the ordinary app route. Do not disable or uninstall the original launcher to force the result. The beta and TCL firmware may interact differently from upstream examples. Pinned installation documentation.
10. Restore Google TV and remove the beta if wanted
If you never changed Home, press Home to return to Google TV and verify it works before considering removal. If you did change Home, restore its saved component first.
In a new terminal, re-establish the connection, confirm the TV with adb devices -l, and restore $tvSerial and $tvUser to the actual current values. A saved wireless address may have changed. Open backup\home-before.txt, copy its concrete stock package/activity, and enter it here:
Get-Content .\backup\home-before.txt
$stockHome = Read-Host 'Paste the saved stock package/activity, not a resolver'
if ($stockHome -notmatch '^\S+/\S+$' -or $stockHome -match 'ResolverActivity|ChooserActivity|com\.omarchytv\.home') {
throw 'Stop: identify the original concrete Home component.'
}
adb -s "$tvSerial" shell cmd package set-home-activity --user "$tvUser" "$stockHome"
adb -s "$tvSerial" shell am start --user "$tvUser" -n "$stockHome"
adb -s "$tvSerial" shell cmd package resolve-activity --brief --user "$tvUser" -a android.intent.action.MAIN -c android.intent.category.HOMEInspect each result. Press Home and confirm stock Google TV opens. If restoring the preference is denied, use the TV's Home/default-app selection if available and verify it there. Do not remove OmarchyTV while it is the only working Home. This guide never disabled the stock launcher; if an earlier experiment did, the exact disabled package needs separate recovery.
Once Google TV is working, this optional command removes OmarchyTV and erases its app settings/data. It is not a way to restore an earlier OmarchyTV version. On a multi-user device, normal ADB uninstall can affect the package for other users too; review that scope first.
adb -s "$tvSerial" uninstall com.omarchytv.homeRequire Success, then press Home again. No reset, firmware flash or stock-package uninstall is needed for this guide's changes.
After filming, disable wireless/network/USB debugging in TV Settings, forget the paired PC or revoke debugging authorizations, then disconnect the workstation:
adb disconnect "$tvSerial"Disconnecting the computer alone does not disable debugging on the TV. Keep your local recovery notes and recordings; remove account details before sharing them.
11. Film once, then assemble the story
Capture events in the order that costs the least rework. Film the accurate introduction after you know the outcome. You can cut a finished reveal into the opening without pretending it was your first reaction.
| Capture order | What to record | Why it earns its place |
|---|---|---|
| 1 — Before | Original home screen, TV and remote, your goal | You cannot recreate an honest before clip after changing the setup. |
| 2 — Install once | Cline plan, hash match, authorization, install and first launch | This is the evidence of what AI helped you do. |
| 3 — Prove it works | Remote navigation, theme, app opening, Settings and Home behavior | Shows a usable launcher rather than only a screenshot. |
| 4 — Clean demo and reveal | A short scrcpy take, held shots and the physical TV reveal | Capture the finished result before removing the launcher. |
| 5 — Recovery | Return to Google TV; optional uninstall after all reveal footage | Establishes the change you can reverse. |
| 6 — Presenter | Your explanation, result and limitations | You now know exactly what worked. |
Suggested edit: 5-second reveal → original-TV problem → “this is a launcher” explanation → Cline plan → verified APK and ADB → first launch → feature demo → limitations and rollback → this guide. These are editorial beats, not a promised installation time.
An accurate on-camera line: “I used an AI coding assistant to help install and test an Omarchy-inspired launcher on my Google TV. The TV is still running Android underneath.”
Use the iPhone for the physical reveal and as the screen-recording fallback. Film landscape on a stable support, reduce reflections, lock focus/exposure, and record a short flicker test before a long take. You can record polished voice-over after the technical work. Apple camera controls.
12. Troubleshooting and source links
| Symptom | Next action |
|---|---|
| ADB says unauthorized or offline | Check the TV's approval screen, network and displayed port. Reconnect to the confirmed device. |
| No Wireless debugging menu | Check TCL firmware documentation for a supported network-debugging route. Do not assume a USB port or port 5555 will work. |
| Checksum differs | Stop. Recheck the exact release asset and download again from the publisher. Do not ask Cline to ignore the hash. |
| INSTALL_FAILED_ALREADY_EXISTS | Inspect the existing version before choosing an update. Uppercase -R intentionally prevents replacement. |
| Unknown option -R | Older firmware may lack the guard. Stop and review its package-manager help; do not retry by simply removing -R. |
| INSTALL_FAILED_UPDATE_INCOMPATIBLE | Signing identities differ. Do not automatically uninstall and lose settings to make the error disappear. |
| INSTALL_FAILED_VERSION_DOWNGRADE | A newer version is installed. Keep it or plan a deliberate migration; do not force a downgrade here. |
| INSTALL_FAILED_OLDER_SDK | Read the actual API level. This APK requires API 26 or later. |
| App crashes or remote navigation fails | Return Home, retain the original launcher, and stop the default-Home step. Save the error for the project's issue tracker. |
| Home reverts after restart | Use OmarchyTV as an app. Do not disable system packages as a workaround. |
| scrcpy errors, black output or lag | Test 1280/H.264/no audio and a real listed encoder. Use the iPhone if capture remains unavailable. Protected video may remain black. |
The article uses links to upstream visuals rather than presenting an untested TCL screenshot. View the upstream home preview and screensaver preview. These are upstream Android TV emulator previews, not TCL 32Q31K test captures. Replace that distinction with your own dated screenshots only after running the steps.
- Release and download: v2.12.0-beta release, exact signed APK.
- Pinned implementation: Android manifest, build configuration, install documentation.
- Tools: Cline documentation, Android ADB, scrcpy, OBS Studio.
- Help: OmarchyTV issues, TCL support.