grjte @grjte.sh · 23/12/20257/ Check out the details, including a deeper discussion of challenges, a prototype of Bitchat over Wi-Fi Aware, and general notes on cross-platform Wi-Fi Aware implementation 👉 grjte.sh/bitchat-wifi... 0144
grjte @grjte.sh · 23/12/20256/ Wi-Fi Aware would complement BLE as a secondary transport to boost connectivity or enable high-throughput direct messaging. BLE provides a backbone for a ubiquitous baseline mesh. Wi-Fi Aware enables extended range and higher-bandwidth hops when devices both support it. 130
grjte @grjte.sh · 23/12/20255/ Wi-Fi Aware has challenges: cross-platform support isn’t uniform; pairing flows and asymmetric connection limits complicate mesh formation; hardware support varies. But they're not insurmountable, and Wi-Fi Aware could be used today to improve Bitchat and similar networks. 120
grjte @grjte.sh · 23/12/20254/ Surprisingly, the power cost during discovery was similar between BLE and Wi-Fi Aware, thanks to the optimizations of the Neighbor Awareness Networking (NAN) protocol underlying Wi-Fi Aware. Active transfers consume more energy, but support significantly higher data rates. 150
grjte @grjte.sh · 23/12/20253/ Wi-Fi Aware throughput is orders of magnitude higher than BLE. In practice, Wi-Fi Aware's range on mobile devices can also be significantly higher than BLE. In tests, we saw ~4-5× improvement. Increased range means fewer devices are needed to form a reliably connected network. 241
grjte @grjte.sh · 23/12/20252/ Wi-Fi Aware is a wireless discovery and mobile p2p networking standard long-supported on Android (2017) and newly supported on iOS (2025). It lets devices efficiently find each other and set up high-bandwidth Wi-Fi links without an access point. 151
grjte @grjte.sh · 23/12/20251/ Bitchat today uses a BLE mesh for ad-hoc messaging without internet access. BLE is ubiquitous and low-power, but its short range (≈10–30 m) and low throughput can limit the real-world reliability and coverage of offline mobile ad-hoc networks that depend on it. 130
grjte @grjte.sh · 23/12/2025🧵 Could Bitchat have 5x the range and 100x the throughput for the same power expenditure? I explored how Wi-Fi Aware could improve the reliability and throughput of Bitchat and mobile ad-hoc networks in the absence of internet connectivity. #bitchat 👇 14112
grjte @grjte.sh · 10/07/20252/ Particular thanks to @expede.wtf @patternist.xyz for helpful discussions beforehand and @inkandswitch.com @martin.kleppmann.com @jakelazaroff.com @jessmart.in for referenced work For an intro to the idea of "programmable cryptography" see gubsheep's excellent essay: 0xparc.org/blog/program...0xparc.org0xPARCSupporting application R&D on Ethereum and decentralized platforms. 080
grjte @grjte.sh · 10/07/20251/ Had a great time on the ZK podcast chatting about local-first and emerging use cases for programmable cryptography (ZK, HE, MPC) with @goblinoats.com @arro.bsky.social @nicomnbl.bsky.social . I'm excited for more exploration here & I'd love to hear ideas from both local-first & prog crypto worlds 1155
grjte @grjte.sh · 27/06/2025👋I was just talking about your local-first conference talk on a podcast yesterday. I love your new website design too! Fun to engage with & exactly the kind of unique personalized view over PDS data that I was envisioning 020
Reposted by grjteJake Lazaroff @jakelazaroff.com · 17/06/2025📝 new blog post! i spent a while looking into homomorphically encrypted CRDTs. spoiler alert: they don’t work super well! (but you should still check it out — i break down what homomorphic encryption is and how it works, and there are lots of explorable explanations along the way!)jakelazaroff.comHomomorphically Encrypting CRDTs | jakelazaroff.comHomomorphic encryption allows a computer to run programs on encrypted data. Learn how homomorphic encryption works through interactive examples, build a homomorphically encrypted CRDT and see whether ... 35813
Reposted by grjteLeaflet @leaflet.pub · 22/05/2025Leaflet Publications: blogging on Bluesky — version 0.1 is here! ✅ now: make publications, add posts, publish to Bluesky 🗓️ soon: subscribing, commenting & other social features Try it: leaflet.pub/home We'd love your feedback & ideas for how we can make this great! 3234680
Reposted by grjteGerm Network @germnetwork.com · 20/05/2025We built the DMs we wish existed: a messenger that lets you share what you want people to know, and nothing else. But what if you wanted them to know…your ATProto handle? 🤯germnetwork.comBeta Waitlist — Germ NetworkSelect \u201CAccept all\u201D to agree to our use of cookies and similar technologies to enhance your browsing experience, security, analytics and customization. Select \u201DManage cookies\u201D to… 14611
Reposted by grjteNick Gerakines @ngerakines.me · 14/05/2025I've been working on a network-local ATProtocol dev environment that gives me end-to-end production functionality for Smoke Signal, including handle resolution and repository access. Here’s how I put it together. 🧵 67916
grjte @grjte.sh · 14/05/20259/ A personal sync server acts as your local-first PDS, offering local-first benefits—like offline access, data ownership, and multi-device support—while enabling the interoperability and flexibility of the AT Protocol. 👉 Read more: whtwnd.com/grjte.sh/3ln...whtwnd.comExploring interoperability & composability for local-first software | grjteCheck out the project at https://github.com/grjte/groundmist-syncCross-posted to https://baincapitalcrypto.com/atproto-for-local-first-interoperability/ This is the third exploration connecting local... 0102
grjte @grjte.sh · 14/05/20258/ Because your apps are local-first, the user-centric data repo that your personal sync server provides is portable, just like your atproto identity. Update the location of your PSS, and your local-first data will sync in the new data store as you continue to use your apps. 130
grjte @grjte.sh · 14/05/20257/ With this foundation, any AppView you want to use for interacting with your local-first data can sync and use multiple data types from your PSS without having access to the full PSS. You can do this from any device, even using different services for different devices. 130
grjte @grjte.sh · 14/05/20256/ This personal sync server (PSS) model can enable local-first interoperability. atproto identity can be used as a user-centric identity for managing and connecting to the sync server. Data can be structured, stored, and permissioned according to a Lexicon definition. 130
grjte @grjte.sh · 14/05/20255/ This can be fixed by following atproto's lead and making an architectural shift from app-centric sync servers to user-centric sync servers. Instead of local-first apps syncing data to the same server regardless of the user, each user's data syncs to a personal sync server. 140
grjte @grjte.sh · 14/05/20254/ In the local-first context, data interoperability is challenging partly because it lacks atproto's data model separation. It also lacks user-centric identity, schema standardization, a permission system, and a discovery mechanism, all of which facilitate apps sharing data. 130
grjte @grjte.sh · 14/05/20253/ For data interoperability across services, we need legibility as well as discoverability and accessibility beyond the original app. atproto enables this by combining the Lexicon system with data model separation where user-centric data repos are separated from AppViews. 150
grjte @grjte.sh · 14/05/20252/ The latest Groundmist experiment explores how a personal sync server can function as a local-first data store, mirroring the role of an atproto Personal Data Server (PDS) and building on the lexicon schema system's foundation to enable interoperability over local-first data. 160
grjte @grjte.sh · 14/05/20251/ In the 1st Groundmist experiment, we used atproto as a publishing target for data drafted privately in a local-first context. In the 2nd, we explored atproto's Lexicon schema system as a legibility foundation for describing how to interact with various local-first data. 140
grjte @grjte.sh · 14/05/2025🧵 The AT Protocol shows the power of a personal data store. All of our public atproto data is easy to find and access. We can interact with it flexibly in myriad ways and combinations. Wouldn't it be nice to do the same for our private and collaborative data? 👇 1133
grjte @grjte.sh · 09/05/2025Yeah this is an interesting point - currently the publishing is one way from private to public, but it would be great to be able to sync in both directions. There are a few issues to think through here that I mentioned in a related github issue someone raised: github.com/grjte/ground...github.comFeature request: store collection in PDS? · Issue #1 · grjte/groundmist-libraryI made a collection and published links, but I didn't save the collection url before clearing my browser cache. Now I have links in my PDS but can't get back the collection, and neither is it possi... 030
grjte @grjte.sh · 24/04/2025what's the purpose of the modes? the first part makes sense to me. what's the extra power you want from the server/client model? 100
grjte @grjte.sh · 24/04/2025Yes, I'd love to see this pattern applied to knowledge graph notes. Long form markdown was a simple place to start, but having a mixed local-first/public knowledge graph would be so useful. I'll catch up on your notes & would love to chat more also with @cdata.earth @mathewlowry.bsky.social 050
grjte @grjte.sh · 24/04/2025Interesting! My PSS prototype is built as a sync server for automerge documents, so the storage is managed by github.com/automerge/au.... I just define where to store those repos, and I do it according to a specified lexicon NSID, storing data along that path 020
grjte @grjte.sh · 23/04/20259/ Combining atproto's Lexicon schema system with local-first software offers a lightweight way to unlock interoperability. If you're interested in these ideas or working on similar ones, I'd love to hear from you. 👉 Read the post: whtwnd.com/grjte.sh/3ln...whtwnd.comExploring the AT Protocol as a legibility layer for local-first software | grjteCheck out the project at https://notebook.groundmist.xyzCross-posted to https://baincapitalcrypto.com/atproto-for-local-first-legibility/ Some people like vim and some people like emacs and some peop... 180
grjte @grjte.sh · 23/04/20258/ Second: local-first software applications can provide multiple AppViews for private data that _never gets published._ By using shared lexicons and data, independent local-first applications can smoothly interoperate, easily understand data sets, and modify them correctly. 110
grjte @grjte.sh · 23/04/20257/ atproto lexicons + local-first software enables AppViews over local-first data, enabling 2 useful models. First: local-first software can provide AppViews of private data and be connected via a lexicon to public AppViews that display data that was published to the AT Protocol 110
grjte @grjte.sh · 23/04/20256/ To explore the idea of local-first AppViews connected to public lexicons, I made a local-first markdown editor for the @whtwnd.com blog using Automerge + @inkandswitch.com's "tiny essay editor". You can use it to draft your writing in private before publishing to atproto. 132
grjte @grjte.sh · 23/04/20255/ How can we enable interoperability for local-first software? We can use Lexicon as a global schema network _without publishing data to the protocol_. Our software will still be local-first, but we'll leverage atproto's structured legibility layer to manage interoperable data. 120
grjte @grjte.sh · 23/04/20254/ Local-first software champions user ownership and control. ✅ Local & private by default ✅ Works seamlessly offline ✅ Instant interactions—no loading spinners But each app lives in its own universe - there's no connectivity layer for easily reusing or composing data. 110
grjte @grjte.sh · 23/04/20253/ atproto enables interface flexibility through its global schema network called Lexicon. Lexicon is used so every AppView on the network can agree on semantics and behaviour. It defines a schema definition language, as well as specifying the data's collection. 110
grjte @grjte.sh · 23/04/20252/ First, check out the flexibility of AppViews on the AT Protocol. Here are 2 different views of the data from my Groundmist Library collection, one on the Groundmist Library site and the other on my website. They both use the same underlying data from my atproto data repo. 110
grjte @grjte.sh · 23/04/20251/ Seph Gentle on @localfirst.fm put it like this: "_Some people like vim and some people like emacs and some people like something else, and why not have our documents able to be edited in all of those programs?_" Beyond code - why not for data across all disciplines? 120
grjte @grjte.sh · 23/04/2025🧵 The AT Protocol (atproto), which underlies Bluesky, lets us to interface with the same data in as many ways as we can conceive of through AppViews that each provide a different "view" of the network. Can we make our local-first software as interoperable as the AT Protocol? 👇 1288
grjte @grjte.sh · 23/04/2025Oh I thought you meant the whole exploration space, which does feel early! Lots to figure out, including the points you mentioned. Curious to learn more about what you're working on though if you've got a link - I wasn't sure from your site which project you're referring to here 100
grjte @grjte.sh · 23/04/2025Ooh cool thanks for sharing! Lots of related write-ups to browse through. And yes, it's exciting to have Keyhive available now 010
grjte @grjte.sh · 23/04/2025Not yet for this project, since I wanted people to try it out without download/install. But yes, browser storage isn't great - less reliable and hard to interoperate with. Sync servers add resilience, though it doesn't help if you're offline 000
grjte @grjte.sh · 23/04/2025Agreed - UX for shared but not public is tricky, which is part of why I focused on personal or fully public for this. In this model, the non-public shared data would live in the local-first sphere (e.g. using Keyhive), but that caps out at groups of ~10k. What happens between 10k and global? 010
grjte @grjte.sh · 22/04/202510/ atproto + local-first software unlocks new possibilities. Your writing, voice notes, fitness data - all can be private by default, but effortlessly shared. If you're working on similar topics, I'd love to hear from you. 👉 Read the post: whtwnd.com/grjte.sh/3ln...whtwnd.comExploring the AT Protocol as a distribution layer for local-first software | grjteCross-posted to https://baincapitalcrypto.com/atproto-for-local-first-distribution/Check out the project at https://library.groundmist.xyz What if private data could be published effortlessly, withou... 4285
grjte @grjte.sh · 22/04/20259/ Why does this matter? Data sovereignty is the antidote to the mediocre, centralized web we've been stuck with. Groundmist Library is an example of what the web *could* look like - your private and public data effortlessly linked, without loss of ownership or control. 2112
grjte @grjte.sh · 22/04/20258/ On the public side, for the information you choose to publish, 1 click makes it viewable by anyone (and any app interfacing with the AT Protocol). It can follow you anywhere you want to go and will never succumb to link rot. You can easily display it a million different ways. 2102
grjte @grjte.sh · 22/04/20257/ My recent experiment, Groundmist Library, bridges these worlds: My goal was something that's both a personal content archive and a public curated collection. When private, it's completely private - it lives on your devices, and *nobody* has access to your data other than YOU. 182
grjte @grjte.sh · 22/04/20256/ Here's where the AT Protocol comes in. It's built specifically for public, decentralized data: 🌐 Centralizes your data around a portable, user-owned identity 🌐 Customizable & flexible views of your data (via AppViews) 🌐 Built-in interoperability (structured Lexicons) 1111
grjte @grjte.sh · 22/04/20255/ The catch? Publishing to the web from local-first apps is often a frustrating experience - Data gets trapped in isolated apps with paid publishing pipelines or opinionated displays - Manual exports are a hassle - Publicly shared content becomes fragmented and disconnected 1111
grjte @grjte.sh · 22/04/20254/ Local-first software is ideal for managing private data: ✅ Fully user-owned and private by default ✅ Works seamlessly offline ✅ Instant interactions—no loading spinners 1111