15 ms·
Show HN: Chitchatter – P2P chat app that is serverless, decentralized, ephemeral
For anyone who is interested to learn more about Chitchatter, please check out the project README: https://github.com/jeremyckahn/chitchatter#readme https://github.com/jeremyckahn/chitchatter#readme
Chitchatter is very much an early MVP, so I'd like to get your feedback. Thanks for looking!
- altilunium 4y agoI also made something similar like this : https://github.com/altilunium/darkhallv3 https://github.com/altilunium/darkhallv3 Anyone can self-host it on free replit instance.
- deleted 4y ago[deleted]
- cjtrowbridge 4y agoI know this is an MVP but it seems unclear what meaningful structural improvements you're making over more feature-rich alternatives like Tox?
- jckahn 4y agoThanks for taking a look! This is my first time hearing of Tox, so it’s hard to for me give a great answer at the moment. Based on a quick look at Tox, it seems that a key differentiator is that Chitchatter conversations are ephemeral. Also the Chitchatter client is web-based, so you can just share a room link without anyone having to install anything to participate.
- rendaw 4y agoWhat is Tox actually? The Tox website doesn't say anything about the architecture, neither does Wikipedia. Apparently it's a library implemented in C and everyone's expected to use that. The Wikipedia reference links are dead, the only 3rd party implementation says "On hold until Tox gets proper docs."
- timbit42 4y agoTox is distributed but your IP is visible. You can use Tox inside Whonix which forces Tox to go through Tor. Briar is distributed but runs over Tor so your IP is hidden. You can't use Briar over Tor because it already uses Tor so it doesn't work in Whonix.
- porcc 4y agoExcellent work. We need more of these build-it-once peer to peer serverless webpages.
- saimiam 4y agoNot sure how this was supposed to work but I had two different browsers (safari and Ddg) open on my phone connected to the same room. When I sent a message from the second browser, it didn’t get delivered to anyone, and the first room showed a message saying “someone has left the room”. Looks like your message identity is driven off ip or something unique to the device rather than browser.
- adg001 4y agoJeremy, thanks for Chitchatter and for bringing this up here. The first feedback I can give you is about the threat model and the associated OPSEC measures mentioned in the README. Anyone with knowledge of the room UUID can listen to the conversation, even though the presence of the eavesdropper may (or may not) show up in the connected peers' counter. It is of essence to share such UUIDs over a secure channel, or the communication security will be compromised trivially. It is mentioned in the README the relevance of government level threat actors and email, SMS, Discord, among the possible mediums over which the UUIDs can be shared. Of course this leaves Chitchatter open to be attacked by governments and network operators, who do have access to the phone network(s), email servers, and other platforms involved. It would be best to prefer other out-of-bound channels, or come up with one-time UUIDs generators able to resynchronise and shared among the peers.
- TheJoeMan 4y agoI had a relevant thought just the other day: why do our chat apps (sms, wechat, etc) need the ability to message someone without first meeting face to face? Maybe just use a QR code you scan from their phone and that’s it. If anyone gets your phone number they can send you unwanted spam because it’s “push”
- kornhole 4y agoButnernote.com could be a good way to share the room URL over generally insecure channels. After MVP, maybe an ephemeral room link could be created using the code from burnernote to save a step.
- deleted 4y ago[deleted]
- jamesholden 4y agoBurnernote.com ? I think you meant?
- edf13 4y agoHow do the likes of Burnernote and yopass prove security/safety/offline?
- gfodor 4y agoAuthor might be interested in a recent thing I released to use a cloudflare worker instead of webtorrent servers for signaling: https://github.com/gfodor/p2pcf https://github.com/gfodor/p2pcf
- jckahn 4y agoI'm using https://github.com/dmotz/trystero https://github.com/dmotz/trystero for all the networking, and I don't think it supports p2pcf. If that existed a connection strategy for Trystero, I'd be open to experimenting with it!
- earnesti 4y agoSounds centralized
- gfodor 4y agoAny application using WebRTC is forced to use some kind of centralized signaling service. The OP uses WebTorrent trackers. At least, until there's a well established analog to the BitTorrent DHT, but that doesn't seem likely anytime soon.
- Sophira 4y agoWouldn't that make it centralised, though, with Cloudflare being necessary for it to work?
- nl 4y agohttps://github.com/dmotz/trystero#how-it-works https://github.com/dmotz/trystero#how-it-works You always need some kind of centralization for discovery with WebRTC.
- deepstack 4y agowould be good to make the discovery be a module that can be replaced or used as a redundant plugin. That way the user can use DHT, WebTorrent, CloudFlare or whatever.
- SquidJack 4y agoI can access anyone room just simply changing the MD5 hash url Random Password protection for room may be the best feature
- deleted 4y ago[deleted]
- peddling-brink 4y agoThat’s a UUID. The UUID becomes the password. There are significant downsides to this plan depending on your threat model.
- jckahn 4y agoFWIW, there is a plan to support password-protected chat rooms: https://github.com/jeremyckahn/chitchatter#project-roadmap https://github.com/jeremyckahn/chitchatter#project-roadmap
- x-complexity 4y agoRunning a test room right now: https://chitchatter.im/public/8872ba64-6f4f-4d67-a71a-d47e9b513bf7 https://chitchatter.im/public/8872ba64-6f4f-4d67-a71a-d47e9b...
- chriscjcj 4y agoThere's already a DOS attack happening. Didn't take long.
- anon115 4y agocan i use this to sell drugs?
- geysersam 4y agoYes, any medium of communication can be used to sell drugs. There's a theorem fo that.
- pessimizer 4y agoOr rather, a medium of communication can be considered secure exactly to the extent that it is useful for selling drugs i.e. the less useful for selling drugs, the less secure.
- laserfly 4y agoThanks for the post, nice to see new apps. In my experience with webRTC, a lot of the time the p2p connection does not get fully achieved, and the connection falls back to the server. Are you saying that the chat room will not run unless it is true p2p? If not, it would be good if the app shows the type of connection that is being used (p2p or via server).
- jckahn 4y agoThanks for the feedback! Chitchatter uses https://www.metered.ca/tools/openrelay/ https://www.metered.ca/tools/openrelay/ for relaying communication when P2P connections can't be established. So, chatting should "just work" for users right now. I don't know if the current connection type (P2P or relayed) can be determined by JavaScript. If not, it seems that allowing the user to disable relaying servers might be the safest option (at the expense of the app not actually working).
- ackbar03 4y agoI was curious about this too. In my experience the real obstacle behind true p2p is everyone is behind a router or firewall these days with shared ip. Most also prevent hole punching through port randomization.
- jlokier 4y agoTailscale comes up here a lot recently, and their article on how they do p2p over routers and firewalls (NAT traversal) is superb: https://tailscale.com/blog/how-nat-traversal-works/ https://tailscale.com/blog/how-nat-traversal-works/ Unfortunately it doesn't include statistics on how successful the strategies are in practice.
- anon115 4y agoits interesting people are talking to each other and the conversation everyones taking part in the people cool and chill i dunno how to explain it, it the anonimity make people candid because i like it?
- can16358p 4y agoPerhaps irrelevant question but: Why does it have the feeling of something being designed by Google?
- DeathArrow 4y agoIf I would try something like that, I would use a spy camera and image recognition.
- nl 4y agoSpecific suggestions: Make it clear you can use markdown Have a max size of message (noting that MD can make short messages take a lot of space) Allow rooms to have names QR Code to link to room
- jckahn 4y agoThese are excellent suggestions. Thank you! I will add this to my list of improvements to make to the app. :)
- deknos 4y agoi just wish, magic wormhole also would adopt open stun/turn relays like this :(
- blamestross 4y agoWhy write a really long hn post when you can write a blog post: https://www.miasma.space/anon-dhts/ https://www.miasma.space/anon-dhts/ The short of it is, sending secure messages without anonymity is pretty well solved, and while DHTs/webtorrent will buy you some obscurity, it can't solve any anonymity problems at scale.
- jckahn 4y agoThis blog post was really helpful. Thank you blamestross! My understanding of your concern: So long as there is a static WebTorrent tracker initiating the peer connections, the system can't be fully trusted. I agree with this, and I plan to counter this threat vector by enabling users to specify their WebTorrent pairing server and STUN/TURN relay servers. That way, concerned users can choose to self-host the relevant servers and effectively treat Chitchatter as a front end to those. Do you think that would address the concern you brought up? Additionally, a core feature of Chitchatter is that all communication is ephemeral and not persisted to disk, ever. Even if peers are identified, there would be no record of what communication took place. Do you think that should sufficiently protect users?
- blamestross 4y ago"Sufficient" is a product perspective I don't really have. Anonymity isn't even a product most users want to buy and the users that do, you may not want as customers. There are reasons I strongly recommend you do not download the bitmessage Blockchain for example. I'll agree those ideas are better. My concerns are really only around "how to you meet in the middle". If you are running your own relay, what benefits does your software now have over a more general self-hosted chat? Design with "ease of deployment and use" in mind. I actually think this is a good start on that. "Never stored" is moot. "We don't store it" is better. You can at best promise the client the user is currently using isn't logging. Nothing stops the relay or the other clients. Any relay that can know the password owns all data going over it, and any other relay knows at least who is saying how much and when. "I can't afford to spy on you and I don't even want the liability of being able to do so" is the real argument. WebRTC using 3rd party MITM servers provides that in theory. In practice WebRTC degrades into servers acting as proxies a decent chunk of the time. You are basically at the cutting edge of message ephemeralness and security you can get out of a browser app right now.
- e12e 4y ago> If you would like to verify that the app hosted at https://chitchatter.im/ https://chitchatter.im/ is the one that is hosted on GitHub, you can use dig: And if you trust github/Microsoft to not play games on what is delivered to you (say, because someone backed by the patriot act asked them to).
- pandemicsoul 4y agoOh good, another service where people can plan genocide and exchange pedo content!
- snewhacker 4y ago"Only rely on github" is amazing. And I have anticipated something crazier, maybe too crazy to be true. A server-less IM/forum mobile app which can hold persistant multi-party chatting. I know, server-less can mean a lot of information loss. I'm simply wondering if people can still find each other after going offline and online with a different IP, and even somehow retrieve information during offline time. As a tradeoff, the users understand and don't care if some messages are dropped (as chatters can figure it out using human brains) or security threats (MITM, eavesdropping, etc.). Since I'm new to network and P2P, this can be nonsense. And if this is possible, can anyone provide some links concerning the problem? first comment on HN :)
- jstanley 4y agoCool project. I'm curious why you don't use Tor to provide peer-to-peer connectivity? It gives you NAT hole-punching and encryption for free. It seems the obvious choice. For an alternative (but sadly barely-used) chat protocol that does use Tor, see Ricochet: https://en.wikipedia.org/wiki/Ricochet_(software) https://en.wikipedia.org/wiki/Ricochet_(software)
- jckahn 4y agoThanks for checking out the project! Chitchatter uses https://github.com/dmotz/trystero https://github.com/dmotz/trystero for peer connectivity, which doesn't support Tor. I don't know how Tor would be supported in a typical web browser. Have you seen Tor being used directly in that way?
- timbit42 4y agoAnother option is I2P which, unlike Tor, supports UDP.