{"id":34192168,"url":"https://github.com/ksdme/beam","last_synced_at":"2026-03-11T07:02:18.056Z","repository":{"id":264938468,"uuid":"894699949","full_name":"ksdme/beam","owner":"ksdme","description":"transfer pipes and files from one computer to another over ssh ","archived":false,"fork":false,"pushed_at":"2025-01-16T16:36:57.000Z","size":4651,"stargazers_count":134,"open_issues_count":2,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-18T16:15:27.239Z","etag":null,"topics":["golang","ssh","ssh-server","transfer-data","transfer-files"],"latest_commit_sha":null,"homepage":"","language":"Go","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/ksdme.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-11-26T20:34:24.000Z","updated_at":"2025-10-21T16:48:20.000Z","dependencies_parsed_at":"2025-01-04T20:31:57.784Z","dependency_job_id":null,"html_url":"https://github.com/ksdme/beam","commit_stats":null,"previous_names":["ksdme/beam"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/ksdme/beam","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ksdme%2Fbeam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ksdme%2Fbeam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ksdme%2Fbeam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ksdme%2Fbeam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ksdme","download_url":"https://codeload.github.com/ksdme/beam/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ksdme%2Fbeam/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30373509,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T06:09:32.197Z","status":"ssl_error","status_checked_at":"2026-03-11T06:09:17.086Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["golang","ssh","ssh-server","transfer-data","transfer-files"],"created_at":"2025-12-15T16:10:50.537Z","updated_at":"2026-03-11T07:02:18.051Z","avatar_url":"https://github.com/ksdme.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Beam\n\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./assets/mast.png\" width=\"100%\" height=\"auto\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    transfer pipes and files from one machine to another\n\u003c/p\u003e\n\n## What?\n\nBeam is essentially a special purpose SSH server. All it does is receive information on one connection and forwards it to another.\nThis allows you to use Beam as a simple broker for streams over SSH. You can use it to transfer pipes, files and more.\n\nBecause Beam is built on top of SSH unlike [wormhole](https://github.com/magic-wormhole/magic-wormhole) or [portal](https://github.com/SpatiumPortae/portal), \nit offers some advantages, including,\n\n- 🚀 No binary installation, all you need is an ssh client on both your machines\n- 📡 Support for transferring pipes, not just files\n- 🔒 Built in authentication\n\n\n## How does it work?\n\n\nOn the sender end, pipe your contents into beam using something like,\n\n```\necho hello | ssh beam.ssh.camp send\n```\n\nAnd, then, on the receiver end start reading the contents out using,\n\n```\nssh beam.ssh.camp receive --progress\n```\n\nBy default, Beam identifies your session using your public key. So, if you are using the same SSH keys on\nboth the sender and the receiver end, you do not need to use an explicit channel name. When the same key\nisn't available on both the machines, you can use a random channel name. You can do this using,\n\n```\necho hello | ssh beam.ssh.camp send --random-channel\n```\n\nFor example, here's a demo forwarding a log file from one _isolated_ machine to the other,\n\n\u003cvideo src=\"https://github.com/user-attachments/assets/6457ad1d-1bb7-4222-afc3-72b4fdbf2cc6\" width=\"100%\" height=\"auto\" muted\u003e\u003c/video\u003e\n\n\n\n## Caveats\n\n\n- SSH connections cannot be load balanced or geo-routed. So, unless you explicitly use the host closest to you,\nyou might notice low transfer rates. The public beam.ssh.camp server is hosted in Falkenstein, Germany on Hetzner.\n\n- Beam cannot support end-to-end encrypted buffers. While data is encrypted during transfer to and from the Beam\nhost, it’s decrypted temporarily before being re-encrypted and forwarded. The host only holds a small buffer\n(typically 1 kB) of unencrypted data at any time and never stores the full stream. For extra security, you\ncan encrypt your files or pipes before sending them through Beam.\n\n- Some programs or system configuration may cause output buffering, preventing data from being sent to the pipe and\nreaching the beam SSH connection until the source flushes its buffer. For example, Python buffers stdout output by default.\nTo avoid this, run Python with `python -u` or set `PYTHONUNBUFFERED=1`.\n\n\n## Self Hosting\n\n\nHosting a beam server is a simple and lightweight affair. It doesn't depend on any additional services. You can build a\nbinary of the server yourself, or, use the [docker image](https://hub.docker.com/repository/docker/ksdme/beam/general).\nYou can also find a docker compose configuration [here](./docker-compose.yml).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fksdme%2Fbeam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fksdme%2Fbeam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fksdme%2Fbeam/lists"}