{"id":13763459,"url":"https://github.com/jiftechnify/nosdump","last_synced_at":"2026-01-12T10:36:59.031Z","repository":{"id":183242872,"uuid":"668313074","full_name":"jiftechnify/nosdump","owner":"jiftechnify","description":"A command line tool which dumps events stored in Nostr relays","archived":false,"fork":false,"pushed_at":"2025-12-15T06:57:52.000Z","size":247,"stargazers_count":19,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-18T04:03:21.510Z","etag":null,"topics":["cli","nostr"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jiftechnify.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-07-19T14:06:16.000Z","updated_at":"2025-12-15T06:57:49.000Z","dependencies_parsed_at":"2023-07-23T15:39:44.365Z","dependency_job_id":"ad31ebf1-f55f-4a4c-b8a8-f153044c0a91","html_url":"https://github.com/jiftechnify/nosdump","commit_stats":null,"previous_names":["jiftechnify/nosdump"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/jiftechnify/nosdump","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiftechnify%2Fnosdump","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiftechnify%2Fnosdump/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiftechnify%2Fnosdump/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiftechnify%2Fnosdump/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jiftechnify","download_url":"https://codeload.github.com/jiftechnify/nosdump/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiftechnify%2Fnosdump/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28338695,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T06:09:07.588Z","status":"ssl_error","status_checked_at":"2026-01-12T06:05:18.301Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","nostr"],"created_at":"2024-08-03T15:00:47.087Z","updated_at":"2026-01-12T10:36:58.988Z","avatar_url":"https://github.com/jiftechnify.png","language":"TypeScript","funding_links":[],"categories":["CLI Clients","Tools","TypeScript"],"sub_categories":["Client reviews and/or comparisons"],"readme":"# nosdump\n\n[![JSR](https://jsr.io/badges/@jiftechnify/nosdump)](https://jsr.io/@jiftechnify/nosdump)\n[![deno.land](https://shield.deno.dev/x/nosdump)](https://deno.land/x/nosdump)\n\nA command line tool which dumps events stored in [Nostr](https://github.com/nostr-protocol/nostr) relays, in\n[JSON-Lines](https://jsonlines.org/) format (also known as [NDJSON](http://ndjson.org/)).\n\n## Installation\n\n### With `deno install` (recommended)\n\n[Install Deno](https://deno.land/manual/getting_started/installation) and run:\n\n```sh\ndeno install -g -A \"jsr:@jiftechnify/nosdump@0.7.1\"\n```\n\n\u003e [!IMPORTANT]\n\u003e Don't forget the `-A` flag or you may have a lot of troubles while running the installed command!\n\n\u003e [!NOTE]\n\u003e If you use runtime version managers like asdf to manage Deno version, you may want to manually set the installation root directory with\n\u003e `--root` option of `deno install` or `$DENO_INSTALL_ROOT` environment variable to fix the location of the executable. See\n\u003e [the reference](https://docs.deno.com/runtime/reference/cli/script_installer/) for more details.\n\n### With Pre-built Binaries (easy)\n\nDownload pre-built binaries from the [releases](https://github.com/jiftechnify/nosdump/releases) page.\n\n## Basic Usage\n\nDump all events stored in the relay `wss://relay.damus.io`:\n\n```sh\nnosdump wss://relay.damus.io \u003e dump.jsonl\n```\n\nDump all text events (kind:1) and reaction events (kind:7):\n\n```sh\nnosdump -k 1,7 wss://relay.damus.io \u003e dump.jsonl\n```\n\nDump all your events:\n\n```sh\nnosdump -a ${YOUR_PUBKEY} wss://relay.damus.io \u003e dump.jsonl\n```\n\nDump all reply events to you:\n\n```sh\nnosdump -k 1 -p ${YOUR_PUBKEY} wss://relay.damus.io \u003e dump.jsonl\n```\n\nDump all events published in the past 24 hours:\n\n```sh\nnosdump -s 24h wss://relay.damus.io \u003e dump.jsonl\n```\n\n## Features\n\n### Shorthands for Relay URLs\n\nYou may feel cumbersome when specifying relays with full URLs. It's time **relay aliases** and **relay sets** come in handy!\n\n#### Relay Aliases\n\nYou set aliases for relay URLs:\n\n```sh\nnosdump alias damus wss://relay.damus.io\nnosdump alias welcome wss://welcome.nostr.wine\n```\n\nthen you refer to relays with aliases:\n\n```sh\n# Dump all text events from wss://relay.damus.io \u0026 wss://welcome.nostr.wine\nnosdump --kinds 1 damus welcome\n```\n\nTo reveal all the subcommands for the relay aliases management, run `nosdump alias --help`.\n\n#### Relay Sets\n\nYou group multiple relays into \"relay sets\":\n\n```sh\nnosdump relay-set add mega-relays wss://relay.damus.io wss://nos.lol\nnosdump relay-set add mega-relays wss://relay.nostr.band\n```\n\nthen, with the **`...\u003crelay-set\u003e`** syntax, you specify all the relays in the relay set as dump targets:\n\n```sh\n# Dump all text events posted in last 10 minutes from \"mega relays\"!\nnosdump --kinds 1 --since 10m ...mega-relays\n```\n\nTo reveal all the subcommands for the relay sets management, run `nosdump relay-set --help`.\n\n#### Put Them Together\n\nOf course, you can use raw relay URLs, relay aliases and relay sets together to specify relays to dump events!\n\n```sh\nnosdump --kinds 1 --since 10m wss://nrelay.c-stellar.net welcome ...mega-relays\n```\n\n\u003e [!NOTE]\n\u003e Configured relay aliases and relay sets are saved in a config file on your local file system. The location of the config file is\n\u003e `${CONFIG_DIR}/nosdump/config.yaml`, where `${CONFIG_DIR}` is\n\u003e [the standard directory for user-specific configs](https://github.com/sindresorhus/env-paths?tab=readme-ov-file#pathsconfig) on the\n\u003e platform you use.\n\n### Various Input Formats\n\nYou can use following formats to refer **events by ids**:\n\n- Hex event ID\n- NIP-19 identifier for event (`note1...` / `nevent1...`)\n- `nostr:` URI for event (`nostr:note1...` / `nostr:nevent1...`)\n\n```sh\n# They are all valid!\nnosdump -i c824e1184d4f3660097d8299632ac723f5bfaea1eb569867f4924f2f0713a321 wss://relay.damus.io\nnosdump -i note1eqjwzxzdfumxqztas2vkx2k8y06mlt4padtfsel5jf8j7pcn5vsssd2g8m wss://relay.damus.io\nnosdump -i nevent1qqsvsf8prpx57dnqp97c9xtr9trj8adl46s7k45cvl6fyne0quf6xggq2q33g wss://relay.damus.io\nnosdump -i nostr:note1eqjwzxzdfumxqztas2vkx2k8y06mlt4padtfsel5jf8j7pcn5vsssd2g8m wss://relay.damus.io\nnosdump -i nostr:nevent1qqsvsf8prpx57dnqp97c9xtr9trj8adl46s7k45cvl6fyne0quf6xggq2q33g wss://relay.damus.io\n\n# Even in e-tag query!\nnosdump -e nostr:note1eqjwzxzdfumxqztas2vkx2k8y06mlt4padtfsel5jf8j7pcn5vsssd2g8m wss://relay.damus.io\n```\n\nYou can use following formats to refer **pubkeys**:\n\n- Hex pubkey\n- NIP-19 identifier for pubkey (`npub1...` / `nprofile1...`)\n- `nostr:` URI for pubkey (`nostr:npub1...`/ `nostr:nprofile1...`)\n\n```sh\n# They are all valid!\nnosdump -a d1d1747115d16751a97c239f46ec1703292c3b7e9988b9ebdd4ec4705b15ed44 wss://relay.damus.io\nnosdump -a npub168ghgug469n4r2tuyw05dmqhqv5jcwm7nxytn67afmz8qkc4a4zqsu2dlc wss://relay.damus.io\nnosdump -a nprofile1qqsdr5t5wy2aze63497z886xastsx2fv8dlfnz9ea0w5a3rstv2763qgyw5f5 wss://relay.damus.io\nnosdump -a nostr:npub168ghgug469n4r2tuyw05dmqhqv5jcwm7nxytn67afmz8qkc4a4zqsu2dlc wss://relay.damus.io\nnosdump -a nostr:nprofile1qqsdr5t5wy2aze63497z886xastsx2fv8dlfnz9ea0w5a3rstv2763qgyw5f5 wss://relay.damus.io\n\n# Even in p-tag query!\nnosdump -p nostr:npub168ghgug469n4r2tuyw05dmqhqv5jcwm7nxytn67afmz8qkc4a4zqsu2dlc wss://relay.damus.io\n```\n\nYou can use following formats to specify **timestamps**:\n\n- Unixtime in seconds\n- ISO 8601 datetime string (e.g. `2023-07-19T23:06:16`)\n  - If you don't specify a timezone explicitly, it will be interpreted as **local time**.\n- Relative time represented by a duration string (e.g. `6h`, means 6 hours ago)\n  - It uses [duration.js](https://jsr.io/@retraigo/duration) to parse duration strings.\n\n```sh\n# Unixtime in seconds\nnosdump -s 1689768000 -u 1689778800 wss://relay.damus.io\n\n# Datetime string (UTC)\nnosdump -s 2023-07-19T12:00:00Z -u 2023-07-19T15:00:00Z wss://relay.damus.io\n\n# Datetime string (local time)\nnosdump -s 2023-07-19T12:00:00 -u 2023-07-19T15:00:00 wss://relay.damus.io\n\n# Relative time: since an hour ago, until 30 minutes ago\nnosdump -s 1h -u 30m wss://relay.damus.io\n```\n\n### Read a Filter from Stdin\n\nnosdump parses stdin as a Nostr filter by default, so the following command works as expected:\n\n```sh\necho '{ \"kinds\": [1, 7] }' | nosdump wss://relay.damus.io \u003e dump.jsonl\n```\n\nIf `-R` (`--stdin-req`) flag is specified, nosdump parses stdin as _a REQ message_ instead and extract the _first_ filter from it.\n\nThis feature makes nosdump interoperable with [nostreq](https://github.com/blakejakopovic/nostreq):\n\n```sh\nnostreq --kinds 1,7 | nosdump -R wss://relay.damus.io \u003e dump.jsonl\n```\n\n\u003e [!NOTE]\n\u003e If a filter read from stdin and a filter specified by command line options have the same property, **the latter takes precedence of the\n\u003e former**.\n\n## Synopsis\n\n```\nUsage:   nosdump [options...] \u003crelays...\u003e\nVersion: 0.7.1                           \n\nDescription:\n\n  A tool to dump events stored in Nostr relays\n\nOptions:\n\n  -h, --help     - Show this help.                                                               \n  -V, --version  - Show the version number for this program.                                     \n  -n, --dry-run  - Just print parsed options instead of running actual dumping.  (Default: false)\n\nFilter options:\n\n  -i, --ids      \u003cids\u003e        - Comma separated list of target event ids.                                      \n  -a, --authors  \u003cauthors\u003e    - Comma separated list of target author's pubkeys.                               \n  -k, --kinds    \u003ckinds\u003e      - Comma separated list of target event kinds.                                    \n  -t, --tag      \u003ctag-spec\u003e   - Tag query specifier. Syntax: \u003ctag name\u003e:\u003ccomma separated tag values\u003e. You can  \n                                specify multiple --tag options.                                                \n  -S, --search   \u003cquery\u003e      - Search query. Note that if you use this filter against relays which don't      \n                                support NIP-50, no event will be fetched.                                      \n  -s, --since    \u003ctime-spec\u003e  - Fetch only events newer than the timestamp if specified.                       \n  -u, --until    \u003ctime-spec\u003e  - Fetch only events older than the timestamp if specified.                       \n  -e, --e        \u003cevent-ids\u003e  - Shorthand for --tag e:\u003cevent-ids\u003e                                              \n  -p, --p        \u003cpubkeys\u003e    - Shorthand for --tag p:\u003cpubkeys\u003e                                                \n\nFetch options:\n\n  --skip-verification  - Skip event signature verification.  (Default: false)\n\nInput options:\n\n  -R, --stdin-req  - Read stdin as a Nostr REQ message and extract the first filter from it.  (Default: false)\n\nCommands:\n\n  completions                              - Generate shell completions.                           \n  upgrade                                  - Upgrade nosdump executable to latest or given version.\n  relay-alias, alias  [alias] [relay-URL]  - Manage relay aliases.                                 \n  relay-set, rset     [name] [relays...]   - Manage relay sets.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiftechnify%2Fnosdump","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjiftechnify%2Fnosdump","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiftechnify%2Fnosdump/lists"}