DeepSeek Harness Remote
DeepSeek Harness Remote 可将手机或另一台电脑与你运行 DeepSeek Harness 的电脑安全连接,随时随地继续你的工作,方便随时查看进度并继续工作。
Translation pending
Turn your Android phone or tablet into a personal dock, touchpad and clipboard for your Windows or Linux PC. Free, open source, and connected locally.
ProductivityJavaScript · KotlinGitHub @aliihsaadOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Remote app dock and control surface for a Windows or Linux (Hyprland) PC, driven from a phone over Wi-Fi or USB.
Taken from the repository README
Loading the full README.
Read the full README ↗WinDock at your desk — an AI-generated product illustration.
WinDock's Linux installer and download-tracking implementation was selected for the XERJ Corpus Hub, a searchable reference library for AI coding agents. Included with the author's permission under the MIT license, the listing credits Ali Saad and links to the selected contribution.
| Platform | Availability |
|---|---|
| Windows 10 / 11, x64 | Download the installer |
| Android 7.0+ | Download the APK |
| Linux (Hyprland), x86-64 | Arch/Omarchy and Debian/Ubuntu installer preview |
| iOS | Coming soon — native companion development & GitHub builds; no installable public release yet. |
WinDockSetup.exe. It includes the required
runtimes and adds WinDock to your Start menu and system tray.The Windows installer is currently unsigned and the Android APK is debug-signed. Windows may show a publisher warning. An APK signed with a different key can require uninstalling an earlier Android build before installing the new one. See the release notes and checksums.
The Android Switch PC picker discovers running WinDock hosts and keeps up to eight recently reached addresses. It is available on the connection screen and, with the updated host, in the dock drawer. See PC picker testing.
Updating: quit WinDock from the Windows tray and run the latest installer; your dock settings are kept. Reconnect the phone app to load the updated dock. Install the new Android APK for automatic low-RAM detection. It updates public 0.2.2/0.2.3 builds in place, preserving phone settings. Public APKs older than 0.2.2 use a different signing key and must be uninstalled first; that resets phone-only preferences, while your PC dock is preserved. Close and reopen the phone app, then pair using the new six-digit PIN. Windows users can clear a host-wide pairing pause with Allow pairing now in the tray menu. Starting with 0.2.1-preview.1, the Windows tray offers Check for updates and checks at startup. A newer release shows a notification and download menu item; installation remains manual. Older installations need one manual upgrade first.
For USB, connect a data-capable cable and enable USB tethering on Android. Select Connect by USB → Find USB PC, then enter the normal tray PIN. Choose Connect by Wi-Fi for wireless. Each mode remembers its own address; reopening the app without a USB link returns to Wi-Fi. No USB debugging is needed.
Set idle dimming and screen rest under This phone on the connection screen or Appearance → This phone · screen & sleep in the dock. Android’s screen timeout may add a delay before the display turns off.
Appearance → Performance mode offers Auto, On, and Off. On removes glass blur, animated paging, and heavy touch effects for older phones. Auto enables it when Android reports a low-RAM device or at most 2 GiB of total usable RAM; browsers and older companions can select On manually. Manual On/Off always wins over Auto, and Off restores your selected glass style.
The updated Android companion saves performance mode and appearance on the phone, per PC identity, so layout, labels and theme survive app/PC restarts and changes to the PC's address or port. Existing web preferences migrate on first connection. This requires the updated PC web UI too. Browsers and older companions keep using storage for the current PC address; older hosts without an identity also fall back to that address.
WinDock normally uses TCP port 8620. If that default is reserved by Windows or already in use, the host automatically binds an available port. Show connection info, Copy URL, and phone discovery use the actual address. Find your PC again on the phone after a port change; a manually entered address must include the new port. Browser preferences belong to each address, so they may need to be set again after a port change.
On Windows, Server port… in the tray menu lets you save Automatic or a custom port (1–65535). A change takes effect after quitting and reopening WinDock; if startup failed, saving retries immediately. A custom port never silently changes. If startup fails, the tray stays available so you can correct the setting.
Existing PORT environment settings continue to work until you save a tray
setting. The saved tray choice then takes precedence for the Windows app, including
Automatic. Command-line hosts can set PORT to choose a fixed port, or remove it
to restore automatic selection. If you use port-specific firewall or VPN rules,
allow the displayed TCP port or choose a fixed available port. UDP discovery
continues to use port 41234.
WinDock also runs on Linux, built for Hyprland. The same Android app connects to it, with the touchpad, phone keyboard and signatures.
Download the package for your x86-64 machine from the current release. The Node.js runtime and compiled input helper are included. Your package manager installs the desktop dependencies and configures touchpad permissions.
Omarchy / Arch Linux: open a terminal in your Downloads folder and run:
sudo pacman -U ./WinDock-linux-x64.pkg.tar.zst
Debian 12+ / Ubuntu 24.04+ with Hyprland:
sudo apt install ./WinDock-linux-amd64.deb
Open WinDock from your application menu, or run windock without sudo.
WinDock starts in the background, and its window shows the address and pairing PIN.
On Android, choose Connect by Wi-Fi → Find my PC, then enter that PIN.
You can close the window; the phone stays connected. To see the PIN again, open
WinDock again or run windock status. To stop WinDock, press S in its window
or run windock stop. It also stops when you log out.
No terminal commands to compile the app, Node.js installation or Rust SDK are needed.
This is a Hyprland preview, not GNOME/KDE support. It requires glibc 2.36+,
a terminal emulator and a systemd user session. Without a user session, WinDock
runs in its window as in earlier versions; windock --foreground does the same on
request. There is no tray icon, autostart or automatic updater yet.
For recording and brightness, install the optional wf-recorder, brightnessctl
and/or ddcutil packages. With notify-send (libnotify) installed, a desktop
notification also shows the PIN when WinDock starts in the background. If touchpad
access is unavailable immediately after installation, log out and back in (or
reboot) so your session picks up the udev rule.
To update, install the newer package with the same command. A WinDock running in
the background restarts with the update and gets a new PIN, so pair your phone
again. If a WinDock window from an older version is still open, close it, then
open WinDock again. Your dock configuration and captures are kept. To remove it, use
sudo pacman -R windock on Arch or sudo apt remove windock on Debian/Ubuntu;
this also stops a background WinDock.
Only the package files are removed; personal settings and captures remain.
Checksums are published as SHA256SUMS-linux.txt alongside the packages.
You need Node.js 20.11+, Rust to build the input helper, and these
tools: gtk-launch, grim, wl-copy, wtype, pactl, brightnessctl
(laptop panels) or ddcutil (external monitors), and wf-recorder or
gpu-screen-recorder for recordings. On Arch-based systems:
sudo pacman -S --needed nodejs npm rust gtk3 grim wl-clipboard wtype libpulse brightnessctl ddcutil wf-recorder
Then, in this repository:
npm ci
npm run build:linux
sudo install -m 644 native/linux/70-windock-uinput.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo modprobe uinput && sudo udevadm trigger --name-match=/dev/uinput
npm start
The udev rule lets your desktop session create the touchpad's virtual pointer
without joining the input group, which would let every program read your
keyboards. npm start prints the address and pairing PIN; connect the phone as
in step 3 above. If a firewall is active, allow TCP 8620 (the dock) and UDP
41234 (discovery) from your local network, for example with ufw:
sudo ufw allow from 192.168.1.0/24 to any port 8620 proto tcp
sudo ufw allow from 192.168.1.0/24 to any port 41234 proto udp
On Linux:
See the developer reference for how each feature works.
Pictures\WinDock, or silent MP4 recordings to Videos\WinDock. Recordings
fit within 1920×1080 at up to 15 fps and stop after 60 minutes. Stop from the
phone or Windows tray. Audio and cursor overlays are not included.Pinned apps and their order sync through the PC. Layout density, background, and glass preferences stay on each device. The Windows tray also opens your capture folders and offers optional startup with Windows during installation.
Swipe up and choose Touch & sign. The touchpad moves the PC cursor with one finger, taps for left-click, and uses two fingers for scrolling or right-click. The dark, edge-to-edge surface shows a soft glow under each finger. Back and Signature sit at the bottom left, click/drag controls in the middle, and Speed at the right. The controls stay visible; Speed opens a small slider above them. Spread two fingers to zoom in or pinch them together to zoom out in PC apps that support Ctrl + mouse wheel. Move the cursor over the image or document first. The Drag button holds the left button until you release it. Leaving the touchpad or losing the connection releases held buttons; Reconnect appears if the session pauses or disconnects.
While using the touchpad in the updated Android app, clicking a supported PC text field opens your phone's own keyboard, with emoji and its normal word composition. Words appear on the PC when the keyboard commits them (usually at a space or a suggestion). The keyboard button opens it manually for apps that don't expose text focus. Existing PC text is not copied to the phone. Browsers have a manual keyboard composer; automatic opening needs the updated Android APK.
Choose Sign beside the keyboard, or switch to Signature, and draw with a
finger or stylus. Insert into PC copies the image to the Windows clipboard and
requests a paste in the active app. The app must accept pasted images; plain text
fields cannot contain a signature image. Save to PC remains available.
Black or blue ink is exported as a transparent 1600×600 PNG in
Pictures\WinDock\Signatures. Open that folder from the Windows tray:
Open saved files → Signatures. Both saving and inserting keep a PNG here.
If an app cannot paste it, use that app's image insertion command with the saved
file. Undo and Clear stay on the phone.
These features are included in 0.2.0-preview.1. Update both the Windows host and Android app (version code 3). Direct drawing inside PC apps is deferred. The PNG is a handwritten signature image, not a certificate-based digital signature. Touchpad control follows Windows permissions and cannot operate secure prompts or applications running with higher privileges than WinDock.
The Windows companion serves the dock interface on your local network. The Android app discovers the PC and displays that interface in a landscape WebView. A Node.js host handles PIN pairing and live updates; a C# helper performs the Windows actions. You can also open the tray address in a browser. On Linux, the same host uses standard desktop tools and a small Rust helper for the touchpad, keyboard and signatures.
Your app actions and captures stay on your PC. WinDock is designed for a trusted
home or office network, not internet remote access. Traffic is plain HTTP, so
anyone who can watch your Wi-Fi can see what you type through the phone keyboard;
prefer USB tethering on shared networks. If you reach the host by a custom DNS
name, add it to WINDOCK_ALLOWED_HOSTS (comma separated); otherwise only IP
addresses, exact localhost and the PC's own name (plain or .local) are accepted.
Names may include a port or a trailing DNS dot; *.localhost is not implicitly trusted. Sessions reset when the PC
host restarts. The website's interactive demo uses sample apps and simulated
touchpad, typing, signature and capture actions; it never connects to your PC.
The Android source now accepts the PC's numeric Tailscale IPv4 address for manual connections. With both devices connected to Tailscale, enter the PC's VPN address in the app and pair normally; automatic discovery remains LAN-only. See the Android Tailscale setup for connection steps and firewall requirements.
0.2.6-preview.1 fixes Android appearance settings persistence, improves Performance mode Auto detection, and recovers Windows startup when the default server port is unavailable. Update both the PC host and Android companion. Android version code 9 preserves the existing signing certificate for in-place upgrades. See the version history for changes and upgrade notes.
The Windows installer, Android APK and Linux packages are built from this source. GitHub Actions checks Windows installation, Android builds and Linux package installs. Published Android APKs use the local preview signing key; disposable CI debug APKs may use a different key.
The initial iPhone companion connects by PC address and reuses the same dock and PIN pairing. A separate macOS build workflow builds it and runs simulator tests. Its unsigned device archive needs signing before it can be installed on an iPhone; TestFlight and physical-device testing are pending.
Some behavior still depends on the PC and device:
The native iOS companion is planned and is not available for download yet. See the roadmap for the remaining work and iOS plan.
For the host, use Node.js 20.11+; CI uses Node.js 24. Windows builds also need .NET SDK 8. Use Inno Setup 7 for the installer. Android builds need JDK 17 or 21 and Android SDK Platform / Build Tools 34.
npm ci
npm test
npm run build:windows
npm start
On Windows, build:windows prepares the helper used by npm start and creates
artifacts\WinDock-win-x64\WinDockTray.exe, which can run on its own. The host
prints its address and pairing PIN. On Linux, follow the
Linux preview steps instead. Windows, Android and the Linux
installer preview are available to download.
| Command | Purpose |
|---|---|
npm test | Run the 22 platform-independent verification scripts |
npm run build:windows | Package the Windows helper, tray, Node host, and web UI |
npm run test:windows | Run native Windows smoke checks |
npm run build:linux | Build the Linux input helper (windock-input, needs Rust) |
npm run package:linux | Build .deb and Arch installers with bundled runtime (needs Docker) |
npm run test:linux | Run the Linux input helper's unit tests |
npm run build:installer | Create artifacts/installer/WinDockSetup.exe |
npm run test:installer | Check installation, launch, upgrade, and uninstall in isolation |
npm run build:android | Build, test, lint, and verify the Android APK |
npm run website | Serve the website locally at http://127.0.0.1:4173 |
npm run build:website-demo | Regenerate the website demo from the actual app UI |
To serve locally built downloads, run npm run package:downloads after building
both installers. The website deploys to Vercel automatically from main; GitHub
Releases host the public download files.
More detail: developer reference · Android build and testing · website deployment.
Open an issue with your Windows
version or Linux desktop, phone model, reproduction steps, and expected behavior. For changes,
keep the platform-provider boundary intact and run npm test; native or Android
changes also need the relevant platform checks. Never include pairing PINs,
session cookies, or your personal dock configuration in a report or commit.
Every pull request runs the CI workflow:
npm test on Linux, Windows and macOS, the Linux helper's Rust tests, the
Windows native input and update checks, and a build of any native macOS code.
Its CI passed check must succeed before a pull request can merge. A
first-time contributor's pull request runs once a maintainer approves it.
WinDock's source code is available under the MIT license. Copyright © 2026 Ali Saad. Third-party dependencies and app icons retain their own licenses and trademarks.