# I am the Watcher. I am your guide through this vast new twtiverse.
# 
# Usage:
#     https://watcher.sour.is/api/plain/users              View list of users and latest twt date.
#     https://watcher.sour.is/api/plain/twt                View all twts.
#     https://watcher.sour.is/api/plain/mentions?uri=:uri  View all mentions for uri.
#     https://watcher.sour.is/api/plain/conv/:hash         View all twts for a conversation subject.
# 
# Options:
#     uri     Filter to show a specific users twts.
#     offset  Start index for quey.
#     limit   Count of items to return (going back in time).
# 
# twt range = 1 61083
# self = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=29691
# next = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=29791
# prev = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=29591
@tkanos Hmmm? I know...
@tkanos Hmmm? I know...
@movq Correct

@carsten None
@movq Correct

@carsten None
@movq If by see a little you mean:

> I can't see your face even if I were standing in front of you

And:

> I can't read books

Or:

> Drive a car

Then yes πŸ˜… And generally no, what little I do see or can make it is not "sharp" at all, in fact quite the opposite, for the only bits and pieces of "vision" I have left are tiny bits of peripheral vision.

Cause: Lebers Hereditary Optic Neuropathy (or LHON for short).
@movq If by see a little you mean:

> I can't see your face even if I were standing in front of you

And:

> I can't read books

Or:

> Drive a car

Then yes πŸ˜… And generally no, what little I do see or can make it is not "sharp" at all, in fact quite the opposite, for the only bits and pieces of "vision" I have left are tiny bits of peripheral vision.

Cause: Lebers Hereditary Optic Neuropathy (or LHON for short).
@darch Like this:



And this:

@darch Like this:



And this:

Pardon me, they loaded now! Infra hiccup? πŸ˜… (on your end?)
Pardon me, they loaded now! Infra hiccup? πŸ˜… (on your end?)
Also those images did not load for me, they seem/appear to be broken links/images?
Also those images did not load for me, they seem/appear to be broken links/images?
@movq Oh man I feel for you! πŸ€— As you know I'm basically blind (considered legally blind in my country) and lost 99% of my sight at age 21. I'm curious, what's causing your eyesight to deteriorate? πŸ€”
@movq Oh man I feel for you! πŸ€— As you know I'm basically blind (considered legally blind in my country) and lost 99% of my sight at age 21. I'm curious, what's causing your eyesight to deteriorate? πŸ€”
@novaburst I hope not too! 🀞 πŸ™
@novaburst I hope not too! 🀞 πŸ™
@xuu That's true, and I'm not necessarily that's a threat model I really care about per se, others might, but I dunno πŸ€·β€β™‚οΈ Really depends how paranoid you really are I suppose? πŸ˜‚
@xuu That's true, and I'm not necessarily that's a threat model I really care about per se, others might, but I dunno πŸ€·β€β™‚οΈ Really depends how paranoid you really are I suppose? πŸ˜‚
What boxes have we ticked:

- [x] No stupid ports to open
- [x] Self Hosted
- [x] Decentralised
- [x] e2e Encrypted
- [x] Simple to stand up
- [x] Simple to operate
- [ ] Easy to use (UX) FAIL

I guess we still have some work to do πŸ˜‚
What boxes have we ticked:

- [x] No stupid ports to open
- [x] Self Hosted
- [x] Decentralised
- [x] e2e Encrypted
- [x] Simple to stand up
- [x] Simple to operate
- [ ] Easy to use (UX) FAIL

I guess we still have some work to do πŸ˜‚
@david Because I was quite quick to fix my mistake πŸ˜‚
@david Because I was quite quick to fix my mistake πŸ˜‚
So discounting the pre-existing msgbus I wrote years ago and use to this day for all my pub/sub needs.

This little tiny ass stupid and gawd awful little chat system that is fully e2e encrypted, weights in at around ~200 lines of Go and ~20 lines of Shell πŸ˜…
So discounting the pre-existing msgbus I wrote years ago and use to this day for all my pub/sub needs.

