{"id":13392887,"url":"https://github.com/tsl0922/ttyd","last_synced_at":"2025-05-13T18:04:56.170Z","repository":{"id":37748795,"uuid":"68063511","full_name":"tsl0922/ttyd","owner":"tsl0922","description":"Share your terminal over the web","archived":false,"fork":false,"pushed_at":"2025-01-31T06:24:25.000Z","size":19991,"stargazers_count":9109,"open_issues_count":69,"forks_count":946,"subscribers_count":118,"default_branch":"main","last_synced_at":"2025-05-06T17:13:45.583Z","etag":null,"topics":["openwrt","ssl","terminal","terminal-emulators","tty","ttyd","websocket","websockets","xterm"],"latest_commit_sha":null,"homepage":"https://tsl0922.github.io/ttyd","language":"C","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/tsl0922.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"tsl0922","patreon":"tsl0922"}},"created_at":"2016-09-13T01:43:54.000Z","updated_at":"2025-05-06T15:05:06.000Z","dependencies_parsed_at":"2023-10-02T07:44:05.070Z","dependency_job_id":"76d75a0f-09a8-493f-8563-e0f1a74b5422","html_url":"https://github.com/tsl0922/ttyd","commit_stats":{"total_commits":864,"total_committers":65,"mean_commits":"13.292307692307693","dds":"0.37615740740740744","last_synced_commit":"40e79c706be14029b391f369bee6613c31667abb"},"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsl0922%2Fttyd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsl0922%2Fttyd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsl0922%2Fttyd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsl0922%2Fttyd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tsl0922","download_url":"https://codeload.github.com/tsl0922/ttyd/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254000824,"owners_count":21997441,"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":["openwrt","ssl","terminal","terminal-emulators","tty","ttyd","websocket","websockets","xterm"],"created_at":"2024-07-30T17:00:38.668Z","updated_at":"2025-05-13T18:04:56.111Z","avatar_url":"https://github.com/tsl0922.png","language":"C","readme":"![backend](https://github.com/tsl0922/ttyd/workflows/backend/badge.svg)\n![frontend](https://github.com/tsl0922/ttyd/workflows/frontend/badge.svg)\n[![GitHub Releases](https://img.shields.io/github/downloads/tsl0922/ttyd/total)](https://github.com/tsl0922/ttyd/releases)\n[![Docker Pulls](https://img.shields.io/docker/pulls/tsl0922/ttyd)](https://hub.docker.com/r/tsl0922/ttyd)\n[![Packaging status](https://repology.org/badge/tiny-repos/ttyd.svg)](https://repology.org/project/ttyd/versions)\n![GitHub](https://img.shields.io/github/license/tsl0922/ttyd)\n\n# ttyd - Share your terminal over the web\n\nttyd is a simple command-line tool for sharing terminal over the web.\n\n![screenshot](https://github.com/tsl0922/ttyd/raw/main/screenshot.gif)\n\n# Features\n\n- Built on top of [libuv](https://libuv.org) and [WebGL2](https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API) for speed\n- Fully-featured terminal with [CJK](https://en.wikipedia.org/wiki/CJK_characters) and IME support\n- [ZMODEM](https://en.wikipedia.org/wiki/ZMODEM) ([lrzsz](https://ohse.de/uwe/software/lrzsz.html)) / [trzsz](https://trzsz.github.io) file transfer support\n- [Sixel](https://en.wikipedia.org/wiki/Sixel) image output support ([img2sixel](https://saitoha.github.io/libsixel) / [lsix](https://github.com/hackerb9/lsix))\n- SSL support based on [OpenSSL](https://www.openssl.org) / [Mbed TLS](https://github.com/Mbed-TLS/mbedtls)\n- Run any custom command with options\n- Basic authentication support and many other custom options\n- Cross platform: macOS, Linux, FreeBSD/OpenBSD, [OpenWrt](https://openwrt.org), Windows\n\n\u003e ❤ Special thanks to [JetBrains](https://www.jetbrains.com/?from=ttyd) for sponsoring the opensource license to this project.\n\n# Installation\n\n## Install on macOS\n\n- Install with [Homebrew](http://brew.sh): `brew install ttyd`\n- Install with [MacPorts](https://www.macports.org): `sudo port install ttyd`\n\n## Install on Linux\n\n- Binary version (recommended): download from the [releases](https://github.com/tsl0922/ttyd/releases) page\n- Install with [Homebrew](https://docs.brew.sh/Homebrew-on-Linux) : `brew install ttyd`\n- Install the snap: `sudo snap install ttyd --classic`\n- Build from source (debian/ubuntu):\n    ```bash\n    sudo apt-get update\n    sudo apt-get install -y build-essential cmake git libjson-c-dev libwebsockets-dev\n    git clone https://github.com/tsl0922/ttyd.git\n    cd ttyd \u0026\u0026 mkdir build \u0026\u0026 cd build\n    cmake ..\n    make \u0026\u0026 sudo make install\n    ```\n    You may also need to compile/install [libwebsockets](https://libwebsockets.org) from source if the `libwebsockets-dev` package is outdated.\n- Install on OpenWrt: `opkg install ttyd`\n- Install on Gentoo: clone the [repo](https://bitbucket.org/mgpagano/ttyd/src/master) and follow the directions [here](https://wiki.gentoo.org/wiki/Custom_repository#Creating_a_local_repository).\n\n## Install on Windows\n\n- Binary version (recommended): download from the [releases](https://github.com/tsl0922/ttyd/releases) page\n- Install with [WinGet](https://github.com/microsoft/winget-cli): `winget install tsl0922.ttyd`\n- Install with [Scoop](https://scoop.sh/#/apps?q=ttyd\u0026s=2\u0026d=1\u0026o=true): `scoop install ttyd`\n- [Compile on Windows](https://github.com/tsl0922/ttyd/wiki/Compile-on-Windows)\n\n# Usage\n\n## Command-line Options\n\n```\nUSAGE:\n    ttyd [options] \u003ccommand\u003e [\u003carguments...\u003e]\n\nOPTIONS:\n    -p, --port              Port to listen (default: 7681, use `0` for random port)\n    -i, --interface         Network interface to bind (eg: eth0), or UNIX domain socket path (eg: /var/run/ttyd.sock)\n    -U, --socket-owner      User owner of the UNIX domain socket file, when enabled (eg: user:group)\n    -c, --credential        Credential for basic authentication (format: username:password)\n    -H, --auth-header       HTTP Header name for auth proxy, this will configure ttyd to let a HTTP reverse proxy handle authentication\n    -u, --uid               User id to run with\n    -g, --gid               Group id to run with\n    -s, --signal            Signal to send to the command when exit it (default: 1, SIGHUP)\n    -w, --cwd               Working directory to be set for the child program\n    -a, --url-arg           Allow client to send command line arguments in URL (eg: http://localhost:7681?arg=foo\u0026arg=bar)\n    -W, --writable          Allow clients to write to the TTY (readonly by default)\n    -t, --client-option     Send option to client (format: key=value), repeat to add more options\n    -T, --terminal-type     Terminal type to report, default: xterm-256color\n    -O, --check-origin      Do not allow websocket connection from different origin\n    -m, --max-clients       Maximum clients to support (default: 0, no limit)\n    -o, --once              Accept only one client and exit on disconnection\n    -q, --exit-no-conn      Exit on all clients disconnection\n    -B, --browser           Open terminal with the default system browser\n    -I, --index             Custom index.html path\n    -b, --base-path         Expected base path for requests coming from a reverse proxy (eg: /mounted/here, max length: 128)\n    -P, --ping-interval     Websocket ping interval(sec) (default: 5)\n    -6, --ipv6              Enable IPv6 support\n    -S, --ssl               Enable SSL\n    -C, --ssl-cert          SSL certificate file path\n    -K, --ssl-key           SSL key file path\n    -A, --ssl-ca            SSL CA file path for client certificate verification\n    -d, --debug             Set log level (default: 7)\n    -v, --version           Print the version and exit\n    -h, --help              Print this text and exit\n```\n\nRead the example usage on the [wiki](https://github.com/tsl0922/ttyd/wiki/Example-Usage).\n\n## Browser Support\n\nModern browsers, See [Browser Support](https://github.com/xtermjs/xterm.js#browser-support).\n\n## Alternatives\n\n* [Wetty](https://github.com/krishnasrinivas/wetty): [Node](https://nodejs.org) based web terminal (SSH/login)\n* [GoTTY](https://github.com/yudai/gotty): [Go](https://golang.org) based web terminal\n","funding_links":["https://github.com/sponsors/tsl0922","https://patreon.com/tsl0922"],"categories":["C","HarmonyOS","Tool","terminal","Tools","DevOps Utilities","1. language","websocket","\u003ca name=\"networking\"\u003e\u003c/a\u003eNetworking","Apps","\u003ca id=\"1d9dec1320a5d774dc8e0e7604edfcd3\"\u003e\u003c/a\u003e工具-新添加的"],"sub_categories":["Windows Manager","C","1.8 C","Alternatives to *SSH*","\u003ca id=\"8f1b9c5c2737493524809684b934d49a\"\u003e\u003c/a\u003e文章\u0026\u0026视频"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsl0922%2Fttyd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsl0922%2Fttyd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsl0922%2Fttyd/lists"}