{"id":20052309,"url":"https://github.com/qnkhuat/termishare","last_synced_at":"2025-08-26T08:07:09.506Z","repository":{"id":44674230,"uuid":"433462008","full_name":"qnkhuat/termishare","owner":"qnkhuat","description":"Peer to peer terminal sharing","archived":false,"fork":false,"pushed_at":"2022-03-13T18:55:39.000Z","size":444,"stargazers_count":35,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-23T10:33:47.356Z","etag":null,"topics":["peer-to-peer","sharing","terminal","terminal-sharing","webrtc"],"latest_commit_sha":null,"homepage":"https://termishare.com","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/qnkhuat.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}},"created_at":"2021-11-30T14:28:17.000Z","updated_at":"2024-12-12T16:40:01.000Z","dependencies_parsed_at":"2022-09-15T10:52:43.407Z","dependency_job_id":null,"html_url":"https://github.com/qnkhuat/termishare","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/qnkhuat/termishare","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qnkhuat%2Ftermishare","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qnkhuat%2Ftermishare/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qnkhuat%2Ftermishare/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qnkhuat%2Ftermishare/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qnkhuat","download_url":"https://codeload.github.com/qnkhuat/termishare/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qnkhuat%2Ftermishare/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272192669,"owners_count":24889452,"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-08-26T02:00:07.904Z","response_time":60,"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":["peer-to-peer","sharing","terminal","terminal-sharing","webrtc"],"created_at":"2024-11-13T12:17:05.876Z","updated_at":"2025-08-26T08:07:09.482Z","avatar_url":"https://github.com/qnkhuat.png","language":"Go","funding_links":[],"categories":["\u003ca name=\"networking\"\u003e\u003c/a\u003eNetworking"],"sub_categories":[],"readme":"# termishare\nPeer to peer terminal sharing\n\n![ezgif com-gif-maker-2](https://user-images.githubusercontent.com/25661381/150143689-778b4f02-8787-42e6-a5a1-03809b62c4f4.gif)\n\nThe motivation behind termishare is to provide a safe and fast way to access a remote terminal.\n\nIn order to achieve that, termishare uses a combination of WebSocket and WebRTC:\n- WebSocket - is used only for signaling - which is a process to establish WebRTC connection\n- [WebRTC](https://webrtc.org) - the primary connection to stream your terminal to other clients\n\n# Getting started\n\n## Install\n### Using brew\n`brew tap qnkhuat/tap \u0026\u0026 brew install termishare`\n\n### Using release\n\n1. Go to our [release](https://github.com/qnkhuat/termishare/releases) page and get a pre-built binary of `termishare`. Make sure you get the one that match your OS.\n2. Untar the package `tar -xzf termishare_x.y.z.tar.gz`\n3. (Optional) Move it to `/usr/local/bin` folder so that you could use `termishare` anywhere : `mv termishare /usr/local/bin`\n\n## Usage\n1. To start a sharing session, just run `termisnare`\n2. Termishare will echo out a connection url you can use to connect via:\n    - browser\n    - terminal with command :`termishare {{connection_url}}`\n\n### Note\nThere are chances where a direct peer-to-peer connection can't be established, so I included a TURN server that I created using [CoTURN](https://github.com/coturn/coturn).\n\nIf relay to the TURN server is something you don't want, you can:\n- Disable the usage of turn server (with `-no-turn` flag)\n- Creates your own TURN server connect to it by changing in [cfg/termishare.go](cli/internal/cfg/termishare.go) then re-compile termishare (sorry)\n\n## Self-hosted\nTermishare server is a jar file, it contains both the signaling server and the UI, so it's fairlly simple to self-host termishare:\n1. Install java\n2. Download `termishare.jar` from our [release](https://github.com/qnkhuat/termishare/releases) page\n3. Start it with `java -jar termishare.jar`, by default it'll start at `localhost:3000`. You can use `TERMISHARE_HOST` and `TERMISHARE_PORT` env to change the default values.\n4. Now you can connect to your server using termishare with `termishare -server localhost:3000`\n\n## Upcoming\n- [x] Move both the front-end and server to server as one\n- [x] Connect to termishare session via `termishare` itself, instead of web-client\n- [x] Install via brew/apt\n- [ ] Customize TURN server\n- [ ] Approval mechanism\n\n## Similar projects\n- https://github.com/elisescu/tty-share\n- https://github.com/tmate-io/tmate\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqnkhuat%2Ftermishare","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqnkhuat%2Ftermishare","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqnkhuat%2Ftermishare/lists"}