This little tiny ass stupid and gawd awful little chat system that is fully e2e encrypted, weights in at around ~200 lines of Go and ~20 lines of Shell πŸ˜…
@novaburst This salty-msgbus-chat is just a toy, it's not very serious. It was literally written in ~5mins when I realised I could whack something together with the salty cli I just wrote and my existing msgbus pub/sub system, client and tiny amount of shell πŸ˜‚~
@novaburst This salty-msgbus-chat is just a toy, it's not very serious. It was literally written in ~5mins when I realised I could whack something together with the salty cli I just wrote and my existing msgbus pub/sub system, client and tiny amount of shell πŸ˜‚~
Edited: SillyΒ me accidentally nuked my private key.

New Public Key: kex1ekt5cru4vs42wnaxppkjn5pexmt2w6uxx9z2mz0fqeuc80e0g9gsggs8ah
Edited: SillyΒ me accidentally nuked my private key.

New Public Key: kex1ekt5cru4vs42wnaxppkjn5pexmt2w6uxx9z2mz0fqeuc80e0g9gsggs8ah
if anyone wants to give this a go with me, I have a temporary public key:

- Public Key: kex1mdcfhxcq4vkkrrzluvn6kkcw8u96paku7l2qtqrr943kr97ksz3q8afjk8
- msgbus endpoint: https://msgbus.mills.io/
- msgbus topic: prologic

If you run your own msgbus instance you _may_ want to (for example):


MSGBUS_URI=https://msgbus.mills.io/
if anyone wants to give this a go with me, I have a temporary public key:

- Public Key: kex1ekt5cru4vs42wnaxppkjn5pexmt2w6uxx9z2mz0fqeuc80e0g9gsggs8ah
- msgbus endpoint: https://msgbus.mills.io/
- msgbus topic: prologic

If you run your own msgbus instance you _may_ want to (for example):


MSGBUS_URI=https://msgbus.mills.io/
if anyone wants to give this a go with me, I have a temporary public key:

- Public Key: kex1ekt5cru4vs42wnaxppkjn5pexmt2w6uxx9z2mz0fqeuc80e0g9gsggs8ah
- msgbus endpoint: https://msgbus.mills.io/
- msgbus topic: prologic

If you run your own msgbus instance you _may_ want to (for example):


MSGBUS_URI=https://msgbus.mills.io/
@novaburst Oh that was a stupid bug I introduced! It's fixed if git pull πŸ˜‚

I'm only human 🀣
@novaburst Oh that was a stupid bug I introduced! It's fixed if git pull πŸ˜‚

I'm only human 🀣
@novaburst


go version go1.17.6 darwin/amd64


Here πŸ˜‚
@novaburst


go version go1.17.6 darwin/amd64


Here πŸ˜‚
prologic/salty-msgbus-chat: A rudimentary terminal / command-line based chat system using the salty command-line tool for encrypting and decrypting messages using the saltpack message format and using msgbus as transport - salty-msgbus-chat - Mills

This is as simple as it needs to be! End-to-End Encrypted Chat using Saltpack, Msgbus and the Shell! πŸ˜…
prologic/salty-msgbus-chat: A rudimentary terminal / command-line based chat system using the salty command-line tool for encrypting and decrypting messages using the saltpack message format and using msgbus as transport - salty-msgbus-chat - Mills

This is as simple as it needs to be! End-to-End Encrypted Chat using Saltpack, Msgbus and the Shell! πŸ˜…
@novaburst wut?! 😳 what kind of rubbish OS are you running over there πŸ˜‚ What's the problem? πŸ€”
@novaburst wut?! 😳 what kind of rubbish OS are you running over there πŸ˜‚ What's the problem? πŸ€”
@ullarah This is just the beginning πŸ˜‚
@ullarah This is just the beginning πŸ˜‚
@ullarah Next time I promise πŸ˜…
@ullarah Next time I promise πŸ˜…


Bob decrypts Alice's message:

