[MeshCore] Outbound 2FA claim: WS dispatch + HTTP verify
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 30/100
Research direction
Start with dispatch_node_command in Meshflow/common/feeder_ws.py, using the existing apply_mc_channel_config dispatch as the pattern, and read normalize_claim_key in Meshflow/nodes/claim_authorization.py alongside notify_node_claim_accepted in Meshflow/nodes/ws_notify.py. Done means the initiate route sends a send_mc_claim_dm command, the new verify route accepts a claim key and sets the claim as accepted, and openapi.yaml and node-claims-meshcore.md are updated. The bot side (meshflow-bot#120) is a stated blocker, so this is not startable end to end yet.
Written by the indexing model from the issue text.
Description
Parent (UI user flow)
Part of meshflow-ui#291 — Claim MeshCore node / feeder onboarding epic.
| Repo | Issue |
|---|---|
| UI | meshflow-ui#303 |
| Bot | meshflow-bot#120 |
Meshtastic inbound DM claim stays unchanged (node-claims-meshtastic.md).
Replaces the fragile inbound MeshCore flow in node-claims-meshcore.md. Basic MC claim shipped in meshflow-ui#292 (closed).
Problem
MeshCore DMs require the recipient in the radio contact list (usually populated via RF adverts). Users claiming from the web UI cannot reliably DM a feeder with the claim key. The API already knows the target node's mc_pubkey / prefix from telemetry; a feeder should DM the user with the code; the user types the code back in the UI.
Architecture
sequenceDiagram
participant UI as meshflow-ui
participant API as meshflow-api
participant WS as ws/nodes (feeder)
participant Bot as meshflow-bot (MC)
participant Radio as MeshCore device
UI->>API: POST observed-nodes/{id}/claim/ (existing)
API->>API: Create NodeOwnerClaim + claim_key
API->>WS: node_command send_mc_claim_dm
WS->>Bot: command JSON
Bot->>Radio: add contact + send DM(claim_key)
Radio->>User: DM with claim key
UI->>API: POST observed-nodes/{id}/claim/verify/ { claim_key }
API->>API: Match pending claim, set accepted_at + claimed_by
API->>UI: node_claim_accepted (HTTP + ws/claims/)
Scope (meshflow-api)
1. Initiate claim (POST …/claim/)
- For
protocol=MESHCOREonly: after creatingNodeOwnerClaim, resolve target identity (mc_pubkey, fallbackmc_pubkey_prefix) fromObservedNode. - Select feeder
ManagedNode(optionalfeeder_managed_node_idfrom UI; else eligible connected MC feeder). - Dispatch via
dispatch_node_command(apply_mc_channel_configpattern).
2. WS command send_mc_claim_dm
{
"type": "send_mc_claim_dm",
"target_mc_pubkey": "<64-hex or null>",
"target_mc_pubkey_prefix": "<12-hex or null>",
"message": "<claim_key>"
}
3. Verify claim (POST …/claim/verify/)
- Body
{ "claim_key": "…" }; normalize likenormalize_claim_key. - Emit
node_claim_authorized+notify_node_claim_accepted. - Keep inbound
try_accept_node_claimon ingest as fallback until outbound is stable.
4. Docs + tests
- Update node-claims-meshcore.md.
-
openapi.yamlfor verify route.
Depends on
- Dominant language
- Python
- Stars
- 1
- Forks
- 0
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 5
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from pskillen/meshflow-api
-
enhancement meshtastic-2.8
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
pskillen/meshflow-api#459 ·
-
enhancement meshtastic-2.8
Difficulty 3/5 1-2 days Newbie friendliness 35/100
pskillen/meshflow-api#465 ·
-
enhancement meshtastic-2.8
Difficulty 4/5 3-5 days Newbie friendliness 22/100
pskillen/meshflow-api#464 ·
-
enhancement meshtastic-2.8
Difficulty 4/5 3-5 days Newbie friendliness 35/100
pskillen/meshflow-api#463 ·
-
enhancement meshtastic-2.8
Difficulty 3/5 1-2 days Newbie friendliness 45/100
pskillen/meshflow-api#462 ·
All issues in pskillen/meshflow-api
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
microsoft/markitdown#2820 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
yt-project/yt#5624 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
NousResearch/hermes-agent#148376 ·
Maintainers usually reply within 1 day