Show HN: I made Devzat – It's like Discord but in the terminal, over SSH
Run `ssh devzat.hackclub.com` to try it out! The repo is here: https://github.com/quackduck/devzat (golang).
It has markdown and emoji support, DMs, channels, and it can show images too. You can send code, and it gets syntax highlighted (you can change the theme). You can ping people like so: @user and it sends them a \a, which should play an audible sound if the terminal allows it. There's inbuilt games and rainbow names and a lot of other small things I don't remember right now.
You might find the auth system interesting: it's based on a hash of ssh pubkey (bans use that and a hash of IP, so it isn't so easy to get around a ban)
Also an interesting issue: bots that go around trying to brute force ssh into random IPs with common usernames. My current solution is banning if rapid successive joins are detected.
153 comments
[ 45.5 ms ] story [ 230 ms ] thread... to get around my firewall!
You might wanna take a look at https://github.com/charmbracelet/bubbletea ad specifically https://github.com/charmbracelet/soft-serve for v2.
IRC style commands that are only sent to the sender would also be nice as current version is a bit spammy with help and user commands.
(and also the repo the person you replied to probably meant to post)
People who aren't familiar with Discord but that would still use text chat over SSH are probably more likely to use IRC.
Looks like those days it's more of a Slack/Gitter/IRC alternative.
Discord's dark & light themes are too hard on my eyes. They feel like the designers have never worked on a 13" MBP and only large monitors w/ non-retina displays.
I don't find the service very trustworthy, but I think that if you're a gamer, it may work out just fine for you.
FML.
If you ever want to resume your communities elsewhere, perhaps check out Matrix (https://matrix.org/)? If you have the know how to host your own server, you can host a community without the risk of being shut down by an external party. People from other servers can still join because the network is federated.
* Hangman doesn't give you credit for all instances of a letter when you guess it
* Starting a new game of hangman (maybe also TTT?) interrupts/erases the previous one, if there's one in progress
* Images can be anything and aren't filtered - troll users could present some nasty stuff
* User settings don't persist (e.g., nickname)
IDK how to filter images oof
Wdym by that first point? (Hangman is case sensitive)
The rules of Hangman are that every letter guessed reveals all instances of that letter in the word.
but this is really fun! nice job!
However the actual chat part of it is very barebones with a simplistic JSON-based protocol and a simplistic IRC-like interface - quite unlike devzat.
I wonder how hard it would be to untangle the authentication and transport bits from devzat and plug in our own proprietary auth/transport.
Or a Zulip server.
Matrix is overkill if you're never going to federate it.
Host * ForwardAgent yes
The scenario you talk about is certainly possible, especially since OpenSSH does not require a "tap" for each authorization once the agent is unlocked. (Side note: this is one thing hardware u2f keys absolutely got correct).
so it's IRC?
It's common for IRC users to use IRC from a terminal client on their desktop. If they have a remote server they'll ssh into a box and use their terminal client there. They'd also use a screen session to keep their IRC client running 24/7 so they can keep receiving messages. Or they'll keep an eggdrop bot on a server somewhere, which is basically a sorta IRC proxy that they connect to from any IRC client and can keep their user online in the background.
Here's some stuff on IRC: https://github.com/ircdocs/modern-irc | https://ircv3.net/ | https://wiki.wireshark.org/IRC
Looks like there's some discord<->IRC gateways: https://github.com/sjwhitak/discord-irc-matrix https://github.com/qaisjp/go-discord-irc https://discordrc.com/
Here's some IRC stuff in Go: https://github.com/khlieng/dispatch https://github.com/ergochat/ergo https://github.com/go-irc/irc https://github.com/search?q=go+irc
I don't know why we keep reinventing IRC.
This is definitely making me nostalgic for it.
The same machine also hosted apache source code repositories.
Oh, hi Jon! It's Chris, from the 90s
I should've read this before trying to connect 100 usernames in parallel.
[0]: https://news.ycombinator.com/item?id=8828543
[1]: https://news.ycombinator.com/item?id=8743374
[2]: https://news.ycombinator.com/item?id=15829206
Windows 10 PowerShell
That seems like the most likely problem, yes.
Why hash it? There are <2^32 IP(v4) addresses, so it would be trivial to crack the hash.
[1] - https://github.com/quackduck/devzat/blob/main/admins.json
http://www.bbsdocumentary.com/software/IBM/DOS/GTALK/bbs_gta...