awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
charmbracelet avatar

charmbracelet/wish

0
View on GitHub↗
4,919 stars·96 forks·Go·mit·17 views

Wish

Wish is a Go library for building SSH servers, providing a middleware-based framework that handles core SSH functionality including public-key and certificate authentication, session management, and secure file transfers via SCP and SFTP. It is designed to serve as the foundation for custom SSH applications, with built-in support for hosting Git repositories over SSH and serving interactive terminal applications.

What distinguishes Wish from a basic SSH server library is its composable middleware pattern, which allows developers to layer authentication, logging, and custom session handling. It supports environment-based and session-type access controls, reverse port forwarding for tunneling, and SSH certificate authorization. The library also includes configuration for host keys, server banners, version strings, and graceful shutdown, along with automatic host key generation for quick prototyping.

Beyond its core server features, Wish provides session-level error handling, client environment variable access, and output writing. For terminal applications, it offers pseudo-terminal allocation, input handling for key presses, mouse events, and paste actions, as well as remote clipboard access via the OSC52 protocol.

Wish is available as a Go package with documentation covering server setup, middleware usage, and integration with Git and terminal applications.

Features

  • SSH Server Frameworks - Ships a Go library for building and hosting secure shell server daemons with middleware and PTY support.
  • Terminal Application Servers - Serves full-screen terminal applications over SSH with pseudo-terminal allocation and resize handling.
  • SCP and SFTP Subsystem Handlers - The SSH server library manages SCP, SFTP, and Git protocol operations for file transfer and repository access.
  • SSH Data Transfers - Handling SCP and SFTP file uploads and downloads over SSH connections.
  • Git SSH Servers - Handles Git upload-pack and receive-pack requests by interpreting the git-upload-pack and git-receive-pack subsystems over SSH.
  • Automatic Repository Creators - The SSH server library serves Git repositories over SSH, handling upload-pack and receive-pack requests with automatic repository creation.
  • SSH Environment Access Controls - The SSH server library limits incoming connections to those with an active terminal and/or matching a predefined set of commands.
  • Public Key Authentication - Verifies connecting clients using public-key or certificate-based authentication against authorised keys or a trusted CA.
  • SSH Authorized Keys Validators - The SSH server library validates connecting clients against an authorized_keys file, allowing only listed public keys.
  • SSH Command Restriction Controls - The SSH server library blocks connections without an active terminal or allows only specified commands.
  • Pluggable Authentication Methods - The SSH server library authenticates users using public-key, password, or other methods before granting access.
  • Session Authorization - Verifying users via public keys, passwords, or signed certificates, and restricting access by session type or authorized keys.
  • SSH Certificate Authentication - The SSH server library accepts client certificates signed by a trusted Certificate Authority, checking validity and authority.
  • Terminal Mouse Event Capturers - Captures mouse clicks, scrolls, and movements from terminals supporting mouse tracking protocol.
  • SSH-Terminal UI Bridges - Runs interactive terminal UI applications inside SSH sessions with pseudo-terminal allocation.
  • SSH Handler Middlewares - Chains middleware functions to wrap SSH session handlers with authentication, logging, and custom logic.
  • SSH Servers for TUIs - Serves full-screen terminal applications over SSH so remote users can interact with them through pseudo-terminals.
  • Bracketed Paste Event Detectors - Treats paste actions as distinct bracketed-paste events for custom processing of pasted content.
  • SFTP Subsystems - Manages secure file upload and download by implementing the SCP and SFTP subsystem protocols over the SSH connection.
  • Pseudo-Terminal Commands - Executes shell commands with pseudo-terminal allocation, forwarding standard I/O and detecting terminal type.
  • OSC52 Clipboard Protocol Implementations - Provides remote clipboard read and write via the OSC52 protocol during SSH sessions.
  • Reverse Tunnels - Creates reverse tunnels where the SSH server connects back to the client’s network, exposing remote services through the session.
  • SSH File Transfer Servers - An SSH server implementation that supports SCP and SFTP protocols for secure file uploads and downloads.
  • Pseudo-Terminal Interfaces - Allocates pseudo-terminals to remote commands so interactive programs behave as if in a local shell.
  • Press vs Release Differentiators - Distinguishes key press from release events for separate handling in SSH sessions.

