/v1/account/loginPOSTverificationUrl to open.
The daemon polls ghosthand.dev by itself until the user approves, denies, or the
link expires; read the result from GET /v1/phones or GET /v1/account. Calling it
again while a sign-in runs returns the same link. Unix socket only: the setup app
and ghosthand account login call it, agents do not.ghosthand tunnel url --new-token. The unix socket needs no tokensigned-out: no account on this Mac; every lease fails with login-required.
signing-in: a browser sign-in runs; open verificationUrl. signed-in: each
acquire checks the iPhone and this Mac against the plan.GET /v1/account. free: one iPhone, on any Mac. pro: every iPhone
on each paid Mac, plus the free iPhone anywhere. Acquire on another iPhone fails
with subscription-required.GET /v1/account. Macs the Pro subscription pays for; 0 on freeGET /v1/account. True when the account can read the daemon source on GitHubGET /v1/account, when ghosthand.dev could not be reachedtitle and detail are for people.curl -X POST "https://ghosthand.dev/macs/studio/v1/account/login" \ -H "Authorization: Bearer <token>"
{ "code": "device-leased", "title": "iPhone leased by another client", "status": 409, "detail": "Tommy's iPhone is in use by another lease:\n ses_456 (book a table on OpenTable), acquired 2 min ago, last used 10 s ago (tap)\nDecide first: if that task is still active, give up or tell the user the iPhone is busy." }