block / block/buzz

Mobile app cannot onboard without the desktop app — no standalone identity path

Open
#2,735 0 comments 3 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
32.7k
Forks
4.3k
Avg merge
1d 13h
Merged PRs (30d)
253

Description

## Problem

The mobile app can't be used without first going through the desktop app.
The desktop app is a first-class client — it creates its own identity and
connects directly to a relay. The mobile app is not: it has no independent
identity path. It must receive an identity via NIP-AB pairing from a
desktop app that already has one.

This means anyone running the relay and agents on a headless server has no
way to onboard a mobile device. The mobile app already has the full client
surface — channels, threads, search, forum, agents, reactions, profiles —
but there is no path to reach it.

## Workaround (what it takes today)

To get a phone connected without a desktop app, we had to:

1. Run `buzz-pairing-cli source` on the server to act as a headless
pairing source.
2. Fix a payload format incompatibility — the CLI sends `PayloadType::Nsec`
(raw nsec) but the mobile app expects `PayloadType::Custom` with
`{"relayUrl","pubkey","nsec"}`, the format the desktop app produces.
3. Fix a rustls `CryptoProvider` panic (#2308) when connecting over `wss://`.
4. Copy-paste the `nostrpair://` URI from a terminal to the phone.
5. Confirm the SAS code on both sides.

After these fixes, pairing succeeded and the mobile app connected. But this
is not a realistic path for users — it requires building from source,
patching the CLI, and juggling a terminal and a phone.

## What would help

Two reasonable approaches, neither available today:

- Mobile creates its own identity (keypair) and connects directly, the
same way the desktop app does.
- Mobile pairs with a headless identity source — the CLI already has a
relay URL and nsec, but has no `pair` command to transfer them.

Either would make the mobile app usable without a desktop app.

Related: #2324 (pairing docs assume desktop), #2682 (same deadlock —
proposed a web client to avoid the desktop dependency entirely).

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.