Wish is a library for building SSH servers in Go that serve custom applications beyond traditional shell access.
The project addresses the challenge of creating secure, remotely accessible applications by leveraging SSH as an application protocol rather than just a remote shell mechanism. SSH provides built-in security, user identification through keys, and terminal access without certificate management overhead. Wish wraps the underlying SSH protocol implementation with sensible defaults and a middleware system, allowing developers to compose SSH handlers that process requests and pass control to the next handler in the chain. This middleware pattern is familiar to developers who have used HTTP frameworks.
Wish suits projects that need secure remote access to interactive applications. It is particularly well-suited for serving terminal user interfaces over SSH, as demonstrated by the Bubble Tea middleware which connects SSH sessions directly to interactive applications with native handling of window resizing. The Git middleware enables SSH-based Git server functionality with custom authentication. The project is built on an existing SSH library and is designed to integrate into existing Go projects rather than replace them entirely. Developers should choose Wish when they want to build custom SSH applications without managing the low-level protocol details or when they need to add SSH capabilities to existing services.
The project maintains active development with regular commits addressing bug fixes and feature improvements. The codebase includes comprehensive test coverage and passes continuous integration checks. Documentation is thorough, with examples and middleware implementations clearly explained in the README. The maintainers respond to issues and pull requests, indicating ongoing engagement with the user community.