Files
the-nexus/docs/nostr-migration/CONSOLIDATION.md
Alexander Whitestone ecc05b5442
Some checks failed
Review Approval Gate / verify-review (pull_request) Failing after 9s
CI / test (pull_request) Failing after 51s
CI / validate (pull_request) Failing after 52s
docs(nostr): consolidate migration epics #819 and #138
Create canonical consolidation plan and Telegram-Nostr bridge spec
under docs/nostr-migration/.

- CONSOLIDATION.md: establishes #819 as canonical parent epic,
  maps scope boundaries, documents current implementation state
  (Python stack + browser stack + infrastructure), lists action items
- TELEGRAM-NOSTR-BRIDGE-SPEC.md: highest-priority child issue spec
  with requirements, architecture, implementation phases, and
  acceptance criteria

Refs #862, #819, #138
2026-04-22 03:12:32 -04:00

3.4 KiB

Nostr Migration Consolidation Plan

Issue #862 | Canonical Epic: the-nexus #819
Consolidated From: the-nexus #819 + timmy-config #138


Problem

Two epics tracked the same Telegram -> Nostr migration with overlapping scope:

Epic Repo Focus Status
#819 the-nexus Client fork (Nostur), UI/UX, agent presence CANONICAL
#138 timmy-config Relay/infrastructure, deployment, ops Tracked child

Neither was the parent. Work risked duplication and drift.


Resolution

#819 is the canonical parent epic. All Nostr migration work rolls up here.

Scope Boundaries

Component Owner Repo Epic / Issue
Nostur client fork the-nexus #819
Agent Nostr presence (JS) the-nexus #819
Relay deployment & infra timmy-config #138 (child of #819)
Key management (NIP-49) timmy-config #138 (child of #819)
Telegram-Nostr bridge NEW File as child of #819
Nostr identity (Python) the-nexus #819

Child Issue Map

#819 [EPIC] Operation Exodus: Telegram -> Nostr Migration (CANONICAL)
|-- #138 [CHILD] Relay/infrastructure migration (timmy-config)
|   |-- Relay deployment (nostr-rs-relay or strfry)
|   |-- NIP-49 encrypted nsec keystore
|   +-- Health checks & alerting
|-- [CHILD] Nostur client fork + UI skinning
|-- [CHILD] Agent Nostr presence (JS bridge)
+-- [CHILD] Telegram-Nostr bridge <- HIGHEST PRIORITY
    |-- Bidirectional message relay
    |-- Dual-presence period (both platforms active)
    +-- Graceful Telegram deprecation path

Current Implementation State

Python Stack (the-nexus)

  • nexus/nostr_identity.py - Pure-Python BIP340 Schnorr signatures
    • WARNING Timing side-channel vulnerabilities (see FINDINGS-issue-801.md)
    • Suitable for prototyping; production needs coincurve or constant-time rewrite
  • nexus/nostr_publisher.py - Async WebSocket publisher to public relays

Browser Stack (the-nexus)

  • app.js:NostrAgent - Browser-side agent presence
    • WARNING Uses mock signatures (mock_id, mock_sig)
    • Needs real crypto integration or delegation to Python backend

Infrastructure (timmy-config)

  • nostr-bridge.service - Running but source file deleted, only .pyc remains
  • /root/nostr-relay/keystore.json - NIP-49 encrypted nsec storage

Highest Priority: Telegram-Nostr Bridge

The bridge is the critical path. Without it, migration strands users on Telegram.

Requirements:

  1. Bidirectional message relay (Telegram <-> Nostr)
  2. Dual-presence period: both platforms active during transition
  3. Graceful deprecation: Telegram bot stays online until 90% of active users have Nostr handles
  4. Channel/topic mapping: preserve conversation structure

File this as a new child issue under #819.


Action Items

  • Close #138 in timmy-config with comment: "Consolidated into the-nexus #819. Relay/infrastructure work tracked as child of canonical epic."
  • Update #819 title/body to reference this consolidation plan
  • File child issue: Telegram-Nostr bridge (bidirectional, dual-presence)
  • File child issue: Fix timing side-channel in nostr_identity.py (or replace with coincurve)
  • File child issue: Replace mock signatures in app.js:NostrAgent with real crypto
  • Assign owners to each child issue

Sovereignty and service always.