h
$ cat | salty -i bob.key -d
BEGIN SALTPACK ENCRYPTED MESSAGE. keDIDMQWYvVR58B FTfTeDQNHyPAEBt 3MtJl44EtmtyGOm XnYuFdBwVh9HCh8 TvmmueGj7UqtQPF rULxzzOMSsetx9B 98KI7t6HTkKKIfC r95qiqdnzEy420v q4uY9SjDed8FY9I dxx1Occ0PH80uU0 jFSE7C6xHGjHD4Q SQR7UgDDT4jemce LxsMMYGibecuryt YmjI6kxZqxeEOTM ZqPAEP8wpLMVkZ9 hsoIAIETF9hXZh8 veGcHsHujB2q5Gn iIn0scNzd5uw86V Lv3OlURF9OqfoQX HGdGqbl5jqlQ2Dy n59GoXkKjE4o9lC EN6WVX2s7d9qk5a mpQ1BBfsHL2Oo50 5nQnsxonqiSrsrD 02oWmRYveGD1868 sV. END SALTPACK ENCRYPTED MESSAGE.
# signed by: kex1dxhcdumslccv4yxc07hrrpjt9l8vqyjekncnrrs5qxg0vm8dmctq4prfkm
Hello Bob!


Bob decrypts Alice's message:

h
$ cat | salty -i bob.key -d
BEGIN SALTPACK ENCRYPTED MESSAGE. keDIDMQWYvVR58B FTfTeDQNHyPAEBt 3MtJl44EtmtyGOm XnYuFdBwVh9HCh8 TvmmueGj7UqtQPF rULxzzOMSsetx9B 98KI7t6HTkKKIfC r95qiqdnzEy420v q4uY9SjDed8FY9I dxx1Occ0PH80uU0 jFSE7C6xHGjHD4Q SQR7UgDDT4jemce LxsMMYGibecuryt YmjI6kxZqxeEOTM ZqPAEP8wpLMVkZ9 hsoIAIETF9hXZh8 veGcHsHujB2q5Gn iIn0scNzd5uw86V Lv3OlURF9OqfoQX HGdGqbl5jqlQ2Dy n59GoXkKjE4o9lC EN6WVX2s7d9qk5a mpQ1BBfsHL2Oo50 5nQnsxonqiSrsrD 02oWmRYveGD1868 sV. END SALTPACK ENCRYPTED MESSAGE.
# signed by: kex1dxhcdumslccv4yxc07hrrpjt9l8vqyjekncnrrs5qxg0vm8dmctq4prfkm
Hello Bob!


Alice encrypts and signs a message for Bob:

h
$ echo -n "Hello Bob!" | salty -i alice.key -r kex1478qwdwdfdnrvhuzwg032hx6kxlk23sylr3r758kcvku0ndgyqfsn6k8at
BEGIN SALTPACK ENCRYPTED MESSAGE. keDIDMQWYvVR58B FTfTeDQNHyPAEBt 3MtJl44EtmtyGOm XnYuFdBwVh9HCh8 TvmmueGj7UqtQPF rULxzzOMSsetx9B 98KI7t6HTkKKIfC r95qiqdnzEy420v q4uY9SjDed8FY9I dxx1Occ0PH80uU0 jFSE7C6xHGjHD4Q SQR7UgDDT4jemce LxsMMYGibecuryt YmjI6kxZqxeEOTM ZqPAEP8wpLMVkZ9 hsoIAIETF9hXZh8 veGcHsHujB2q5Gn iIn0scNzd5uw86V Lv3OlURF9OqfoQX HGdGqbl5jqlQ2Dy n59GoXkKjE4o9lC EN6WVX2s7d9qk5a mpQ1BBfsHL2Oo50 5nQnsxonqiSrsrD 02oWmRYveGD1868 sV. END SALTPACK ENCRYPTED MESSAGE.


Alice encrypts and signs a message for Bob:

