[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93775":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":9,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":14,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":15,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":16,"fork":16,"defaultBranch":17,"hasWiki":16,"hasPages":16,"topics":9,"createdAt":9,"pushedAt":9,"updatedAt":18,"readmeContent":19,"aiSummary":20,"trendingCount":14,"starSnapshotCount":14,"syncStatus":21,"lastSyncTime":9,"discoverSource":22},93775,"mosh","mobile-shell\u002Fmosh","mobile-shell","Mobile Shell",null,"https:\u002F\u002Fgithub.com\u002Fmobile-shell\u002Fmosh","C++",14227,843,0,65.78,false,"main","2026-09-21 04:01:26","[![ci](https:\u002F\u002Fgithub.com\u002Fmobile-shell\u002Fmosh\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fmobile-shell\u002Fmosh\u002Factions\u002Fworkflows\u002Fci.yml)\n\nMosh: the mobile shell\n======================\n\nMosh is a remote terminal application that supports intermittent\nconnectivity, allows roaming, and provides speculative local echo\nand line editing of user keystrokes.\n\nIt aims to support the typical interactive uses of SSH, plus:\n\n   * Mosh keeps the session alive if the client goes to sleep and\n     wakes up later, or temporarily loses its Internet connection.\n\n   * Mosh allows the client and server to \"roam\" and change IP\n     addresses, while keeping the connection alive. Unlike SSH, Mosh\n     can be used while switching between Wi-Fi networks or from Wi-Fi\n     to cellular data to wired Ethernet.\n\n   * The Mosh client runs a predictive model of the server's behavior\n     in the background and tries to guess intelligently how each\n     keystroke will affect the screen state. When it is confident in\n     its predictions, it will show them to the user while waiting for\n     confirmation from the server. Most typing and uses of the left-\n     and right-arrow keys can be echoed immediately.\n\n     As a result, Mosh is usable on high-latency links, e.g. on a\n     cellular data connection or spotty Wi-Fi. In distinction from\n     previous attempts at local echo modes in other protocols, Mosh\n     works properly with full-screen applications such as emacs, vi,\n     alpine, and irssi, and automatically recovers from occasional\n     prediction errors within an RTT. On high-latency links, Mosh\n     underlines its predictions while they are outstanding and removes\n     the underline when they are confirmed by the server.\n\nMosh does not support X forwarding or the non-interactive uses of SSH,\nincluding port forwarding.\n\nOther features\n--------------\n\n   * Mosh adjusts its frame rate so as not to fill up network queues\n     on slow links, so \"Control-C\" always works within an RTT to halt\n     a runaway process.\n\n   * Mosh warns the user when it has not heard from the server\n     in a while.\n\n   * Mosh supports lossy links that lose a significant fraction\n     of their packets.\n\n   * Mosh handles some Unicode edge cases better than SSH and existing\n     terminal emulators by themselves, but requires a UTF-8\n     environment to run.\n\n   * Mosh leverages SSH to set up the connection and authenticate\n     users. Mosh does not contain any privileged (root) code.\n\nGetting Mosh\n------------\n\n  [The Mosh web site](https:\u002F\u002Fmosh.org\u002F#getting) has information about\n  packages for many operating systems, as well as instructions for building\n  from source.\n\n  Note that `mosh-client` receives an AES session key as an environment\n  variable.  If you are porting Mosh to a new operating system, please make\n  sure that a running process's environment variables are not readable by other\n  users.  We have confirmed that this is the case on GNU\u002FLinux, OS X, and\n  FreeBSD.\n\nUsage\n-----\n\n  The `mosh-client` binary must exist on the user's machine, and the\n  `mosh-server` binary on the remote host.\n\n  The user runs:\n\n    $ mosh [user@]host\n\n  If the `mosh-client` or `mosh-server` binaries live outside the user's\n  `$PATH`, `mosh` accepts the arguments `--client=PATH` and `--server=PATH` to\n  select alternate locations. More options are documented in the mosh(1) manual\n  page.\n\n  There are [more examples](https:\u002F\u002Fmosh.org\u002F#usage) and a\n  [FAQ](https:\u002F\u002Fmosh.org\u002F#faq) on the Mosh web site.\n\nHow it works\n------------\n\n  The `mosh` program will SSH to `user@host` to establish the connection.\n  SSH may prompt the user for a password or use public-key\n  authentication to log in.\n\n  From this point, `mosh` runs the `mosh-server` process (as the user)\n  on the server machine. The server process listens on a high UDP port\n  and sends its port number and an AES-128 secret key back to the\n  client over SSH. The SSH connection is then shut down and the\n  terminal session begins over UDP.\n\n  If the client changes IP addresses, the server will begin sending\n  to the client on the new IP address within a few seconds.\n\n  To function, Mosh requires UDP datagrams to be passed between client\n  and server. By default, `mosh` uses a port number between 60000 and\n  61000, but the user can select a particular port with the -p option.\n  Please note that the -p option has no effect on the port used by SSH.\n\nAdvice to distributors\n----------------------\n\nA note on compiler flags: Mosh is security-sensitive code. When making\nautomated builds for a binary package, we recommend passing the option\n`--enable-compile-warnings=error` to `.\u002Fconfigure`. On GNU\u002FLinux with\n`g++` or `clang++`, the package should compile cleanly with\n`-Werror`. Please report a bug if it doesn't.\n\nWhere available, Mosh builds with a variety of binary hardening flags\nsuch as `-fstack-protector-all`, `-D_FORTIFY_SOURCE=2`, etc.  These\nprovide proactive security against the possibility of a memory\ncorruption bug in Mosh or one of the libraries it uses.  For a full\nlist of flags, search for `HARDEN` in `configure.ac`.  The `configure`\nscript detects which flags are supported by your compiler, and enables\nthem automatically.  To disable this detection, pass\n`--disable-hardening` to `.\u002Fconfigure`.  Please report a bug if you\nhave trouble with the default settings; we would like as many users as\npossible to be running a configuration as secure as possible.\n\nMosh ships with a default optimization setting of `-O2`. Some\ndistributors have asked about changing this to `-Os` (which causes a\ncompiler to prefer space optimizations to time optimizations). We have\nbenchmarked with the included `src\u002Fexamples\u002Fbenchmark` program to test\nthis. The results are that `-O2` is 40% faster than `-Os` with g++ 4.6\non GNU\u002FLinux, and 16% faster than `-Os` with clang++ 3.1 on Mac OS\nX. In both cases, `-Os` did produce a smaller binary (by up to 40%,\nsaving almost 200 kilobytes on disk). While Mosh is not especially CPU\nintensive and mostly sits idle when the user is not typing, we think\nthe results suggest that `-O2` (the default) is preferable.\n\nOur Debian and Fedora packaging presents Mosh as a single package.\nMosh has a Perl dependency that is only required for client use.  For\nsome platforms, it may make sense to have separate mosh-server and\nmosh-client packages to allow mosh-server usage without Perl.\n\nNotes for developers\n--------------------\n\nTo start contributing to Mosh, install the following dependencies:\n\nDebian, Windows Subsystem for Linux:\n\n```\n$ sudo apt install -y build-essential protobuf-compiler \\\n    libprotobuf-dev pkg-config libutempter-dev zlib1g-dev libncurses5-dev \\\n    libssl-dev bash-completion tmux less\n```\n\nFedora, RHEL:\n\n```\n$ sudo dnf group install development-tools\n$ sudo dnf install automake protobuf-compiler protobuf-devel libutempter-devel \\\n    zlib-ng-compat-devel ncurses-devel openssl-devel bash-completion tmux less \\\n    perl-diagnostics\n```\n\nMacOS:\n\n```\n$ brew install protobuf automake\n```\n\nOnce you have forked the repository, run the following to build and test Mosh:\n\n```\n$ .\u002Fautogen.sh\n$ .\u002Fconfigure\n$ make\n$ make check\n```\n\nMosh supports producing code coverage reports by tests, but this feature is\ndisabled by default. To enable it, make sure `lcov` is installed on your\nsystem. Then, configure and run tests:\n\n```\n$ .\u002Fconfigure --enable-code-coverage\n$ make check-code-coverage\n```\n\nThis will run all tests and produce a coverage report in HTML form that can be\nopened with your favorite browser. Ideally, newly added code should strive for\n90% (or better) incremental test coverage.\n\nMore info\n---------\n\n  * Mosh Web site:\n\n    \u003Chttps:\u002F\u002Fmosh.org>\n\n  * `mosh-devel@mit.edu` mailing list:\n\n    \u003Chttps:\u002F\u002Fmailman.mit.edu\u002Fmailman\u002Flistinfo\u002Fmosh-devel>\n\n  * `mosh-users@mit.edu` mailing list:\n\n    \u003Chttps:\u002F\u002Fmailman.mit.edu\u002Fmailman\u002Flistinfo\u002Fmosh-users>\n\n  * `#mosh` channel on [Libera Chat](https:\u002F\u002Flibera.chat\u002F)\n\n    https:\u002F\u002Fweb.libera.chat\u002F#mosh\n","Mosh 是一个支持移动场景的远程终端协议，用于替代传统 SSH 进行交互式命令行访问。其核心功能包括：自动适应网络中断与 IP 变更（如 Wi-Fi 切换至蜂窝网络）、基于预测模型的本地回显以降低高延迟感知、对丢包链路的鲁棒性支持，以及通过 SSH 协议完成初始认证与连接建立。技术上采用 UDP 传输、AES 加密、客户端-服务器状态同步机制，并兼容主流终端应用（如 vim、emacs）。适用于移动办公、弱网环境（如高铁、偏远地区）、频繁网络切换或休眠唤醒等不稳定连接场景。",2,"trending"]