{"id":13711236,"url":"https://github.com/ethersphere/swarm-cli","last_synced_at":"2025-04-05T18:05:25.553Z","repository":{"id":38425179,"uuid":"327864615","full_name":"ethersphere/swarm-cli","owner":"ethersphere","description":"Manage your Bee node and interact with the Swarm network via the CLI","archived":false,"fork":false,"pushed_at":"2024-12-09T15:22:29.000Z","size":5188,"stargazers_count":47,"open_issues_count":51,"forks_count":21,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-12-22T20:02:11.884Z","etag":null,"topics":["bee","bee-client","cli","decentralized","feed","identity","sign","swarm"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ethersphere.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":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-08T10:00:37.000Z","updated_at":"2024-12-09T15:22:19.000Z","dependencies_parsed_at":"2023-11-13T18:25:46.790Z","dependency_job_id":"56d95fae-c7af-4bb8-ab06-a5b4eb6ec5a4","html_url":"https://github.com/ethersphere/swarm-cli","commit_stats":{"total_commits":188,"total_committers":12,"mean_commits":"15.666666666666666","dds":"0.42553191489361697","last_synced_commit":"414b74bc912a08e1464562b6301af671aa5c5fc7"},"previous_names":[],"tags_count":47,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethersphere%2Fswarm-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethersphere%2Fswarm-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethersphere%2Fswarm-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethersphere%2Fswarm-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ethersphere","download_url":"https://codeload.github.com/ethersphere/swarm-cli/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247378138,"owners_count":20929296,"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","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":["bee","bee-client","cli","decentralized","feed","identity","sign","swarm"],"created_at":"2024-08-02T23:01:06.044Z","updated_at":"2025-04-05T18:05:25.534Z","avatar_url":"https://github.com/ethersphere.png","language":"TypeScript","funding_links":[],"categories":["Projects"],"sub_categories":["Tools"],"readme":"# Swarm-CLI\n\n![Node.js tests](https://github.com/ethersphere/swarm-cli/workflows/Node.js%20tests/badge.svg?branch=master)\n[![](https://img.shields.io/badge/made%20by-Swarm-blue.svg?style=flat-square)](https://swarm.ethereum.org/)\n[![standard-readme compliant](https://img.shields.io/badge/standard--readme-OK-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard)\n![](https://img.shields.io/badge/npm-%3E%3D6.0.0-orange.svg?style=flat-square)\n![](https://img.shields.io/badge/Node.js-%3E%3D12.0.0-orange.svg?style=flat-square)\n\nStay up to date with changes by joining the [official Discord](https://discord.gg/GU22h2utj6) and by keeping an eye on\nthe [releases tab](https://github.com/ethersphere/swarm-cli/releases).\n\n# Table of Contents\n\n- [Swarm-CLI](#swarm-cli)\n- [Table of Contents](#table-of-contents)\n- [Demo](#demo)\n  - [Purchasing a Postage Stamp](#purchasing-a-postage-stamp)\n  - [Uploading a File](#uploading-a-file)\n  - [Creating an Identity](#creating-an-identity)\n  - [Uploading to a Feed](#uploading-to-a-feed)\n  - [Upload file with ACT](#upload-file-with-act)\n  - [Download file with ACT](#download-file-with-act)\n  - [Create grantees list](#create-grantees-list)\n  - [Get grantees list](#get-grantees-list)\n  - [Patch grantees list](#patch-grantees-list)\n- [Description](#description)\n  - [Installation](#installation)\n    - [From npm](#from-npm)\n    - [From source](#from-source)\n  - [Usage](#usage)\n  - [Commands](#commands)\n  - [Example usage](#example-usage)\n  - [Usability Features](#usability-features)\n    - [Uploading Files, Folders, Websites, and Arbitrary Data from stdin](#uploading-files--folders--websites--and-arbitrary-data-from-stdin)\n      - [Files](#files)\n      - [Folders and Websites](#folders-and-websites)\n      - [Standard Input](#standard-input)\n    - [Custom HTTP Headers](#custom-http-headers)\n    - [Autocomplete](#autocomplete)\n    - [Numerical Separator and Units](#numerical-separator-and-units)\n    - [Stamp Picker](#stamp-picker)\n    - [Identity Picker](#identity-picker)\n    - [Human Readable Topics](#human-readable-topics)\n    - [Manifest address scheme](#manifest-address-scheme)\n    - [Automating tasks with Swarm-CLI](#automating-tasks-with-swarm-cli)\n      - [Connectivity](#connectivity)\n      - [Postage Stamps](#postage-stamps)\n      - [Uploading](#uploading)\n  - [Config](#config)\n  - [Assignment priority](#assignment-priority)\n  - [System environment](#system-environment)\n- [Development](#development)\n- [Contribute](#contribute)\n- [Maintainers](#maintainers)\n- [License](#license)\n\n# Demo\n\n## Purchasing a Postage Stamp\n\n![Swarm CLI Stamp Buy Command](./docs/stamp-buy.gif)\n\n## Uploading a File\n\n![Swarm CLI Upload Command](./docs/upload.gif)\n\n## Creating an Identity\n\n![Swarm CLI Identity Create Command](./docs/identity-create.gif)\n\n## Uploading to a Feed\n\n![Swarm CLI Feed Upload Command](./docs/feed-upload.gif)\n\n## Upload a file with ACT\n\n```sh\nswarm-cli upload \u003cfile\u003e --act --stamp \u003cpostage_batch_id\u003e\n```\n\n## Download a file with ACT\n\n```sh\nswarm-cli download \u003cswarm_hash\u003e \u003cfile\u003e --act --act-history-address \u003cswarm_history_address\u003e --act-publisher \u003cpublic_key\u003e\n```\n\n## Create a grantees list\n\n```sh\nswarm-cli grantee create grantees.json --stamp \u003cpostage_batch_id\u003e\n```\n\n`grantees.json`:\n\n```json\n{ \"grantees\": [\n    \"02ceff1422a7026ba54ad89967d81f2805a55eb3d05f64eb5c49ea6024212b12e8\",\n    \"02ceff1422a7026ba54ad89967d81f2805a55eb3d05f64eb5c49ea6024212b12e9\",\n    \"02ceff1422a7026ba54ad89967d81f2805a55eb3d05f64eb5c49ea6024212b12ee\"\n]\n}\n```\n\n## Get a grantees list\n\n```sh\nswarm-cli grantee get \u003cgrantee_reference\u003e\n```\n\n## Patch a grantees list\n\n```sh\nswarm-cli  grantee patch grantees-patch.json \\\n    --reference \u003cgrantee_reference\u003e \\\n    --history \u003cgrantee_history_reference\u003e \\\n    --stamp \u003cpostage_batch_id\u003e\n```\n\n`grantees-patch.json`:\n\n```json\n{\n    \"add\": [\n        \"02ceff1422a7026ba54ad89967d81f2805a55eb3d05f64eb5c49ea6024212b12e7\"\n    ],\n    \"revoke\": [\n        \"02ceff1422a7026ba54ad89967d81f2805a55eb3d05f64eb5c49ea6024212b12e9\",\n        \"02ceff1422a7026ba54ad89967d81f2805a55eb3d05f64eb5c49ea6024212b12ee\"\n    ]\n}\n```\n\n# Description\n\n\u003e Manage your Bee node and interact with the Swarm network via the CLI\n\nThe goal of this project is to handle most of the Swarm operations through CLI at some point in the future.\n\nFor the currently supported operations, see the [Commands](#commands) section.\n\n## Installation\n\nRequires Node.js 18 or higher. It is recommended to use [NVM](https://github.com/nvm-sh/nvm) to manage Node.js versions.\n\n\u003e Warning! Installing Node.js via package managers (e.g. `apt`, `yum`, `brew`) may not work as expected, as they may\n\u003e install an older version of Node.js.\n\n### From npm\n\nInstall globally:\n\n```sh\nnpm install --global @ethersphere/swarm-cli\n```\n\n### From source\n\nSee the [Development](#development) section.\n\n## Usage\n\nThe general usage is to provide a command, optionally a subcommand, then arguments and options.\n\n`swarm-cli command [subcommand] \u003carguments\u003e [options]`\n\nRunning a command with the `--help` option prints out the usage of a command.\n\n## Commands\n\nRunning `swarm-cli` without arguments prints the available commands:\n\n```\nSwarm CLI 2.11.0 - Manage your Bee node and interact with the Swarm network via the CLI\n\n█ Usage:\n\nswarm-cli COMMAND [OPTIONS]\n\n█ Available Groups:\n\npinning    Pin, unpin and check pinned chunks\nidentity   Import, export and manage keypairs, identities\nfeed       Upload, update and view feeds\ncheque     Deposit, withdraw and manage cheques\nstamp      Buy, list and show postage stamps\npss        Send, receive, or subscribe to PSS messages\nmanifest   Operate on manifests\nutility    Utility commands for managing wallets\ngrantee    Create, Get, Patch grantee list\n\nRun 'swarm-cli GROUP --help' to see available commands in a group\n\n█ Available Commands:\n\nupload      Upload file to Swarm\ndownload    Download arbitrary Swarm hash\nhash        Print the Swarm hash of a file\nstatus      Check Bee status\naddresses   Display the addresses of the Bee node\nstake       Manages nodes stake\n\nRun 'swarm-cli COMMAND --help' for more information on a command\n```\n\n## Example usage\n\nLet's say we want to upload our website to Swarm and update a feed to point to the newest version. For updating a feed\nwe would need to sign it with an Ethereum key, so first we need to create one with the `identity create` command:\n\n```\nswarm-cli identity create\n```\n\nThis command will ask for a password. After that a new identity is created (named `main`). Now we can use this identity\nto sign updates. It's also possible to import and export Ethereum JSON V3 format identities that works with other apps\n(e.g. wallets).\n\nAnother requirement for uploading to the Swarm network is a valid postage batch, also called a postage stamp or simply a\nstamp. Stamps need to be purchased with xBZZ tokens. We can use the `stamp buy` command to take care of this step. The\n`--amount` and `--depth` options alter the capacity of the postage stamp. For example, running\n`stamp buy --amount 1 --depth 20` will get back with a Stamp ID after a while. We will be using that with the `--stamp`\noption in commands which upload files, or write feeds.\n\nFor uploading to a feed we can use the `feed upload` command. It expects the path of the folder (or file) we want to\nupload and as options it expects `identity` to be provided along with the `password` that belongs to it, as well as the\nearlier mentioned `stamp`.\n\n```\nswarm-cli feed upload path-to-be-uploaded --identity my-identity --password my-secret-password --stamp stamp-id\n```\n\nIn this example we are uploading the content of the `dist` folder. If the uploading was successful the last printed line\nwill contain a `Feed Manifest URL`. This URL can be opened in the browser. If the uploaded folder contains an\n`index.html` file then it will be automatically displayed when visiting the URL.\n\nThis URL will stay the same when we upload an updated version of the website. Because of this we can also put this URL\ninto a reverse proxy configuration or use the reference (the hex string after the `/bzz/`) in an ENS record. There is\nmore information about that in the\n[Bee documentation](https://docs.ethswarm.org/docs/getting-started/host-your-website-using-ens). The uploaded content\ncan be found on the link in the line starting with `URL`. This will change every time the content is modified.\n\n## Usability Features\n\n### Uploading Files, Folders, Websites, and Arbitrary Data from stdin\n\n#### Files\n\nUse `swarm-cli` to upload a single file:\n\n```\nswarm-cli upload README.md\n```\n\nThe command above will print a `/bzz` URL that may be opened in the browser. If the browser is able to handle the file\nformat then the file is displayed, otherwise it will be offered to be downloaded.\n\n#### Folders and Websites\n\n`swarm-cli` also supports uploading folders with the same `upload` command:\n\n```\nswarm-cli upload build/\n```\n\nThis also yields a `/bzz` URL. If there is an `index.html` present in the root of the folder, `--index-document` will be\nautomatically applied by `swarm-cli`. This option sets which file the browser should open for an empty path. You may\nalso freely set `--index-document` during upload to change this.\n\n#### Standard Input\n\nYou can pipe data from other commands to `swarm-cli` using the `--stdin` option.\n\n```\ncurl -L https://picsum.photos/200 | swarm-cli --stdin --stamp [...]\n```\n\nUnlike other upload methods, this results in a `/bytes` URL, which cannot be displayed by browsers normally. You can\nstill share your hash and others can download it. However, with the `--name` option, you can give your arbitrary data a\nfile name, and `swarm-cli` will attempt to determine the suitable content type for your data. Given it is successful,\n`swarm-cli` will print a `/bzz` URL instead of the `/bytes` URL, which is good to be displayed in browsers. Example:\n\n```\ncurl -L https://picsum.photos/200 | swarm-cli --stdin --stamp [...] --name random.jpg\n```\n\nThere is also a `--content-type` option if you want to adjust it manually:\n\n```\ncurl -L https://picsum.photos/200 | swarm-cli --stdin --stamp [...] --name random --content-type image/jpeg\n```\n\nPlease note that stdin is reserved for the data you are uploading, so interactive features are disabled during this\ntime. Because of that, `--stamp` must be passed beforehand. You may create an alias for grabbing the ID of the least\nused postage stamp:\n\n```\nalias st='swarm-cli stamp list --least-used --limit 1 --hide-usage --quiet'\n```\n\nLeveraging the alias above, you can use a shortcut for uploading from stdin:\n\n```\ncurl -L https://picsum.photos/200 | swarm-cli --stdin --stamp $(st)\n```\n\n### Custom HTTP Headers\n\nSimilarly to `curl`, you may use the `--header` or `-H` option to specify as many additional headers as you want, which\nwill be sent with all requests:\n\n```\nswarm-cli upload README.md -H \"Authorization: [...]\" -H \"X-Custom-Header: Your Value\"\n```\n\n### Autocomplete\n\n`swarm-cli` has support for autocomplete in `bash`, `zsh` and `fish`. This turns on `\u003ctab\u003e\u003ctab\u003e` suggestions which can\ncomplete commands, paths and options for you.\n\nTo enable it, you need to install it once via two options:\n\n- Running `swarm-cli --generate-completion` and following the instructions there\n- Running `swarm-cli --install-completion` which automatically appends the completion script to your configuration file\n\n| Shell  | Completion System                                 | Configuration Path                      |\n| ------ | ------------------------------------------------- | --------------------------------------- |\n| `bash` | `compdef` \u0026 `compadd` OR `complete` \u0026 `COMPREPLY` | `$HOME/.bashrc` \u0026 `$HOME/.bash_profile` |\n| `zsh`  | `compdef` \u0026 `compadd` OR `complete` \u0026 `COMPREPLY` | `$HOME/.zshrc`                          |\n| `fish` | `complete`                                        | `$HOME/.config/fish/config.fish`        |\n\n\u003e Warning! If you start a subshell (e.g. running `bash` from `zsh`), your `SHELL` env variable would still be the old\n\u003e value! The generation and completion script cannot detect your shell accurately in that case, so please set `SHELL`\n\u003e manually. It is generally advised to run `--generate-completion` first to ensure the shell and the paths are properly\n\u003e detected.\n\nExample:\n\n```\n$ SHELL=zsh\n$ swarm-cli --generate-completion\nYour shell is: zsh\nFound configuration file path: /Users/Swarm/.zshrc\n\nAppend the completion script below to your configuration file to enable autocomplete.\nYou need to source your configuration, or restart your shell, to load the changes.\n\n\u003cscript\u003e\n```\n\n### Numerical Separator and Units\n\nAs most of the units are specified in wei and PLUR - the smallest denominations of currencies - they are a bit difficult\nto write out.\n\nTo aid this, you may use underscores (`_`) and `K`, `M`, `B` and `T` units to make your numbers more comprehensible.\n\nExample:\n\n```\nswarm-cli stamp buy --amount 10M --depth 17 --gas-price 10_000_000_000_000\n```\n\nYou may combine the two: `100_000T`.\n\n### Stamp Picker\n\nUnless you are running in `--quiet` mode, some options are not hard-required.\n\nLook for hints in the `--help` sections. Take the `upload` command for example:\n\n```\n█ Required Options:\n\n   --stamp   ID of the postage stamp to use  [required when quiet][string]\n```\n\nThat means, you don't have to provide the postage stamp ID beforehand. Simply running `swarm-cli upload \u003cpath\u003e` will\nprompt you with an interactive stamp picker:\n\n```\n? Please select a stamp for this action.\n\n  Stamp ID                                                         Utilization\n (Use arrow keys)\n❯ b9d5bb548c2c209cb99cbb27b0bef59b8f0cd3558363e307f45177b5a64ad0c8 (1)\n```\n\n### Identity Picker\n\nSimilarly to Stamp Picker, when an identity is not provided, an interactive picker will be prompted.\n\nTake the command `feed upload` for example. Albeit it takes quite a lot of options, you can run it with typing as little\nas `feed upload \u003cpath\u003e`.\n\n`swarm-cli` will take you through some prompts to interactively specify all required options, such as `identity`,\n`password` of the identity, and the mandatory `stamp`.\n\nPassing identities is also tolerant to errors, so if you provide one which does not exist, the output will tell you and\nyou can correct it:\n\n```\nThe provided identity does not exist. Please select one that exists.\n? Please select an identity for this action (Use arrow keys)\n❯ main\n```\n\n### Human Readable Topics\n\nYou may need to pass topics on multiple occasions - for example, when uploading to feeds.\n\nTopics are 32-byte long identifiers, so you need 64 characters to write them out in hexadecimal string format.\n\nYou can do that with the `--topic` or `-t` option, or alternatively take a shortcut and use a human readable string\nwhich will be hashed by `swarm-cli` for your convenience. It is available via the `--topic-string` or `-T` option.\n\nExample:\n\n```\nswarm-cli feed upload [...] -T \"Awesome Swarm Website\"\n```\n\nThis is also indicated in the `--help` section:\n\n```\n-t --topic         32-byte long identifier in hexadecimal format    [hex-string][default all zeroes]\n-T --topic-string  Construct the topic from human readable strings                          [string]\n\nOnly one is required: [topic] or [topic-string]\n```\n\n### Manifest address scheme\n\nThe `manifest` commands enable low-level operation on manifests. These always require a root manifest reference (hash)\nargument as the input. Some commands, however, work with subparts of the manifest. A few examples are: downloading only\na folder from a manifest, listing files only under a specific path in a manifest, and adding files or folders not to the\nroot of the manifest, but under some path.\n\nThese can be achieved by using the `bzz://\u003chash\u003e/\u003cpath\u003e` scheme in the `\u003caddress\u003e` argument as follows:\n\nList entries under the `/command/pss` prefix in manifest\n`1512546a3f4d0fea9f35fa1177486bdfe2bc2536917ad5012ee749604a7b425f`\n\n```\nswarm-cli manifest list bzz://1512546a3f4d0fea9f35fa1177486bdfe2bc2536917ad5012ee749604a7b425f/command/pss\n```\n\nDownload `README.md` from manifest `1512546a3f4d0fea9f35fa1177486bdfe2bc2536917ad5012ee749604a7b425f`\n\n```\nswarm-cli manifest download bzz://1512546a3f4d0fea9f35fa1177486bdfe2bc2536917ad5012ee749604a7b425f/README.md\n```\n\n\u003e Note: The `bzz://` protocol can be omitted.\n\n### Automating tasks with Swarm-CLI\n\nRunning `swarm-cli` with the flag `--quiet` (or `-q` for short) disables all interactive features, and makes commands\nprint information in an easily parsable format. The exit code also indicates whether running the command was successful\nor not. These may be useful for automating tasks both in CI environments and in your terminal too.\n\nBelow you will find a few snippets to give an idea how it can be used to compose tasks.\n\n#### Connectivity\n\nExit if not all status checks succeed:\n\n```\nswarm-cli status -q || exit 1\n```\n\nCheck Bee API connection, compatibility does not matter:\n\n```\nswarm-cli status -q | head -n 1 | grep \"^OK\"\n```\n\n#### Postage Stamps\n\nGrab the first postage stamp:\n\n```\nswarm-cli stamp list --limit 1 --quiet --hide-usage\n```\n\nGrab the least used postage stamp:\n\n```\nswarm-cli stamp list --limit 1 --quiet --hide-usage --least-used\n```\n\nList all postage stamps with zero utilization:\n\n```\nswarm-cli stamp list --max-usage 0 --quiet --hide-usage\n```\n\nSort postage stamps based on utilization (least utilized comes first):\n\n```\nswarm-cli stamp list --least-used --quiet\n```\n\n#### Uploading\n\nUpload a file with the least utilized postage stamp (that has at most 50% usage):\n\n```\nSTAMP=$(swarm-cli stamp list --max-usage 50 --least-used --limit 1 --quiet --hide-usage)\nswarm-cli upload -q README.md --stamp $STAMP\n```\n\n## Config\n\nThe configuration file is placed in a hidden folder named `swarm-cli`.\n\nIn case of Unix-based systems this config path will be: `$HOME/.swarm-cli`\n\nOn Windows systems: `$HOME\\AppData\\swarm-cli`\n\nThe configuration file is saved with `600` file permission.\n\nOn first run, this configuration will be generated with default values, that you are able to change on your demand under\nthe before mentioned path.\n\n## Assignment priority\n\nIt is possible to set value of particular parameters in different ways.\n\nThe assignment priority of how option gets its value in question is the following:\n\n1. passed CLI option value (with e.g. `--option-example-1`)\n2. env variable for that option in form of either `OPTION_EXAMPLE_1` or `SWARM_CLI_OPTION_EXAMPLE_1` (if it is\n   available)\n3. CLI configuration value of that option (if it is available)\n4. option's default fallback value (or it is required to define by #1)\n\n## System environment\n\nWith specific system environment variables you can alter the behaviour of the CLI\n\n- `BEE_API_URL` - API URL of Bee client\n- `SWARM_CLI_CONFIG_FOLDER` - full path to a configuration folder\n- `SWARM_CLI_CONFIG_FILE` - configuration file name, defaults to config.json\n\n# Development\n\nAfter the project has been cloned, the dependencies must be installed. Run the following in the project folder:\n\n```sh\n $ npm install\n```\n\nThen you need to compile the TypeScript code:\n\n```sh\n $ npm run build\n```\n\nTo make the local `swarm-cli` files in the `dist/` directory available as a global package:\n\n```sh\n $ npm link\n```\n\nIf all went well you should be able to run `swarm-cli`.\n\nIf `npm link` fails, or you don't want to install anything, then you can use `node dist/src/index.js` to run `swarm-cli`\nfrom the checked out directory.\n\n# Contribute\n\nThere are some ways you can make this module better:\n\n- Consult our [open issues](https://github.com/ethersphere/swarm-cli/issues) and take on one of them\n- Help our tests reach 100% coverage!\n\n# Maintainers\n\n- [Cafe137](https://github.com/Cafe137)\n\nSee what \"Maintainer\" means [here](https://github.com/ethersphere/repo-maintainer).\n\n# License\n\n[BSD-3-Clause](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethersphere%2Fswarm-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethersphere%2Fswarm-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethersphere%2Fswarm-cli/lists"}