h
$ echo -n "Hello Bob!" | salty -i alice.key -r kex1478qwdwdfdnrvhuzwg032hx6kxlk23sylr3r758kcvku0ndgyqfsn6k8at
BEGIN SALTPACK ENCRYPTED MESSAGE. keDIDMQWYvVR58B FTfTeDQNHyPAEBt 3MtJl44EtmtyGOm XnYuFdBwVh9HCh8 TvmmueGj7UqtQPF rULxzzOMSsetx9B 98KI7t6HTkKKIfC r95qiqdnzEy420v q4uY9SjDed8FY9I dxx1Occ0PH80uU0 jFSE7C6xHGjHD4Q SQR7UgDDT4jemce LxsMMYGibecuryt YmjI6kxZqxeEOTM ZqPAEP8wpLMVkZ9 hsoIAIETF9hXZh8 veGcHsHujB2q5Gn iIn0scNzd5uw86V Lv3OlURF9OqfoQX HGdGqbl5jqlQ2Dy n59GoXkKjE4o9lC EN6WVX2s7d9qk5a mpQ1BBfsHL2Oo50 5nQnsxonqiSrsrD 02oWmRYveGD1868 sV. END SALTPACK ENCRYPTED MESSAGE.


Alice encrypts and signs a message for Bob:

h
$ echo -n "Hello Bob!" | salty -i alice.key -r kex1478qwdwdfdnrvhuzwg032hx6kxlk23sylr3r758kcvku0ndgyqfsn6k8at
BEGIN SALTPACK ENCRYPTED MESSAGE. keDIDMQWYvVR58B FTfTeDQNHyPAEBt 3MtJl44EtmtyGOm XnYuFdBwVh9HCh8 TvmmueGj7UqtQPF rULxzzOMSsetx9B 98KI7t6HTkKKIfC r95qiqdnzEy420v q4uY9SjDed8FY9I dxx1Occ0PH80uU0 jFSE7C6xHGjHD4Q SQR7UgDDT4jemce LxsMMYGibecuryt YmjI6kxZqxeEOTM ZqPAEP8wpLMVkZ9 hsoIAIETF9hXZh8 veGcHsHujB2q5Gn iIn0scNzd5uw86V Lv3OlURF9OqfoQX HGdGqbl5jqlQ2Dy n59GoXkKjE4o9lC EN6WVX2s7d9qk5a mpQ1BBfsHL2Oo50 5nQnsxonqiSrsrD 02oWmRYveGD1868 sV. END SALTPACK ENCRYPTED MESSAGE.
Bob creates his key:

h
$ salty-keygen -o bob.key
Public key: kex1478qwdwdfdnrvhuzwg032hx6kxlk23sylr3r758kcvku0ndgyqfsn6k8at
Bob creates his key:

h
$ salty-keygen -o bob.key
Public key: kex1478qwdwdfdnrvhuzwg032hx6kxlk23sylr3r758kcvku0ndgyqfsn6k8at
Alice creates her key:

h
$ salty-keygen -o alice.key
Public key: kex1dxhcdumslccv4yxc07hrrpjt9l8vqyjekncnrrs5qxg0vm8dmctq4prfkm
Alice creates her key:

h
$ salty-keygen -o alice.key
Public key: kex1dxhcdumslccv4yxc07hrrpjt9l8vqyjekncnrrs5qxg0vm8dmctq4prfkm
Let's play Alice and Bob!
Let's play Alice and Bob!
@carsten There's a good reason for that. One of the original principal engineers (co-founder) I _believe_ left Keybase after it was acquired by Zoom and has built keys.pub and looks to also be working on Chilli. I've been in touch with him a few times now.
@carsten There's a good reason for that. One of the original principal engineers (co-founder) I _believe_ left Keybase after it was acquired by Zoom and has built keys.pub and looks to also be working on Chilli. I've been in touch with him a few times now.
@carsten One of the reasons I wanted @darch to remind me of the tools he's come across is I have plans to build a Yarn.social "events" tool where you can login to create events and invite as guests other Yarn.social users. The idea is to basically integrate the two together using the newly added IndieAuth Provider that all pods now have.
@carsten One of the reasons I wanted @darch to remind me of the tools he's come across is I have plans to build a Yarn.social "events" tool where you can login to create events and invite as guests other Yarn.social users. The idea is to basically integrate the two together using the newly added IndieAuth Provider that all pods now have.
@darch Thank you! πŸ™‡β€β™‚οΈ Bookmarked! I won't forget this time πŸ˜…
@darch Thank you! πŸ™‡β€β™‚οΈ Bookmarked! I won't forget this time πŸ˜…
prologic/salty: A command-line tool using the saltpack messaging format and the keys.pub Go library. - salty - Mills

