{"id":13608386,"url":"https://github.com/emiago/sharef","last_synced_at":"2026-01-18T05:37:47.019Z","repository":{"id":48407010,"uuid":"279101494","full_name":"emiago/sharef","owner":"emiago","description":"Sharef command line tool for sending streaming files over webrtc","archived":false,"fork":false,"pushed_at":"2021-07-27T17:42:34.000Z","size":2464,"stargazers_count":17,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-10T05:05:27.561Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/emiago.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-07-12T16:15:39.000Z","updated_at":"2024-11-08T05:41:50.000Z","dependencies_parsed_at":"2022-09-19T09:50:12.143Z","dependency_job_id":null,"html_url":"https://github.com/emiago/sharef","commit_stats":null,"previous_names":["emiraganov/sharef"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emiago%2Fsharef","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emiago%2Fsharef/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emiago%2Fsharef/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emiago%2Fsharef/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emiago","download_url":"https://codeload.github.com/emiago/sharef/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248605055,"owners_count":21132101,"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":[],"created_at":"2024-08-01T19:01:26.862Z","updated_at":"2026-01-18T05:37:46.994Z","avatar_url":"https://github.com/emiago.png","language":"Go","readme":"# Sharef \n\nSharef is Command Line Tool for easy sharing files.  \nFocus is to have tool that can sync/stream securely file between two machines/containers easily. \nIt can help to avoid:\n- uploading files to webservice, just to download them on different machine \n- downloading file just to upload on different machine\n- making important files public\n\nIt uses WebRTC technology underneath.\nWebrtc makes encrypted and p2p communication which makes sharing files and streaming highly secure. There is no third-party dependency.\nIt is totally written in GO language using pion/webrtc library.\n\n\n### Features list:\n- Sending files \n- Sending directories\n- Sending multiple files in one command\n- Sending and streaming changes of file/directory from sender\n- Making connection once send files on the fly\n\n**NOTE:** It is experimental right now. Code should be improved.\n\n\n# Install\n\nFor now only linux users :)\n\n```\nsudo wget -P /usr/bin https://github.com/emiraganov/sharef/releases/download/v0.3/sharef\nsudo chmod +x /usr/bin/sharef\n```\n\n# Usage\n\nBefore file streaming can begin, SDP offer and answer must be exchanged. This encoded string\nwill establish **p2p** connection and it is unique for each session. \n\n## \u003e Send files/directories\n![SENDDEMO](docs/SharefSendDemo.gif)\n\n**Sender:**\n\n```\nsharef push file1 file2 dir1 dir2 ...\n```\n\n**Receiver:**\n\nYou just call pull in directory where you want to get files from sender.\n```\nsharef pull\n```\n\n\n\n## \u003e\u003e Keep Us Synced\n#### #DEMO\n\nYou can make sender to listen for file/dir changes after inital sending. Sender will listen for any changes under file/directory and automaticaly resend changed file. This will keep sender and receiver in sync.\nThis is useful if you are working on some directory and you want\nthose changes to be sent to receiver automatically.\n\n*Probably this will be improved but for now do not use this on large files*\n\n**Sender:**\n\n```\nsharef push -f file/dir\n```\n\n\n\n\n## \u003e|\u003e Make connection once and send on the fly\n\nAfter exchanching SDP, all sending will be done by deamon running in background.\n\n![SENDDEMO](docs/SharefDeamonDemo.gif)\n\n**Sender:**\n\nCalling this will deamonize sender\n```\nsharef push -d\n```\n\nAfter making connection with receiver, you send same as:\n```\nsharef push file\nsharef push dir\nsharef push file1 file2\n...\n```\n\nSharef will detect deamon is running and it will just tell deamon to do the job. \nDeamon is listening on 9876 port by default, using HTTP2 protocol.\nBE AWARE receiver will put everything in same directory where it is run.\n\n\n# Feedback \n\nAny feedback is welcome!\n\n# Contribute\n\nPrereqs\n- [Golang](https://golang.org/)\n- [proto-lens](https://google.github.io/proto-lens/)\n- [Go support for Protocol Buffers](https://github.com/golang/protobuf)\n\n\nBuilding sharef\n\n```\nmake //build sharef\nmake test //run unit tests\nmake integrationtest //run integration tests\n```\n\n# References\n\n- https://github.com/pion/webrtc\n- https://github.com/Antonito/gfile\n","funding_links":[],"categories":["DataChannel"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femiago%2Fsharef","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femiago%2Fsharef","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femiago%2Fsharef/lists"}