Taphaptic sends Claude Code task status to Apple Watch using a local API running on your Mac.
git clone https://github.com/dzzzgnr/taphaptic.git && cd taphaptic && ./scripts/bootstrap-watch.sh
In Xcode, select scheme Taphaptic, choose your physical Apple Watch destination, and press Run.
Open Taphaptic on Apple Watch and enter the 4-digit pairing code printed during bootstrap.
Bootstrap builds taphaptic-api and taphapticctl from local source.
./scripts/start-api.sh
This runs in the background and prints the API log path.
Start a new Claude session so hooks load.
Optional verification event:
./scripts/test-claude-connection.sh stop
./scripts/stop-api.sh
Start:
./scripts/start-api.sh
Stop:
./scripts/stop-api.sh
Restart after Wi-Fi/network/IP changes:
./scripts/stop-api.sh
./scripts/start-api.sh
Run from anywhere (no local clone required):
curl -fsSL https://raw.githubusercontent.com/dzzzgnr/taphaptic/main/scripts/uninstall.sh | sh -s -- --yes
If you already cloned this repo:
./scripts/uninstall.sh --yes
POST /v1/claude/installations to bootstrap installation identity.POST /v1/watch/pairings/code to generate a 4-digit code._taphaptic._tcp) and claims code via POST /v1/watch/pairings/claim.POST /v1/events.GET /v1/events?since=<id>.Public routes:
GET /healthzPOST /v1/claude/installationsPOST /v1/watch/pairings/claimAuthenticated routes:
POST /v1/watch/pairings/code (installation token)POST /v1/events (claude session token)GET /v1/events?since=<id> (watch session token)Run backend unit tests:
go test ./... -count=1
Run API smoke e2e (installation -> pairing -> claim -> event -> poll):
./scripts/smoke-local-e2e.sh
Run shared Swift regression tests:
./scripts/test-shared-swift.sh
$ claude mcp add taphaptic \
-- python -m otcore.mcp_server <graph>