Here you go @novaburst and anyone else that's interested @mutefall @xuu @tkanos @mckinley
prologic/salty: A command-line tool using the saltpack messaging format and the keys.pub Go library. - salty - Mills

Here you go @novaburst and anyone else that's interested @mutefall @xuu @tkanos @mckinley
@tkanos Thanks! I _think_ it just needs a few eyes on it, and probably a few things clarified, but I _think_ the general approach there that @xuu and I came up with I _think_ will work.
@tkanos Thanks! I _think_ it just needs a few eyes on it, and probably a few things clarified, but I _think_ the general approach there that @xuu and I came up with I _think_ will work.
Oh I _should_ point out, this is the same guy behind keys.pub in the first place πŸ˜…
Oh I _should_ point out, this is the same guy behind keys.pub in the first place πŸ˜…
Chill

Looks like there's s Gabriel Handford that is building an e2e encrypted chat "thingy" built upon the great work of keys.pub and it's Go libraires. Hmmm πŸ€”
Chill

Looks like there's s Gabriel Handford that is building an e2e encrypted chat "thingy" built upon the great work of keys.pub and it's Go libraires. Hmmm πŸ€”
@darch What were some of those calendar/event/invite web apps you found that we were both discussing the possibilities of at some point? I can't seem to find them now πŸ˜”
@darch What were some of those calendar/event/invite web apps you found that we were both discussing the possibilities of at some point? I can't seem to find them now πŸ˜”
The other thing I wanted to point out is that this discussion around creating a spec for a IndieWeb-style chat system (inspired somewhat by twtxt too). Your write-up is more akin to the current RFC for Encrypted Feeds -- Which you are welcome to review and share your thoughts and comments on.

Personally I _think_ Encrypted feeds is a much easier "thing" to support.
The other thing I wanted to point out is that this discussion around creating a spec for a IndieWeb-style chat system (inspired somewhat by twtxt too). Your write-up is more akin to the current RFC for Encrypted Feeds -- Which you are welcome to review and share your thoughts and comments on.

Personally I _think_ Encrypted feeds is a much easier "thing" to support.
@tkanos This is a good write up and good summary of the approaches πŸ‘Œ This is specifically for encrypted feeds however and one thing you're missing is encrypted feeds should be a separate feed in the first place and marked as such.
@tkanos This is a good write up and good summary of the approaches πŸ‘Œ This is specifically for encrypted feeds however and one thing you're missing is encrypted feeds should be a separate feed in the first place and marked as such.
@crunched Hey! πŸ‘‹ Welcome to Yarn.social πŸ€—
@crunched Hey! πŸ‘‹ Welcome to Yarn.social πŸ€—
@xuu I'm not really sure it's actually shameful at all, some would argue you should have a separate key for every server you access, but that's a lot of key management and a lot of keys to remember to keep safe πŸ˜…
@xuu I'm not really sure it's actually shameful at all, some would argue you should have a separate key for every server you access, but that's a lot of key management and a lot of keys to remember to keep safe πŸ˜…
@tkanos Keyword there being "their platform" πŸ˜…
@tkanos Keyword there being "their platform" πŸ˜…
@xuu Did you expect it not to? Go v1 compatibility promise right? πŸ˜…
@xuu Did you expect it not to? Go v1 compatibility promise right? πŸ˜…
For example with Signal, if your keys changes (which are generated and stored on your device, but AFAIK there are no per-device keys), if your keys change your contacts get alerted of this fact (UX problem) and you have an opportunity to "verify their new keys" (somehow).
For example with Signal, if your keys changes (which are generated and stored on your device, but AFAIK there are no per-device keys), if your keys change your contacts get alerted of this fact (UX problem) and you have an opportunity to "verify their new keys" (somehow).
I _think_ the general rule of thumb here is if you accept TOFU (Trust On First Use) and your "Private Key" is compromised "somehow", you should re-create a new Key pair and let your contacts know. In turn your contacts _should_ delete their "trust" of the old key and mark it as "invalid".

