{"id":13626467,"url":"https://github.com/tuzig/terminal7","last_synced_at":"2026-01-27T05:33:43.149Z","repository":{"id":40428582,"uuid":"256925027","full_name":"tuzig/terminal7","owner":"tuzig","description":"A Multi Platform Terminal Emulator \u0026 Multiplexer Running over WebRTC with Touch First UI","archived":false,"fork":false,"pushed_at":"2025-01-22T06:23:26.000Z","size":44461,"stargazers_count":168,"open_issues_count":40,"forks_count":22,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-16T19:33:03.897Z","etag":null,"topics":["hacktoberfest","remote","terminal-emulator","webrtc"],"latest_commit_sha":null,"homepage":"https://terminal7.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tuzig.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2020-04-19T05:51:39.000Z","updated_at":"2024-12-24T15:57:16.000Z","dependencies_parsed_at":"2023-02-18T23:30:59.645Z","dependency_job_id":"c33e8a1a-5ed3-40b5-a3db-d7c43a213f0f","html_url":"https://github.com/tuzig/terminal7","commit_stats":null,"previous_names":[],"tags_count":72,"template":false,"template_full_name":null,"purl":"pkg:github/tuzig/terminal7","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuzig%2Fterminal7","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuzig%2Fterminal7/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuzig%2Fterminal7/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuzig%2Fterminal7/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tuzig","download_url":"https://codeload.github.com/tuzig/terminal7/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuzig%2Fterminal7/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28804074,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T03:44:14.111Z","status":"ssl_error","status_checked_at":"2026-01-27T03:43:33.507Z","response_time":168,"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":["hacktoberfest","remote","terminal-emulator","webrtc"],"created_at":"2024-08-01T21:02:19.707Z","updated_at":"2026-01-27T05:33:43.131Z","avatar_url":"https://github.com/tuzig.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# Terminal7 - A touchable terminal multiplexer running over WebRTC\n\n\u003cimg width=\"1559\" alt=\"Screen Shot 2022-01-06 at 22 31 04\"\nsrc=\"https://user-images.githubusercontent.com/36852/148447779-959c7c92-d542-4737-9161-bfe009dc746a.png\"\u003e  \n\n![Tests](https://github.com/tuzig/terminal7/actions/workflows/validate.yml/badge.svg)\n![License](https://img.shields.io/badge/license-GPL-green)\n![Platform](https://img.shields.io/badge/platform-web-blue)\n![Languages](https://img.shields.io/github/languages/top/tuzig/terminal7)\n![Closed\nIssue](https://img.shields.io/github/issues-closed/tuzig/terminal7?color=A0A0A0)\n![Open Issues](https://img.shields.io/github/issues/tuzig/terminal7)\n\nTerminal7 is a terminal that includes a terminal multiplexer made for modern\nweb clients and real time communications over WebRTC. \nA reincaranation of screen and tmux, Terminal7 is a hybrid\napp that designed for smart clients.\n\nThe code here is in vanilla TypeSctipt, relying chiefly on the following projects:\n\n- CapacitorJS for app packaging \u0026 plugins\n- Xterm.js for terminal emulation\n- noble-ed25519 for key generation\n- pion.ly for the WebRTC backend\n- Vite for packaging\n- Vitest for testing\n- Docker compose for acceptance tests\n- Playwright for end-to-end tests\n- MailHog for an SMRP test double\n\nFor networking on native clients, we support SSH as a fallback.\nOn the web, only WebRTC servers are supported.\nOur WebRTC server is writtten in go and is based on \n[pion/webrtc](https://github.com/pion/webrtc).\nIt supports both direct and relayed connections, and can be used with or without a TURN server.\n\nIf you're having problems with your first connection, please refer to our \n[troubleshooting guide](https://github.com/tuzig/terminal7/blob/master/docs/troubleshooting.md).\n\n## Installation\nFor web platforms, Terminal7 is packaged as a Progressive Web App (PWA) and can be installed from the browser.\nClick [here](https://pwa.terminal7.dev) for the latest version.\n\nFor tablers, you can get Terminal7 for free from the \n[App Store](https://apps.apple.com/il/app/terminal7/id1532882447) or\n[Google Play](https://play.google.com/store/apps/details?id=dev.terminal).\n\n## Installing the server\n\nTo connect from the browser you'll need the [webexec](https://github.com/tuzig/webexec) agent running.\nwebexec is an\nopen source WebRTC server written in go and based on [pion](https://pion.ly).\nTerminal7 should offer to install it for you, but if it doesn't,\nopen TWR and run `install` to ensure your agent is up.\n\nIf you that doesn't work you can install webexec using go:\n\n```console\ngo install github.com/tuzig/webexec@latest\nwebexec start\n```\n\nIf you don't have go, you can use our line installer to download the binary for your system and start it:\n\n```console\n  bash \u003c(curl -sL https://get.webexec.sh)\n```\n\nwebexec will start an HTTP WHIP server on port 7777, waiting for the client to connect.\nIf pperbook user is set, webexec will also connect to peerbook.io so it can accept connections\neven when behind-the-NAT.\n\nwebexec's CLI has a growing set of commands, use `webexec` to get help on the current set.\n\n## Clipboard integration\n\nTerminal7 has a clipboard integration that works over WebRTC.\nFrom the CLI you can:\n\n- `webexec copy \u003c FILE` to get the file into the client's clipboard\n- `webexec paste` to print rhe client's clipboard to stdout\n\nIf no peer are actives, e.g. you're using a classic terminal, webexec will look for the tools:\n\n- pbcopy, pbpaste on MacOS\n- xclip, xsel on Linux\n\nneovim integration will let you use use the `+` and `*` named buffer \nto copy to and from the clipboard. Just 12 lines in your init.lua:\n\n```lua\n    vim.g.clipboard = {\n        name = 'webexec',\n        copy = {\n            [\"+\"] = {'webexec', 'copy'},\n            [\"*\"] = {'webexec', 'copy'},\n        },\n        paste = {\n            [\"+\"] = {'webexec', 'paste'},\n            [\"*\"] = {'webexec', 'paste'},\n        },\n        cache_enabled = true,\n    }\n```\n\nWhen webexec is not install, neovim will try the default clipboard tools like xclip or pbcopy.\n\n## Contributing\n\nWe are looking for contributors to help us improve Terminal7.\nPlease read our [contributing guide](./CONTRIBUTING.md) before rolling your sleeves.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftuzig%2Fterminal7","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftuzig%2Fterminal7","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftuzig%2Fterminal7/lists"}