{"id":13688100,"url":"https://github.com/8go/matrix-nostr-bridge","last_synced_at":"2025-10-26T07:41:10.176Z","repository":{"id":90889122,"uuid":"577347586","full_name":"8go/matrix-nostr-bridge","owner":"8go","description":"Bridge between Matrix and Nostr communication protocols","archived":false,"fork":false,"pushed_at":"2022-12-15T12:58:28.000Z","size":19,"stargazers_count":47,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-11T05:04:34.807Z","etag":null,"topics":["bridge","cli","communication-protocol","matrix","nostr","python","rust-lang","terminal","tool"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/8go.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}},"created_at":"2022-12-12T14:37:41.000Z","updated_at":"2025-05-17T08:20:08.000Z","dependencies_parsed_at":"2024-01-13T16:29:24.992Z","dependency_job_id":"c2793629-f38f-4798-a5b2-7281d25157df","html_url":"https://github.com/8go/matrix-nostr-bridge","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/8go/matrix-nostr-bridge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8go%2Fmatrix-nostr-bridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8go%2Fmatrix-nostr-bridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8go%2Fmatrix-nostr-bridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8go%2Fmatrix-nostr-bridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/8go","download_url":"https://codeload.github.com/8go/matrix-nostr-bridge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8go%2Fmatrix-nostr-bridge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281074245,"owners_count":26439421,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-26T02:00:06.575Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["bridge","cli","communication-protocol","matrix","nostr","python","rust-lang","terminal","tool"],"created_at":"2024-08-02T15:01:06.716Z","updated_at":"2025-10-26T07:41:10.145Z","avatar_url":"https://github.com/8go.png","language":null,"funding_links":[],"categories":["Install from Source","Others","Bridges and Gateways"],"sub_categories":["Nostr","Client reviews and/or comparisons"],"readme":"# matrix-nostr-bridge\nBridge between Matrix and Nostr communication protocols.\n\nIf you like the idea, give it a Github star :star: right away!\n\n# Setup\n\n- get familiar with [matrix-commander](https://github.com/8go/matrix-commander) (Python) or [matrix-commander](https://github.com/8go/matrix-commander-rs) (Rust)\n- get familiar with [nostr-commander](https://github.com/8go/nostr-commander-rs) (Rust)\n- configure and run 2 `matrix-commander`s, one for Matrix-to-Nostr, another one for Nostr-to-Matrix\n- configure and run 2 `nostr-commander`s, one for Matrix-to-Nostr, another one for Nostr-to-Matrix\n- if desired write a script or program to filter and customize the data flow\n- if you use a filter-and-customize process you most likely want to use the options `--output json` with `matrix-commander`s and `nostr-commander`s and work with JSON formatted messages\n- if you connect the `matrix-commander`s and `nostr-commander`s together straight with a pipe you need to use `--output text`\n\n# Architecture\n\n```mermaid\nflowchart BT\n  subgraph Nostr-to-Matrix\n  direction BT\n  E((Nostr-network)) -- some Nostr note --\u003e F(nostr-commander with --listen) -- via pipe --\u003e G(matrix-commander with --message) -- some Matrix message --\u003e H((Matrix-network))\n  end\n  subgraph Matrix-to-Nostr\n  direction TB\n  A((Matrix-network)) -- some Matrix message --\u003e B(matrix-commander with --listen) -- via pipe --\u003e C(nostr-commander with --publish) -- some Nostr note --\u003e D((Nostr-network))\n  end\n```\n\nOr most likely you would want to filter and customize the messages. You can do this by putting a process in the middle that reads from stdin and writes to stdout. Input gets piped into the custom process which processes input line-by-line and generates its streamed output on stdout. \n\n\n```mermaid\nflowchart BT\n  subgraph Nostr-to-Matrix\n  direction BT\n  E((Nostr-network)) -- some Nostr note --\u003e F(nostr-commander with --listen) -- via pipe --\u003e I{filter and customize} -- via pipe --\u003e G(matrix-commander with --message) -- some Matrix message --\u003e H((Matrix-network))\n  end\n  subgraph Matrix-to-Nostr\n  direction TB\n  A((Matrix-network)) -- some Matrix message --\u003e B(matrix-commander with --listen) -- via pipe --\u003e J{filter and customize} -- via pipe --\u003e C(nostr-commander with --publish) -- some Nostr note --\u003e D((Nostr-network))\n  end\n```\n# Running It\n\nAfter having done the initial `matrix-commander` configuration like `--login` and `--verify`, and \nhaving done the initial `nostr-commander` configuration like `--create-user`, `--subscribe-author`, `--subscribe-pubkey`, etc.,\nthe simplest set-up to get data from Matrix to Nostr is:\n\n```matrix-commander --listen forever --output text ... other options | nostr-commander --publish '_' ... other options```\n\nVice versa in the other direction:\n\n```nostr-commander --listen  --output text ... other options | matrix-commander --message '_' ... other options```\n\nAnd if you have a `filter-and-customize` process, then this turns into:\n\n```matrix-commander --listen forever --output json ... other options | filter-and-customize | nostr-commander --publish '_' ... other options```\n\nand\n\n```nostr-commander --listen  --output json ... other options | filter-and-customize | matrix-commander --message '_' ... other options```\n\n\n# Contribute\n\nThis tool is more geared towards tinkerers.\nThe basic functionality and feature set for a Proof-of-concept bridge\nor a bridge for family-and-friends is there. \nIf you need more feature, please contribute the corresponding code\nto the corresponding `matrix-commander` and `nostr-commander` repos.\n:clap: \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F8go%2Fmatrix-nostr-bridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F8go%2Fmatrix-nostr-bridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F8go%2Fmatrix-nostr-bridge/lists"}