The problem with things like certificate or key revocation as is possible with GPG (IHMO) is that this makes the system a bit centralised where you have to rely on publishing your key(s) or certificates to a "key server" and if your key(s) having to publish a revocation.
I _think_ the general rule of thumb here is if you accept TOFU (Trust On First Use) and your "Private Key" is compromised "somehow", you should re-create a new Key pair and let your contacts know. In turn your contacts _should_ delete their "trust" of the old key and mark it as "invalid".

The problem with things like certificate or key revocation as is possible with GPG (IHMO) is that this makes the system a bit centralised where you have to rely on publishing your key(s) or certificates to a "key server" and if your key(s) having to publish a revocation.
For instance I normally use the same RSA key/pair on all my workstations for my ssh client, because that's me, no-matter where I am. The only exception to this rule is I usually create a separate key for any "work" / " company" I am a part of.
For instance I normally use the same RSA key/pair on all my workstations for my ssh client, because that's me, no-matter where I am. The only exception to this rule is I usually create a separate key for any "work" / " company" I am a part of.
I _personally_ think it's okay to share the same "Private Key" with "all your devices" as long as it is a) transported securely and b) stored at rest securely.
I _personally_ think it's okay to share the same "Private Key" with "all your devices" as long as it is a) transported securely and b) stored at rest securely.
@mckinley Hmmm need to think about this some more I believe. I'm pretty sure Apple's iMessages and even Signal uses the notion of "Device Keys". To be honest though, I _think_ this rather complicates things at the spec and implementation level, and that's something I'd like to avoid straight up.
@mckinley Hmmm need to think about this some more I believe. I'm pretty sure Apple's iMessages and even Signal uses the notion of "Device Keys". To be honest though, I _think_ this rather complicates things at the spec and implementation level, and that's something I'd like to avoid straight up.
@mckinley Ahhh I see what you're saying now... I was thinking more along the lines of, if messages are e2e encrypted, there is no need to keep history since there's no possible way to view history from a new client, etc. But with a self-hosted broker/server design this is actually possible and probably needs to be a thing, so you're right I think.

Shall we focus on the design/spec of the actual base protocol first though? I'd like to get a design/spec we can all agree on and a poc server/client implemented with a goal of I can message @mckinley@mckinley.cc
@mckinley Ahhh I see what you're saying now... I was thinking more along the lines of, if messages are e2e encrypted, there is no need to keep history since there's no possible way to view history from a new client, etc. But with a self-hosted broker/server design this is actually possible and probably needs to be a thing, so you're right I think.

Shall we focus on the design/spec of the actual base protocol first though? I'd like to get a design/spec we can all agree on and a poc server/client implemented with a goal of I can message @mckinley@mckinley.cc
@mutefall Macbook dies death by Urine! πŸ˜‚
@mutefall Macbook dies death by Urine! πŸ˜‚
@mutefall here here πŸ‘ 100% πŸ‘Œ

This is what I believe in what I said so strongly. You have to basically be an asshole to treat people like this, and yet they do, so assholes they are πŸ˜‚
@mutefall here here πŸ‘ 100% πŸ‘Œ

This is what I believe in what I said so strongly. You have to basically be an asshole to treat people like this, and yet they do, so assholes they are πŸ˜‚
In fact I've Bookmarked this, and Ill probably leave it Bookmarked πŸ‘Œ
In fact I've Bookmarked this, and Ill probably leave it Bookmarked πŸ‘Œ