{"id":24193317,"url":"https://github.com/spectre10/fs-cli","last_synced_at":"2026-04-06T06:31:26.880Z","repository":{"id":169550927,"uuid":"645060317","full_name":"spectre10/fs-cli","owner":"spectre10","description":"WebRTC based P2P multi-threaded filesharing CLI app written in Golang.","archived":false,"fork":false,"pushed_at":"2025-12-26T21:30:45.000Z","size":175,"stargazers_count":45,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-02T13:56:16.949Z","etag":null,"topics":["cli","cli-app","cobra-cli","file-sharing","go","golang","hacktoberfest","multithreading","p2p","p2pshare","peer-to-peer","webrtc"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spectre10.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}},"created_at":"2023-05-24T20:48:03.000Z","updated_at":"2025-12-26T21:30:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"5fb593ab-ed26-49f2-ab2a-74dd8b42efea","html_url":"https://github.com/spectre10/fs-cli","commit_stats":null,"previous_names":["spectre10/fileshare-cli","spectre10/fs-cli"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/spectre10/fs-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spectre10%2Ffs-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spectre10%2Ffs-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spectre10%2Ffs-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spectre10%2Ffs-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spectre10","download_url":"https://codeload.github.com/spectre10/fs-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spectre10%2Ffs-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31463011,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"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":["cli","cli-app","cobra-cli","file-sharing","go","golang","hacktoberfest","multithreading","p2p","p2pshare","peer-to-peer","webrtc"],"created_at":"2025-01-13T17:24:13.167Z","updated_at":"2026-04-06T06:31:26.865Z","avatar_url":"https://github.com/spectre10.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Go Reference](https://pkg.go.dev/badge/github.com/spectre10/fs-cli.svg)](https://pkg.go.dev/github.com/spectre10/fs-cli)\n[![Go Report Card](https://goreportcard.com/badge/github.com/spectre10/fileshare-cli)](https://goreportcard.com/report/github.com/spectre10/fileshare-cli)\n\n\n# fs-cli\n\nfs-cli is multi-threaded CLI app written in Golang to transfer multiple files concurrently via WebRTC.\n\nIt is peer-to-peer (P2P), so there are no servers in middle. However, Google's STUN server is used to retrieve information about public address and the type of NAT clients are behind. (Transfer of files does not happen through Google servers.)\n\nThis information is used to setup a Peer Connection between clients. After connecting, each file is assigned a WebRTC Data-Channel for streaming. And the transfer happens concurrently over all Data-Channels. \n\nYou can also find your public IP address via WebRTC. (See Usage Below)\n\n\n\nhttps://github.com/spectre10/fs-cli/assets/72698233/fab8633b-af72-420c-9eff-3f91ada0eabc\n\n\n\nCurrently only tested on Linux.\n\n## Architecture\n\n![WebRTC](https://github.com/spectre10/fs-cli/assets/72698233/4c488af3-61e5-4e5f-9dc0-c5dfe528284e)\n\n\n## Installation\n\nIf you have Go installed, ([Install from here](https://go.dev/doc/install))\n\nAdd $GOPATH/bin to your $PATH. And then,\n\nif you want the latest release version, then run this command,\n```sh\ngo install github.com/spectre10/fs-cli@latest\n```\nor\n\nif you want a specific release version, then run this command,\n```sh\ngo install github.com/spectre10/fs-cli@vX.X.X\n```\n***\n\nAlternatively, you can also download from GitHub Releases.\n\n## Usage\n\nTo send a file,\n```\nfs-cli send \u003cfilepath1\u003e \u003cfilepath2\u003e ... \n```\n\nTo receive a file,\n```\nfs-cli receive\n```\n\nTo find your IP address,\n```\nfs-cli findip\n```\n\n## Future Steps\n\n* (**On-going**) Add a web UI which can be hosted locally. (Single Binary.)\n\n-----------------------------------\n## References\n* [pion/webrtc](https://github.com/pion/webrtc)\n* [Antonito/gfile](https://github.com/Antonito/gfile)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspectre10%2Ffs-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspectre10%2Ffs-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspectre10%2Ffs-cli/lists"}