Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tracker-bridge

Tracker Bridge is a tiny localhost HTTP + WebSocket helper so the published Tower Run Tracker website can find and read playerInfo.dat on your computer (emulator, USB phone, or native Mac install).

It only reads your save file — it does not modify the game or inject code.

Requirements

Tracker Bridge runs on Node.js 18 or newer. npx is part of Node.js, so if npx is "not recognized", Node.js is not installed yet.

Don't want to deal with a terminal? Use the installer — it checks for Node.js, installs it if missing, and sets up the bridge with Start Menu shortcuts and an uninstaller:

  • Windows: TrackerBridgeSetup.exe — a standard install wizard. Installs per-user under %LOCALAPPDATA%\TrackerBridge, so it needs no administrator rights.
  • macOS: tracker-bridge-setup.command — double-click it (first time: right-click → Open → Open)

Both are downloadable from the tracker site's import page.

Heads up: the installers are not code-signed, so your OS warns once. On Windows click More info → Run anyway; on macOS right-click → OpenOpen.

Building the Windows installer

winget install -e --id JRSoftware.InnoSetup   # one-time
npm run build:installer:win                   # -> dist/TrackerBridgeSetup.exe

The version is read from package.json, so the installer can never drift from the package.

Usage

npx tracker-bridge

On first run the terminal walks you through setup:

  1. Trust intro and npm source links
  2. Update check — auto-updates to the newest version and tells you (see below)
  3. Automatic adb discovery or platform-tools install
  4. Optional OS startup registration
  5. Optional background mode (safe to close the terminal)

Windows PowerShell: "running scripts is disabled"

This only affects PowerShell. Easiest fixes, in order of preference:

  1. Use the one-click tracker-bridge-setup.cmd above (never touches PowerShell policy), or
  2. Run the command in Command Prompt (cmd) instead, or
  3. If you must use PowerShell, run this once in the same window — it applies only to that window:
    Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

Updates

Automatic updates are on by default. On each run the bridge checks npm for a newer version, updates itself, and prints a notice telling you it did.

npx tracker-bridge --no-auto-update  # only notify when an update exists
npx tracker-bridge --auto-update     # turn automatic updates back on
npx tracker-bridge --no-update       # skip the check just this once

Preferences are stored in ~/.local-adb-bridge/config.json.

Optional flags

npx tracker-bridge --daemon        # Run in background
npx tracker-bridge --boot          # Register OS login startup
npx tracker-bridge --no-boot       # Skip startup prompts
npx tracker-bridge --remove-boot   # Remove OS startup entry
npx tracker-bridge --install-path  # Add adb to user PATH
npx tracker-bridge --help

Platform notes

  • Windows USB: Uses host adb in the bridge terminal. Autoplay can cause reconnect loops — set your phone to Take no action in Autoplay settings.
  • macOS: Mac save scan checks the App Store bundle-id container, non-App-Store (random-UUID) sandbox containers, and non-sandboxed / Steam-style installs under ~/Library/Application Support, then runs a bounded case-insensitive search under those roots. macOS hides ~/Library in Finder — reveal it with Finder's Go → Go to Folder (⇧⌘G), or hold Option (⌥) in the Go menu.
  • Linux: Emulator connect tries adb first, then common on-disk save paths for Waydroid/Anbox installs.
  • Published site: Click Allow when Chrome or Edge asks for local network access so the site can reach 127.0.0.1:43781.

Environment variables

  • LOCAL_ADB_BRIDGE_PORT — default 43781
  • ADB_PATH or LOCAL_ADB_BRIDGE_ADB — full path to adb / adb.exe
  • LOCAL_ADB_BRIDGE_SKIP_AUTO_INSTALL=1 — do not install or modify PATH
  • TRACKER_BRIDGE_SKIP_UPDATE_CHECK=1 — do not check for updates

Platform-tools zip installs are stored under ~/.local-adb-bridge/platform-tools/.

Using it as a library

The package exposes stable subpath entries, so you can embed the bridge rather than shelling out (the Tower Run Tracker desktop app does exactly this — Electron ships its own Node, so users need nothing installed):

import { startLocalAdbBridge, BRIDGE_VERSION } from 'tracker-bridge/server.mjs'
import { discoverNativeHostPlayerInfoSave } from 'tracker-bridge/native-save-discovery.mjs'

const { server, wss } = startLocalAdbBridge()          // listens on 127.0.0.1:43781
const save = await discoverNativeHostPlayerInfoSave()  // { source, absolutePath, bytes } | null

Available entries: server.mjs, native-save-discovery.mjs, pull-save.mjs, save-paths.mjs, save-bytes.mjs, update-check.mjs, bridge-config.mjs.

Protocol

The site connects over WebSocket to ws://127.0.0.1:43781 and exchanges JSON messages:

Send Reply
— (on connect) { type: 'HELLO', version, port }
{ type: 'PING' } { type: 'PONG', version }
{ type: 'CHECK_ADB' } { type: 'ADB_STATUS', ... }
{ type: 'PULL_SAVE', preferNativeHost?, preferPhysicalDevice?, customPort? } { type: 'SUCCESS', data, remotePath, deviceSerial, byteLength } or { type: 'ERROR', code, message }

GET /private-network-ping exists to trigger Chrome's Private Network Access permission.

Contributing / forking

Issues and pull requests are welcome. The bridge is intentionally dependency-light (only ws) and has no build step — clone it and run node bin/tracker-bridge.js.

License

GPL-3.0-or-later. See LICENSE.

Legacy package name

The previous npm package was local-adb-bridge. New releases ship as tracker-bridge.

About

Read-only local helper that finds your The Tower save file (playerInfo.dat) for The Tower Run Tracker — emulator, USB, macOS, Windows and Linux.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages