- Statik web sitelerini kullanan merkeziyetsiz bir sosyal ağ protokolü olup, her kullanıcının kendi verisini doğrudan sahiplenip yönettiği bir yapı sunar
- Tüm veriler şifrelenmiş JSON deposunda tutulur ve tarayıcı istemcisi akışı birleştirip gönderileri yayımlar
- Sunucu veya relay olmadan, arkadaşlar arasında web siteleri ile tarayıcılar arasında doğrudan iletişimle çalışır
- Kullanıcının alan adı doğrudan kimliğidir ve HTTPS/TLS ile doğrulanır
- Basit bir yapıyla öz egemen sosyal ağ kurmayı amaçlar ve kişiler arası güvene dayalı etkileşime odaklanır
sAT Protocol genel bakış
s@, statik site tabanlı merkeziyetsiz bir sosyal ağ protokolüdür ve her kullanıcı verisini kendi web sitesinde saklar
- Tüm veriler şifrelenmiş JSON dosyaları biçiminde saklanır; tarayıcı istemcisi bunları okuyarak gönderi yayımlama ve akış toplama işlemlerini yürütür
- Merkezi sunucu veya relay olmadan çalışır; veriler kullanıcının sitesinden arkadaşının tarayıcısına doğrudan gider
- Gönderi alışverişi için karşılıklı takip ilişkisi gerekir; influencer merkezli yapı özellikle dışlanır
- Protokol, GitHub Pages gibi belirli bir barındırma hizmetine bağımlı değildir
Kimlik (Identity)
- Kullanıcının alan adı kimlik işlevi görür
- HTTPS/TLS, alan adı sahibinin içeriği yayımladığını doğrular
Keşif (Discovery)
Şifreleme modeli (Encryption Model)
- Tüm kullanıcı verileri şifrelenmiş JSON deposunda saklanır ve yalnızca kullanıcı ile takipçileri tarafından çözülebilir
- X25519 anahtar çifti kullanılır; açık anahtar
profile.json içinde yayımlanır, özel anahtar ise tarayıcı localStorage alanında saklanır
- Gönderi verileri XChaCha20-Poly1305 ile şifrelenir; içerik anahtarı ise her takipçi için
libsodium içindeki crypto_box_seal ile şifrelenir
keys/_self.json dosyası kullanıcının içerik anahtarını ve yayımlama sırlarını içerir; bunu yalnızca kullanıcı çözebilir
Anahtar döndürme ve takibi bırakma
- Takip bırakıldığında yeni bir içerik anahtarı üretilir ve tüm gönderiler yeniden şifrelenir
- Kalan takipçiler için yeni anahtar zarfları oluşturulur ve
keys/_self.json güncellenir
- Takibi bırakılan kullanıcı artık gönderileri çözemez
Çözme akışı
- Bir ziyaretçi arkadaşının sitesini açtığında, kendi özel anahtarıyla
keys/{follower-domain}.json dosyasını çözerek içerik anahtarını elde eder
- Ardından
posts/index.json ve tekil gönderileri (posts/{id}.json.enc) alıp çözer
Veri yapısı (Data Schema)
- Her gönderi ayrı ayrı şifrelenmiş bir dosyada saklanır ve
posts/index.json gönderi ID'lerini yeniden eskiye sıralar
- Gönderi nesnesi örneği:
{
"id": "20260309T141500Z-a1b2",
"author": "alice.com",
"created_at": "2026-03-09T14:15:00Z",
"text": "Hello, decentralized world!",
"reply_to": null,
"reply_to_author": null
}
- Gönderi ID'si, ISO8601 UTC zaman damgası ile 4 haneli rastgele bir hash'ten oluşur
Takip listesi (Follow List)
Akış toplama (Feed Aggregation)
- İstemci takip listesini okur, her takip edilenin gönderilerini çözer ve zaman sıralı bir akış oluşturur
- Gönderiler
created_at alanına göre azalan sırada dizilir
Yanıtlar (Reply)
- Yanıtlar,
reply_to ve reply_to_author alanları ayarlanmış gönderilerdir
- İç içe yanıtlar desteklenmez; yalnızca en üst düzey gönderilere doğrudan yanıt verilebilir
- Orijinal gönderi görülemiyorsa (takip etmeme durumu vb.) yanıt da gösterilmez
Yayımlama (Publishing)
- Yeni gönderi oluşturma → içerik anahtarıyla şifreleme → statik siteye yükleme →
posts/index.json güncelleme
- Yükleme için GitHub Contents API gibi araçlar kullanılabilir
- Yayımlama sırları
keys/_self.json içinde şifrelenmiş olarak saklanır
Statik site yapısı örneği
{domain}/satellite/
profile.json # açık anahtar ve profil
posts/
index.json # gönderi ID listesi
{id}.json.enc # şifrelenmiş gönderi
follows/
index.json # takip listesi
keys/
_self.json # içerik anahtarı ve kimlik bilgileri
{domain}.json # takipçi başına içerik anahtarı
SSS
- “RSS + şifreleme mi?” → Evet
- “AT Protocol'ün firehose olmayan sürümü mü?” → Evet
- “Ölçeklenebilir mi?” → Hayır (“dostluk da ölçeklenmez”)
- “s, slow/shitty anlamına mı geliyor?” → Evet
- “Self-hosting mümkün mü?” → Evet, ancak CORS etkin olmalı
1 yorum
Hacker News görüşleri
Bu projenin de birçok alternatif sosyal / self-hosted ağın yaşadığı sorunları yaşadığını düşünüyorum
Kriptografi odaklı tasarım havalı olsa da, yeni bir cihaza geçince arkadaş takiplerini geri yüklemek zor ve X25519 anahtar çifti gibi kavramları sıradan kullanıcıların anlaması da güç
Bana göre sunucunun şifrelemeyi kullanıcı adına hallettiği basit bir kullanıcı adı / parola tabanlı yapı daha gerçekçi
Asıl büyük teknoloji şirketlerine alternatif olabilecek, teknik olmayan kullanıcıların da kullanabileceği yönün bu olduğunu düşünüyorum
Yine de ailem veya arkadaşlarım için kurulumu benim yapmam gerekebilir. Ama kendi web sitelerine sahip olunca bundan epey hoşlanacaklarını düşünüyorum
Pratikte statik bir blogu BlueSky ile entegre etme fikri gibi görülebilir.
BlueSky kimliğini kullanmak ya da kimlik bilgilerini statik site üreticisi eklentisiyle otomatik almak gibi iyileştirmeler mümkün olabilir
İlgili yazı
Özel anahtarın tarayıcının localStorage'ında saklanması kısmı beni şaşırttı
Tarayıcı ayarları sıfırlanınca veya yeniden kurulunca veri kaybolabilir, yedeklemek zordur ve kötü amaçlı yazılımların erişmesi kolaydır
Sonuçta anahtar kaybolursa akış da sonsuza kadar yok olur ve bu da kullanıcıların platformdan uzaklaşmasına yol açabilir
URL.createObjectURL(localStorage.getItem(...))gibi basit bir kodla dosya kaydetmeye yönlendirmek mümkünElbette anahtar kaybolursa erişim de gider ama 2FA veya kripto cüzdanı kullanıcıları da benzer sorumluluklar üstleniyor; yani tamamen imkansız bir şey değil
/satellite/yolu yerine/.well-known/kullanılsa nasıl olur diye öneriliyorWell-known URI standardına atıf yapılıyor
.well-knownun tüm host için geçerli olduğunu, bu yüzden akış düzeyinde uygun olmadığını; birden çok dizini ayrı tutmanın daha iyi olduğunu savunanlar da var.well-known/önerisinin ciddi biçimde değerlendirilmeye değer olduğunu düşünüyorumZaten IANA kayıtlı bir standart olarak yaygın biçimde kullanılıyor ve güvenlik / keşif dosyaları burada bulunuyor
/satellite/satproto.jsonyerine/.well-known/satproto.jsonkullanmak hem çakışmaları önler hem de bunun bir protokol uç noktası olduğunu daha açık gösterir.well-knownhost düzeyinde çalıştığı için, hesap başına birden fazla dizin isteniyorsa uygun olmayacağı yönünde itiraz geliyorSosyal ağ protokolleri, teknoloji kendi başına var olsun diye değil, kullanıcıya doğrudan fayda sağlamak için olmalı
BitTorrent gibi, insanların sadece “ihtiyaç duyduğu için” katıldığı yapılar ağ etkisi yaratır
Veri yönetimi ve paylaşım kolaylığından yola çıkan yaklaşımın daha gerçekçi olduğunu düşünüyorum
Lemmy veya Pixelfed içerik azlığından dolayı “hiçbir şeyin olmadığı yer” gibi hissettirdi
Signal da benzer şekilde sadece mesajlaşma için, yani “kaydırıp bakmak” için bir sebep vermiyor
Sonuçta sürekli ziyaret için içerik ve FOMO(kaçırma korkusu) gerekiyor
Gerçekten merkeziyetsiz sosyal / E2EE mesajlaşma yapmak istiyorsak, Discord benzeri şekilde her sunucunun gerçekten bağımsız biçimde barındırıldığı bir yapı gerekiyor
Hesaplar Nostr benzeri bir protokolle yönetilmeli ve IPv4/6 ile DNS bağımlılığını azaltmak için Yggdrasil Network üzerinde çalışmalı
Trafiği HTTPS ile sarmalayıp NAT aşmayı otomatikleştirirsen herkes sunucu çalıştırabilir
Ancak böyle bir yapıyla büyük teknoloji şirketleri ve devlet kontrolünden çıkılabilir
Sunucu ortadan kalksa bile veri uçlarda kalır ve kullanıcı tarayıcısı host görevi görebilir
ephemeral-p2p-project
Her cihaz sunucu gibi çalışıyor ve WebRTC ile tam P2P mesajlaşma gerçekleştiriyor
İnternet olmasa bile radyo bağlantısıyla veri alışverişi mümkün
Geçmişte FOAF veya Pingback gibi tamamen merkeziyetsiz sosyal girişimler vardı
IndieWeb wiki'si, kişisel web tabanlı sosyal teknolojileri keşfetmek için iyi bir kaynak olarak öneriliyor
“sAT Protocol, statik siteler tabanlı merkeziyetsiz bir sosyal ağdır” açıklamasını okurken giderek yükselen kaş grafiği çizmek istedim
Ancak şifreli metinlerin herkesçe listelenebilir olması, kuantum bilgisayar çağında risk yaratabilir
Küçük ağlar için uygun ama anahtar dağıtımı ve rotasyonu sorunları yüzünden büyük ölçekte genişlemesi zor
Kullanıcı açısından bunun ne işe yarayan bir hizmet olduğu baştan anlatılmalı gibi geliyor
Fork, yol, JSON, şifreleme gibi teknik terimler çok fazla; gerçek kullanım senaryosu görünmüyor
Mastodon veya Signal'in karşılamadığı bir alan var ve bununla denemeye değer
Bu tür merkeziyetsiz ağ deneylerini görmek gerçekten ilginç
Yapısal olarak pek çok sorun olsa bile yeni kombinasyonlar öğrenmek keyifli
Ama takip / takipten çıkma olduğunda tüm siteyi yeniden şifreleyip yeniden derlemek zorunda olmak fazla zahmetli
Ayrıca takip etmiyorsan yorumları görememe yapısı ölçeklenebilirliği ciddi biçimde sınırlıyor
Yine de RSS, ActivityPub ve statik sitelerin karışımı olması çekici
Statik siteyle dinamik arkadaş listesi erişim kontrolü uygulamaya çalışmak çelişkili ama ilginç
Sonuçta hem sevgi hem nefret uyandıran bir yapı. Yine de böyle denemeler görmek güzel ve buna minnettarım