HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
charmbracelet
wish
Go2021–2026
charmbracelet / wish

wish

Make SSH apps, just like that! 💫

28Distinct people
34Mentions
1Explicit recommenders
5.6KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Make SSH apps, just like that! 💫

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

I love the idea of TUIs, but I honestly don't have a lot of experience with them. There's a lovely Go library called Wish that I keep looking for reasons to use.…

allknowingfrog used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year34 dated mentions

Observed mentions: 2021-12-08 14:41:13 UTC to 2026-10-24 07:47:16 UTC.

0369122021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 11 mentions; 2 submissions, 9 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments20232024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 11 mentions; 0 submissions, 11 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC110
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC1129
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC514
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC11011
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC211
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC413

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Wish Make SSH apps, just like that! 💫 SSH is an excellent platform for building remotely accessible applications. It offers: secure communication without the hassle of HTTPS certificates user identification with SSH keys access from any terminal Powerful protocols like Git work over SSH and you can even render TUIs directly over an SSH connection. Wish is an SSH server with sensible defaults and a collection of middlewares that makes building SSH apps really easy. Wish is built on gliderlabs/ssh and should be easy to integrate into any existing projects. What are SSH Apps? Usually, when we think about SSH, we think about remote shell access into servers, most commonly through openssh-server. That's a perfectly valid (and probably the most common) use of SSH, but it can do so much more than that. Just like HTTP, SMTP, FTP and others, SSH is a protocol! It is a cryptographic network protocol for operating network services securely over an unsecured network. 1 That means, among other things, that we can write custom SSH servers without touching openssh-server, so we can securely do more things than just providing a shell. Wish is a library that helps writing these kinds of apps using Go. Middleware Wish middlewares are analogous to those in several HTTP frameworks. They are essentially SSH handlers that you can use to do specific tasks, and then call the next middleware. Notice that middlewares are composed from first to last, which means the last one is executed first. Bubble Tea The bubbletea middleware makes it easy to serve any Bubble Tea application over SSH. Each SSH session will get their own tea.Program with the SSH pty input and output connected. Client window dimension and resize messages are also natively handled by the tea.Program. You can see a demo of the Wish middleware in action at: ssh git.charm.sh Git The git middleware adds git server functionality to any ssh server. It supports repo creation on initial push and custom public key based auth. This middleware requires that git is installed on the server. Logging The logging middleware provides basic connection logging. Connects are logged with the remote address, invoked command, TERM setting, window dimensions and if the auth was public key based. Disconnect will log the remote address and connection duration. Access Control Not all applications will support general SSH connections. To restrict access to supported methods, you can use the activeterm middleware to only allow connections with active terminals connected and the accesscontrol middleware that lets you specify allowed commands. Default Server Wish includes the ability to easily create an always authenticating default SSH server with automatic server key generation. Examples There are examples for a standalone Bubble Tea application and Git server in the examples folder. Apps Built With Wish Soft Serve Wishlist VHS SSHWordle clidle pico.sh Fztea SSH Slides Charming Slack fissh Battlesship Purdue Hackers Go-Jitsu Matt Gleich's terminal ssh-warm-welcome Pro tip When building various Wish applications locally you can add the following to your ~/.ssh/config to avoid having to clear out localhost entries in your ~/.ssh/known_hosts file: Host localhost UserKnownHostsFile /dev/null How it works? Wish uses gliderlabs/ssh to implement its SSH server, and OpenSSH is never used nor needed — you can even uninstall it if you want to. Incidentally, there's no risk of accidentally sharing a shell because there's no default behavior that does that on Wish. Running with SystemD If you want to run a Wish app with systemd, you can create an unit like so: /etc/systemd/system/myapp.service: [Unit] Description=My App After=network.target [Service] Type=simple User=myapp Group=myapp WorkingDirectory=/home/myapp/ ExecStart=/usr/bin/myapp Restart=on-failure [Install] WantedBy=multi-user.target You can tune the values below, and once you're happy with them, you can run: # need to run this every time you change the unit file sudo systemctl daemon-reload # start/restart/stop/etc: sudo systemctl start myapp If you use a new user for each app (which is good), you'll need to create them first: useradd --system --user-group --create-home myapp That should do it. Contributing See contributing. Feedback We’d love to hear your thoughts on this project. Feel free to drop us a note! Twitter The Fediverse Discord License MIT Part of Charm. Charm热爱开源 • Charm loves open source Footnotes https://en.wikipedia.org/wiki/Secure_Shell ↩
Read the full README on GitHub

What Hacker News says

34 sources
Sounds like a similar family of problems to [Wish](https://github.com/charmbracelet/wish) by charm.sh. They've been pushing this curious paradigm of "ssh apps", where ssh keys are used to automatically create identities for small self-hosted CLI/TUI apps. As a useful comment for messh, it looks like you've committed the ssh_server binary file to git; you may want to add that to gitignore, as binary file handling isn't a traditional git strength. I _think_ it's better than it was a decade ago when I last investigated this, but I can see that Pro Git still recommends explicitly setting gitattributes to mark a file as binary https://git-scm.com/book/en/v2/Customizing-Git-Git-Attribute...
In Show HN: Keypub.sh – OAuth for the terminal using SSH keys

Showing the 15 most recent of 34 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.