{"id":20115236,"url":"https://github.com/fubarnetes/webterm","last_synced_at":"2025-05-06T13:32:40.994Z","repository":{"id":48312466,"uuid":"164039212","full_name":"fubarnetes/webterm","owner":"fubarnetes","description":"web terminal based on xterm.js in rust","archived":false,"fork":false,"pushed_at":"2022-07-26T10:23:46.000Z","size":732,"stargazers_count":49,"open_issues_count":16,"forks_count":10,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-14T06:41:04.211Z","etag":null,"topics":["library","rust","webterminal","xterm","xterm-js"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fubarnetes.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":"2019-01-04T00:58:23.000Z","updated_at":"2024-10-04T11:11:46.000Z","dependencies_parsed_at":"2022-08-30T20:01:27.687Z","dependency_job_id":null,"html_url":"https://github.com/fubarnetes/webterm","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fubarnetes%2Fwebterm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fubarnetes%2Fwebterm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fubarnetes%2Fwebterm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fubarnetes%2Fwebterm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fubarnetes","download_url":"https://codeload.github.com/fubarnetes/webterm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224505128,"owners_count":17322536,"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":["library","rust","webterminal","xterm","xterm-js"],"created_at":"2024-11-13T18:34:23.294Z","updated_at":"2024-11-13T18:34:23.902Z","avatar_url":"https://github.com/fubarnetes.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# webterm\nweb terminal based on xterm.js in rust\n\n![Screenshot](screenshots/screenshot.png)\n\n# Is it any good?\n[Yes.](https://news.ycombinator.com/item?id=3067434)\n\n# How does it work?\n\nThere is a rust backend based [Actix], consisting of two actors:\n* `Websocket` implements a websocket that speaks the [Terminado] protocol\n* `Terminal` handles communication to a child spawned on a PTY using [tokio-pty-process].\n\nThe frontend is a static HTML page served by [actix-web][Actix] providing an [xterm.js] UI.\n\n[Actix]: https://actix.rs\n[Terminado]: https://github.com/jupyter/terminado\n[tokio-pty-process]: https://crates.io/crates/tokio-pty-process\n[xterm.js]: https://xtermjs.org/\n\n# Local development\n```\ncargo build\ncargo run\n```\nThen head to `http://localhost:8080/` to see it in action!\n\n# Should I run this on the internet?\n\nProbably not. It lets anyone who can access the webpage control your system.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffubarnetes%2Fwebterm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffubarnetes%2Fwebterm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffubarnetes%2Fwebterm/lists"}