Skip to content
Projects

felipenalves/Dokke has 50 GitHub stars and 12 forks. GitHot measured 0 stars in 24 hours and +1 in 7 days. Last checked 2026-11-10 02:28 UTC. Last push 2026-10-29.

How these counts are measured

Dock manager — sync apps between Mac and any device via WebSocket. macOS app + PWA + Android WebView.

Measured star growth

in 24h
0
in 7 days
+1
in 15 days
Update delayed
in 1 month
Update delayed

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

README.en.md

Original

Dokke

Dokke

Leia este README em português

An app dock that syncs from your Mac to any device on your LAN.
It started with an old Galaxy J5 — today it runs on Android, iPhone, or any browser.

Dokke is an app dock manager: pin, reorder, and open Mac apps from another device on the same network.

Installation

For a no-terminal installation, open the installation page.

Mac — main host

Open the latest Dokke release and choose the package for your Mac: Dokke-macOS-apple-silicon-arm64.dmg for Apple Silicon (M1, M2, M3, or M4), or Dokke-macOS-intel-x86_64.dmg for Intel. Open the .dmg, drag Dokke to Applications, and launch it.

The Mac is the host: it runs the server and makes the dock available to other devices on the same network.

If macOS blocks the first launch, open System Settings → Privacy & Security → Security → Open Anyway → Open. Dokke is distributed outside the App Store.

Android

Download the APK and install it. Then open Dokke on the Mac and use the URL and PIN shown in the Connect tab.

Shortcuts work over HTTP by default for authenticated devices on the same Ethernet/Wi-Fi subnet as the Mac, including the APK. Traffic is not encrypted. Use an HTTPS URL to run shortcuts outside that network.

iPhone

iPhone uses the browser PWA. Open the URL shown in the Mac app in Safari and choose Add to Home Screen. iPhone requires an HTTPS URL; the installation page describes the current path.

On iPhone, use HTTPS to run shortcuts outside the local network.

Windows is not available yet. The installation page will show a button when an installable version exists.

How it works

  1. The Mac app manages pinned apps and runs the local server.
  2. The Node.js server syncs the dock through WebSocket and serves the PWA.
  3. The device receives changes in real time.
  4. Tapping an app on the device opens it on the Mac.
  5. UDP discovery finds the Mac on the local network without manual IP configuration.

Stack

Layer Technology
Mac app Swift, SwiftUI, MenuBarExtra, Liquid Glass (macOS 26+)
Server Node.js, ws, plain HTTP
PWA Vanilla HTML/CSS/JS, CSS Grid, backdrop-filter blur
Android Kotlin, WebView wrapper
Sync WebSocket and UDP discovery

Development

For source builds, use macOS 14+, Xcode Command Line Tools, and Node.js 20+:

git clone https://github.com/felipenalves/Dokke.git
cd Dokke
cd mac && ./install.sh --open

Run the server directly:

npm install
node server.js
# → http://localhost:3000

The Mac app starts the server automatically. The Connect tab shows the URL and PIN for other devices.

Features

  • Mac app: sidebar, 4×2 dock grid, app picker, drag-to-reorder, native icons, menu bar, and automatic server startup.
  • PWA/APK: pinned apps, open apps, long-press to pin, real-time updates, and automatic UI refresh.
  • Language: choose Português or English in the PWA, Mac app, and documentation. The local choice persists on that device.

Authentication

All /api/* routes require a 4-digit PIN, except /health, /api/probe, and /api/auth. Requests from loopback (the Dokke app on the Mac) are allowed directly.

The PIN is generated on first boot and can be regenerated from the Mac app's Connect tab. Regenerating it invalidates device cookies; connected devices will request the new code.

API

Method Path Purpose
GET /health Public health check
GET /api/apps Pinned apps and running processes
GET /api/apps/installed Installed Mac apps
POST /api/config/pinned Pin an app
PUT /api/config/pinned Replace the pinned list
DELETE /api/config/pinned/:app Unpin an app
POST /api/apps/:name/activate Activate an app on the Mac

Tests

npm test

See the Portuguese README for the complete reference and current release notes.

Explore related projects