← All guides

Know when the task is done.

Get a short reminder without keeping SSH connected in the background.

iPhone and iPad · Updated 2026-11-14 · Current release: 1.1.0. One-button host setup and rich session context are available; version 1.0.2 used the earlier workflow.

Set up Shinphony Hook on the connected host

Shinphony Hook is the optional component installed on your computer; it is separate from herdr-core. Task notifications and Live Activities are free; Pro adds higher notification limits. You need notification permission, a supported SSH host and outbound HTTPS to downloads.potafree.net (agent downloads and release notes) and notify.potafree.net. Linux requires a working systemd user manager; macOS uses a user launch agent, Windows a per-user task that starts at logon. A minimal container without a user service manager is not equivalent to a supported Linux login host.

The shortest route is one line on your computer, then scan the code from Add server. The one-line setup guide has the full steps; the steps below are the same setup from inside the app.

macOS / Linux

curl -fsSL https://shinphony.app/pair | sh

Windows · PowerShell

irm https://shinphony.app/pair.ps1 | iex
  1. Connect and open Task notifications

    Open your server’s terminal. In the terminal tab’s More menu choose Task notifications. The target is this host.

  2. Enable notifications

    Enable notifications and allow the system permission. You do not need Pro for basic task notifications or Live Activities. No Shinphony account, invitation, APNs key or manual pairing code is needed for this new setup flow.

  3. Review and accept setup

    Choose Set up notifications. Confirm installation of the background host service, supported-agent configuration, signed updates and terminal-preview disclosure. Existing hooks are preserved; resolve conflicts deliberately rather than overwriting unrelated settings.

  4. Watch progress or return later

    The host downloads and verifies the signed service. Phone-network transfer is a fallback. Stages appear in the app and are saved on the host. You can use other screens, but keep the app foregrounded and SSH connected until the server accepts setup.

  5. Check the result

    Check status queries without reinstalling. After acceptance, the durable setup job can finish independently. A lost connection is not proof of failure: reconnect and check before retrying. Do not reset pairing just because a request timed out.

Shinphony Hook reference: updates and privacy · Using Hook with herdr-core · Signed release hashes

Request a task-completion notification

Start or resume a new supported agent session after setup and accept its hook/skill trust prompt. Explicitly ask the agent to use its installed shinphony-task-notify skill when your requested task is genuinely finished. Finishing a conversational turn does not automatically mean the task is complete.

When this task is genuinely complete, use the installed
shinphony-task-notify skill to notify me.

Rich context and precise routing currently support tmux + Codex on macOS/Linux. If setup reports a shared Codex backend, follow its guidance to start/resume with --no-daemon in the intended pane. Do not stop others’ sessions or change host-wide settings without checking. Claude Code integration does not imply equivalent rich-context routing; native Windows does not provide tmux semantics.

The supported hook and service provide the mechanism; agent behavior and successful task-to-pane detection still matter. Missing context, unsupported versions or a replaced target can prevent an alert. HTTP acceptance alone does not prove receipt.

Return to the right terminal

Lock your phone for a deliberate test. Expand the alert to read its preview. Tap to return to the saved host and validated tmux destination, reusing a matching terminal tab where possible. SSH authentication and host-key checks still apply. Deleted or expired targets are not silently substituted. No arbitrary shell command from the push is executed.

Alerts for a session you actively use may be suppressed on that device. Background the app for a delivery test. Delivery is best effort; attempts expire after five minutes. Focus, permissions and connectivity can affect what you see.

Troubleshooting and removal

The task finished but I received no notification

Check that host setup is complete and the agent explicitly invoked the installed notification skill. A completed reply alone is not a notification request. Background the app for the test, check notification permission and Focus, then compare the task time with host status. Do not repeatedly reinstall or trigger production work to test delivery.

The alert opens an expired target

In 1.0.3 build 96 and later, an unavailable target returns to a connected SSH shell instead of disconnecting. Open the session menu and select the existing session yourself. The app never guesses a replacement from the same name, and reconnecting does not replay an old notification route. Update to the current App Store release for this improvement.

Setup reports a connection error

Reconnect and Check status. Look at the recorded stage and timestamp: the server may already have accepted setup. Unknown/stale state is not a reason to revoke a working pairing.

How do updates work?

The opted-in host updater verifies signed releases and records checking, downloading, verifying, installing and final status. Downloads occur on the host. Concurrent attempts are coordinated; check the reported result rather than assuming success.

How do I disable it?

Revoke the host or Disable and remove all pairings in the app. This removes notification access, not SSH access. Uninstall the host service separately if no longer wanted, preserving unrelated agent hooks. Cleanup does not require keeping Pro.

Where is the old Python helper?

The legacy helper bundle and checksum remain for earlier versions. Its manual pairing/turn-adapter instructions are not the new daemon workflow. Do not install both blindly or change relay lanes to bypass an error.

Need help?

Share app/host versions, timestamp and redacted error category. Never send tokens, pairing codes, passwords, private keys or raw task output.

Contact support