{"id":21384674,"url":"https://github.com/p2panda/send-to-node","last_synced_at":"2025-10-05T12:32:57.022Z","repository":{"id":104337307,"uuid":"510513888","full_name":"p2panda/send-to-node","owner":"p2panda","description":"Command line tools to send p2panda operations and upload files to a node","archived":false,"fork":false,"pushed_at":"2024-01-09T12:50:47.000Z","size":134,"stargazers_count":9,"open_issues_count":2,"forks_count":2,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-07-14T14:07:50.173Z","etag":null,"topics":["client","command-line","development","tool","upload-file"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/p2panda.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2022-07-04T22:02:42.000Z","updated_at":"2025-06-22T15:41:22.000Z","dependencies_parsed_at":"2024-01-09T14:08:13.922Z","dependency_job_id":"da5b8227-f443-4651-8cdd-68df9454c5ee","html_url":"https://github.com/p2panda/send-to-node","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/p2panda/send-to-node","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p2panda%2Fsend-to-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p2panda%2Fsend-to-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p2panda%2Fsend-to-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p2panda%2Fsend-to-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/p2panda","download_url":"https://codeload.github.com/p2panda/send-to-node/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p2panda%2Fsend-to-node/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278457223,"owners_count":25989952,"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-05T02:00:06.059Z","response_time":54,"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":["client","command-line","development","tool","upload-file"],"created_at":"2024-11-22T11:42:32.964Z","updated_at":"2025-10-05T12:32:57.004Z","avatar_url":"https://github.com/p2panda.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# send-to-node\n\nCommand line tools to send [p2panda](https://p2panda.org) operations and upload\nfiles to a node.\n\nThese tools are simple low-level clients to interact with\n[nodes](https://github.com/p2panda/aquadoggo) and help with experimentation and\nholding workshops with p2panda and supporting debugging and development.\n\n## Installation\n\n### Pre-compiled binaries\n\nCheck out our [Releases](https://github.com/p2panda/send-to-node/releases)\nsection where we publish binaries for Linux, RaspberryPi, MacOS and Windows.\n\n### Compile it yourself\n\nFor the following steps you need a\n[Rust](https://www.rust-lang.org/learn/get-started) development environment on\nyour machine.\n\n```bash\n# Download source code\ngit clone https://github.com/p2panda/send-to-node.git\ncd send-to-node\n\n# Compile both binaries\ncargo build --release --bins\n\n# Copy binaries into your path (example)\ncp ./target/release/send-to-node ~/.local/bin\ncp ./target/release/send-blob-to-node ~/.local/bin\n```\n\n## Usage\n\nThis repository consists of two separate programs `send-to-node` and\n`send-blob-to-node`.\n\nThe private key used to sign the data you are creating is inside of\n`key.txt`, the program will read it from there. If the file does not exist\nyet, a new key will be generated and placed in this file.\n\n### Send operations with `send-to-node`\n\nCreate a `.json` file describing the operation you want to send and pipe it\ninto `send-to-node`. It will read the file from stdin, sign and encode the data\nand publish the entry on a node. Alternatively you can also use the `[PATH]`\nargument to refer to the file.\n\n\u003e The encoding format of p2panda operations is CBOR but for `send-to-node` were using JSON\n\u003e for its user interface, since it is a human-readable format. Internally `send-to-node`\n\u003e converts your input into the correct CBOR format.\n\n#### Arguments\n\n```\nUsage: send-to-node [OPTIONS] [PATH]\n\nArguments:\n  [PATH]  Path to file containing operation encoded in JSON format\n\nOptions:\n  -e, --endpoint \u003cENDPOINT\u003e        Node endpoint URL [default: http://localhost:2020/graphql]\n  -k, --private-key \u003cPRIVATE_KEY\u003e  Path to private key file [default: key.txt]\n  -h, --help                       Print help\n  -V, --version                    Print version\n```\n\n#### Example\n\n```bash\n# Publish an operation\ncat schema-definition.json | send-to-node\n\n# Same, but using the \"path\" argument\nsend-to-node schema-definition.json\n```\n\n### Upload files with `send-blob-to-node`\n\nUpload any file to a node using `send-blob-to-node`. It will automatically\nsplit the file into blob pieces according to the p2panda specification,\ndetermine it's mime type by looking at the file extension, encode and sign the\noperations and send them to the node.\n\n#### Arguments\n\n```\nUsage: send-blob-to-node [OPTIONS] \u003cPATH\u003e\n\nArguments:\n  \u003cPATH\u003e  Path to (binary) file which should be uploaded to node\n\nOptions:\n  -e, --endpoint \u003cENDPOINT\u003e        Node endpoint URL [default: http://localhost:2020/graphql]\n  -k, --private-key \u003cPRIVATE_KEY\u003e  Path to private key file [default: key.txt]\n  -h, --help                       Print help\n  -V, --version                    Print version\n```\n\n#### Example\n\n```bash\n# Upload a large file\nsend-blob-to-node my-large-file.wav\n```\n\n## Demo\n\nIf you want to reproduce the example operations, you should use the\n`key-demo.txt` private key. Make sure there is no data of this author yet on\nyour node.\n\nRun the whole demo manually step by step or just use that script to run it\nautomatically:\n\n```bash\n./demo.sh\n```\n\n## Development\n\n```bash\n# Run `send-to-node`\ncargo run -- --endpoint http://localhost:2020/graphql\n\n# Run `send-blob-to-node`\ncargo run --bin send-blob-to-node -- my-large-file.wav\n```\n\n## License\n\n[`MIT`](LICENSE)\n\n## Supported by\n\n\u003cimg src=\"https://raw.githubusercontent.com/p2panda/.github/main/assets/ngi-logo.png\" width=\"auto\" height=\"80px\"\u003e\u003cbr /\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/p2panda/.github/main/assets/nlnet-logo.svg\" width=\"auto\" height=\"80px\"\u003e\u003cbr /\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/p2panda/.github/main/assets/eu-flag-logo.png\" width=\"auto\" height=\"80px\"\u003e\n\n*This project has received funding from the European Union’s Horizon 2020\nresearch and innovation programme within the framework of the NGI-POINTER\nProject funded under grant agreement No 871528 and NGI-ASSURE No 957073*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fp2panda%2Fsend-to-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fp2panda%2Fsend-to-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fp2panda%2Fsend-to-node/lists"}