<feed xmlns='http://www.w3.org/2005/Atom'>
<title>npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/grasp-mirror/src/discovery.rs, branch master</title>
<subtitle>[no description]</subtitle>
<id>https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/grasp-mirror/atom?h=master</id>
<link rel='self' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/grasp-mirror/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/grasp-mirror/'/>
<updated>2026-05-27T12:04:00+00:00</updated>
<entry>
<title>Fix discovery: use separate client with only index relays</title>
<updated>2026-05-27T12:04:00+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-27T12:04:00+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/grasp-mirror/commit/?id=c21100ad4868cbe03124b61c411394a7ae2d078c'/>
<id>urn:sha1:c21100ad4868cbe03124b61c411394a7ae2d078c</id>
<content type='text'>
fetch_events_from requires relays in pool; use dedicated client
with only working relays and fetch_events for reliable queries.
</content>
</entry>
<entry>
<title>Fix discovery: use fetch_events_from with index_relays only</title>
<updated>2026-05-27T11:59:28+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-27T11:59:28+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/grasp-mirror/commit/?id=f5b83c28c63fa1e9a5ff5e82782967e6bb9cfa96'/>
<id>urn:sha1:f5b83c28c63fa1e9a5ff5e82782967e6bb9cfa96</id>
<content type='text'>
The nostr-sdk pool fetch_events returns empty when most relays are dead.
Target only the known-working index relays for discovery queries.
</content>
</entry>
<entry>
<title>Fix discovery: wait for relay connections, add per-npub logging, suppress relay pool spam</title>
<updated>2026-05-27T11:54:19+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-27T11:54:19+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/grasp-mirror/commit/?id=319f44139bc668a4fa59d4c4361f442b3f87b95c'/>
<id>urn:sha1:319f44139bc668a4fa59d4c4361f442b3f87b95c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: initial implementation of grasp-mirror daemon</title>
<updated>2026-05-26T10:41:05+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-26T10:41:05+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/grasp-mirror/commit/?id=8816a192c95cf539b65975469a2d61aed46f0414'/>
<id>urn:sha1:8816a192c95cf539b65975469a2d61aed46f0414</id>
<content type='text'>
GRASP mirror daemon that discovers repos from watched npubs and mirrors
git data + Nostr events across all known GRASP servers for redundancy.

Features:
- Configurable npub watch list via .env (MIRROR_NPUBS)
- TOML config for GRASP server list, index relays, storage paths
- NIP-11 verification of GRASP servers on startup
- Discovery of repos via kind:30617 announcements on index relays
- Git mirroring (bare clone + push --mirror) to missing GRASP servers
- Nostr event forwarding to all GRASP server embedded relays
- SQLite state tracking for sync status and event dedup
- Optional signing key for updating announcements with new clone URLs
- CLI subcommands: daemon, status, verify, mirror-once

Architecture:
  config.rs    - TOML + .env config loading
  db.rs        - SQLite state tracking
  health.rs    - NIP-11 GRASP server verification
  discovery.rs - Relay subscription, kind:30617 parsing
  git_mirror.rs - Bare clone + push to GRASP servers
  nostr_mirror.rs - Event forwarding to all GRASP relays
  signing.rs   - Optional announcement updates
  main.rs      - CLI entry point, daemon loop
</content>
</entry>
</feed>
