{"id":19457209,"url":"https://github.com/bottlerocketlabs/pair","last_synced_at":"2025-10-07T11:21:59.904Z","repository":{"id":54979598,"uuid":"322959610","full_name":"bottlerocketlabs/pair","owner":"bottlerocketlabs","description":"A tool for remote pair programming in the terminal","archived":false,"fork":false,"pushed_at":"2021-02-22T14:42:19.000Z","size":156,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-10T20:05:31.001Z","etag":null,"topics":["pair-programming","remote","tmux"],"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/bottlerocketlabs.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":"2020-12-19T23:51:07.000Z","updated_at":"2021-02-22T14:41:32.000Z","dependencies_parsed_at":"2022-08-14T08:00:58.468Z","dependency_job_id":null,"html_url":"https://github.com/bottlerocketlabs/pair","commit_stats":null,"previous_names":["stuart-warren/pair"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/bottlerocketlabs/pair","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bottlerocketlabs%2Fpair","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bottlerocketlabs%2Fpair/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bottlerocketlabs%2Fpair/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bottlerocketlabs%2Fpair/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bottlerocketlabs","download_url":"https://codeload.github.com/bottlerocketlabs/pair/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bottlerocketlabs%2Fpair/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278763242,"owners_count":26041524,"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-10-07T02:00:06.786Z","response_time":59,"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":["pair-programming","remote","tmux"],"created_at":"2024-11-10T17:20:19.926Z","updated_at":"2025-10-07T11:21:59.873Z","avatar_url":"https://github.com/bottlerocketlabs.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pair\n\nA tool for sharing your terminal tmux session with others across the interwebs\n\nUseful for pair programming with terminal based editors (vim/emacs)\n\n2 parts\n\n* server for sharing webrtc session descriptions (instance hosted on heroku)\n* client for hosting/joining a session\n\nbased on work by https://github.com/maxmcd/webtty and https://github.com/nwtgck/go-piping-server\n\n[![Demo Video Screenshot](https://user-images.githubusercontent.com/3208285/103408914-60521a80-4b5c-11eb-82e7-d7564eca424b.png)](https://user-images.githubusercontent.com/3208285/103408760-d3a75c80-4b5b-11eb-8271-b0efcd5330ba.mp4)\n\n## Install\n\n### [Homebrew / Linuxbrew](https://brew.sh/)\n\nShould probably work within a [WSL2 terminal on Windows 10](https://docs.microsoft.com/en-us/windows/wsl/install-win10) also\n```\nbrew install tmux bottlerocketlabs/apps/pair\n```\n### Manually\n\nDownload `pair` binaries from [releases](https://github.com/bottlerocketlabs/pair/releases) and put on path, you need to also install `tmux` for your platform (apt-get etc)\n\n## How-To\n\n* client host must be started in a tmux session\n* client guest must not be started in a tmux session\n\nStart by hosting a session within tmux:\n```sh\n# host\n$ pair\n\nShare this command with your guest:\n  pair http://\u003csome url\u003e\n```\nInvite a guest by quickly supplying the command output above\n```sh\n# guest\n$ pair http://\u003curl from host\u003e\n```\n\n## Testing/Development\n\nOptionally setup a simple (insecure) local testing server and use it:\n```sh\n$ pair-server-simple -v \u0026\n$ pair -v -sdp http://localhost\n```\n\nSetup local testing server with [mkcert](https://mkcert.dev/):\n```sh\nmkcert -install\nmkdir -p certs\ncd certs\nmkcert localhost.dev\nmkcert localhost\nmkcert \u003csomeotherdomain\u003e\ncd ..\n# append '127.0.0.1 localhost.dev \u003csomeotherdomain\u003e' to /etc/hosts file\npair-server -v -domain localhost.dev\n```\n\nRun server in production with [acme](https://pkg.go.dev/golang.org/x/crypto/acme/autocert):\n```sh\n# ensure chosen domain is registered and can access public server on ports 80 and 443\nmkdir -p certs\npair-server -v -domain \u003cchosen-domain\u003e\n```\n\n## TODO\n* add more tests\n* run tmux and host pair within a development docker container to restrict access\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbottlerocketlabs%2Fpair","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbottlerocketlabs%2Fpair","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbottlerocketlabs%2Fpair/lists"}