Star history

Star history chart for charmbracelet/wishStar history chart for charmbracelet/wish

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does charmbracelet/wish do?

Wish is a Go library for building SSH servers, providing a middleware-based framework that handles core SSH functionality including public-key and certificate authentication, session management, and secure file transfers via SCP and SFTP. It is designed to serve as the foundation for custom SSH applications, with built-in support for hosting Git repositories over SSH and serving interactive terminal applications.

What are the main features of charmbracelet/wish?

The main features of charmbracelet/wish are: SSH Server Frameworks, Terminal Application Servers, SCP and SFTP Subsystem Handlers, SSH Data Transfers, Git SSH Servers, Automatic Repository Creators, SSH Environment Access Controls, Public Key Authentication.

Which projects share features with charmbracelet/wish?

Projects with overlapping indexed features include: paramiko/paramiko — Paramiko is a pure-Python implementation of the SSH2 protocol, providing a library for making secure network… sshnet/ssh.net — SSH.NET is a .NET library that implements the SSH-2 protocol for encrypted remote connections and secure file… winscp/winscp — WinSCP is a remote file manager and SFTP and FTP client that provides a graphical interface for browsing, editing, and… jpillora/chisel — Chisel is a network tunneling tool that facilitates secure communication by encapsulating TCP and UDP traffic within… erebe/wstunnel — wstunnel is a tool that tunnels arbitrary TCP traffic through WebSocket connections, enabling communication across… gameservermanagers/linuxgsm — LinuxGSM is a command-line orchestration platform designed for the deployment, management, and lifecycle maintenance…

Projects sharing features with Wish

These projects share indexed features with Wish. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • paramiko/paramikoparamiko avatar

    paramiko/paramiko

    9,779View on GitHub↗

    Paramiko is a pure-Python implementation of the SSH2 protocol, providing a library for making secure network connections and executing remote commands. It serves as a programmatic interface for establishing encrypted communication tunnels and managing remote sessions. The project includes a full SSH server framework, allowing applications to host a secure shell server and define server-side access configurations directly within Python. It also provides a dedicated SFTP client library for secure file transfers and remote filesystem management. The library covers remote infrastructure automati

    Python
    View on GitHub↗9,779
  • sshnet/ssh.netsshnet avatar

    sshnet/SSH.NET

    4,310View on GitHub↗

    SSH.NET is a .NET library that implements the SSH-2 protocol for encrypted remote connections and secure file transfers. It provides a complete SSH-2 protocol stack implementation with a channel multiplexing engine that manages multiple concurrent channels over a single connection, supporting simultaneous shell sessions, remote command execution, SFTP transfers, and port forwarding tunnels. The library includes a pluggable authentication pipeline supporting password, public key, certificate, keyboard-interactive, and multi-factor authentication combinations. The library distinguishes itself t

    C#networkscpsftp
    View on GitHub↗4,310
  • winscp/winscpwinscp avatar

    winscp/winscp

    3,675View on GitHub↗

    WinSCP is a remote file manager and SFTP and FTP client that provides a graphical interface for browsing, editing, and organizing files on remote servers and cloud storage. It serves as a multi-protocol tool supporting SFTP, FTP, FTPS, SCP, S3, and WebDAV, and functions as an S3 object storage browser for managing files and buckets. The application distinguishes itself through its automation capabilities, allowing for scripted file transfers and remote command execution via a command-line interface or a .NET assembly. It also features directory synchronization to match local and remote folder

    Cftpftp-clientftps
    View on GitHub↗3,675
  • jpillora/chiseljpillora avatar

    jpillora/chisel

    15,615View on GitHub↗

    Chisel is a network tunneling tool that facilitates secure communication by encapsulating TCP and UDP traffic within HTTP requests. It functions as a connection multiplexer, consolidating multiple logical network streams into a single persistent connection to improve throughput and reduce overhead. By leveraging standard web protocols, the system enables firewall traversal and provides a mechanism for remote port forwarding and proxying. The project distinguishes itself through its focus on resilient connectivity and granular access control. It maintains persistent network sessions across uns

    Gogolanghttptcp
    View on GitHub↗15,615
  • Compare all 30 related projects→