- Protokol jejaring sosial terdesentralisasi berbasis situs web statis yang memungkinkan setiap pengguna memiliki dan mengelola datanya sendiri secara langsung
- Semua data disimpan dalam repositori JSON terenkripsi, dan klien browser mengagregasi feed serta menerbitkan postingan
- Berjalan lewat komunikasi langsung antarsitus web dan browser antar teman tanpa server atau relay
- Nama domain pengguna menjadi identitasnya, dengan autentikasi melalui HTTPS/TLS
- Dengan struktur yang sederhana, protokol ini mewujudkan jejaring sosial berdaulat mandiri, berfokus pada interaksi berbasis kepercayaan antarindividu
Ikhtisar Protokol sAT
s@ adalah protokol jejaring sosial terdesentralisasi berbasis situs statis yang menyimpan data setiap pengguna di situs web mereka sendiri
- Semua data disimpan dalam bentuk file JSON terenkripsi, lalu klien browser membacanya untuk menerbitkan postingan dan mengagregasi feed
- Berjalan tanpa server pusat atau relay, dan data berpindah langsung dari situs pengguna ke browser teman
- Pertukaran postingan hanya dimungkinkan jika ada hubungan saling mengikuti, sehingga menyingkirkan struktur yang berpusat pada influencer
- Protokol ini tidak bergantung pada layanan hosting tertentu seperti GitHub Pages
Identitas (Identity)
- Nama domain pengguna berperan sebagai identitas
- HTTPS/TLS digunakan untuk memverifikasi bahwa pemilik domain memang menerbitkan konten tersebut
Discovery
Model Enkripsi (Encryption Model)
- Semua data pengguna disimpan dalam repositori JSON terenkripsi, dan hanya pengguna serta para pengikutnya yang dapat mendekripsinya
- Menggunakan pasangan kunci X25519: kunci publik dipublikasikan di
profile.json, sedangkan kunci privat disimpan di localStorage browser
- Data postingan dienkripsi dengan XChaCha20-Poly1305, dan kunci konten dienkripsi per pengikut menggunakan
crypto_box_seal dari libsodium
- File
keys/_self.json berisi kunci konten pengguna dan rahasia publikasi, serta hanya dapat didekripsi oleh pemiliknya sendiri
Rotasi kunci dan unfollow
- Saat unfollow terjadi, sistem membuat kunci konten baru dan mengenkripsi ulang semua postingan
- Amplop kunci baru dibuat untuk para pengikut yang tersisa, lalu
keys/_self.json diperbarui
- Pengguna yang di-unfollow tidak lagi dapat mendekripsi postingan
Alur dekripsi
- Saat pengunjung membuka situs temannya, ia mendekripsi
keys/{follower-domain}.json dengan kunci privatnya sendiri untuk memperoleh kunci konten
- Setelah itu, ia mengambil
posts/index.json dan masing-masing postingan (posts/{id}.json.enc) lalu mendekripsinya
Struktur Data (Data Schema)
- Setiap postingan disimpan sebagai file terenkripsi terpisah, sementara
posts/index.json memuat daftar ID postingan dari yang terbaru
- Contoh objek postingan:
{
"id": "20260309T141500Z-a1b2",
"author": "alice.com",
"created_at": "2026-03-09T14:15:00Z",
"text": "Hello, decentralized world!",
"reply_to": null,
"reply_to_author": null
}
- ID postingan terdiri dari timestamp UTC ISO8601 dan hash acak 4 digit
Daftar follow (Follow List)
Agregasi feed (Feed Aggregation)
- Klien membaca daftar follow dan mendekripsi postingan tiap pengikut untuk menyusun feed kronologis
- Postingan diurutkan menurun berdasarkan
created_at
Balasan (Reply)
- Balasan adalah postingan dengan field
reply_to dan reply_to_author yang diisi
- Balasan bertingkat tidak didukung, dan hanya bisa membalas langsung ke postingan tingkat atas
- Jika postingan asli tidak bisa dilihat, misalnya karena tidak saling follow, balasan tidak akan ditampilkan
Penerbitan (Publishing)
- Membuat postingan baru → mengenkripsinya dengan kunci konten → mengunggahnya ke situs statis → memperbarui
posts/index.json
- Unggahan dapat menggunakan GitHub Contents API dan sejenisnya
- Rahasia publikasi disimpan dalam bentuk terenkripsi di
keys/_self.json
Contoh struktur situs statis
{domain}/satellite/
profile.json # kunci publik dan profil
posts/
index.json # daftar ID postingan
{id}.json.enc # postingan terenkripsi
follows/
index.json # daftar follow
keys/
_self.json # kunci konten dan kredensial
{domain}.json # kunci konten per pengikut
FAQ
- “Apakah ini RSS + enkripsi?” → Ya
- “Apakah ini versi tanpa firehose dari AT Protocol?” → Ya
- “Apakah ini skalabel?” → Tidak (“persahabatan juga tidak skalabel”)
- “Apakah s singkatan dari slow/shitty?” → Ya
- “Apakah bisa self-hosting?” → Ya, tetapi CORS harus diaktifkan
1 komentar
Komentar Hacker News
Rasanya proyek ini mengalami masalah yang sama seperti banyak jaringan sosial alternatif dan self-hosted lainnya
Desain yang berpusat pada kriptografi memang keren, tetapi saat ganti perangkat baru, memulihkan follow teman jadi sulit, dan konsep seperti pasangan kunci X25519 juga susah dipahami orang awam
Saya merasa struktur berbasis ID dan kata sandi di mana server menangani enkripsi lebih realistis
Pendekatan seperti inilah yang menurut saya bisa dipakai pengguna nonteknis dan berpotensi menggantikan big tech
Hanya saja, mungkin saya tetap harus membantu menyiapkannya untuk keluarga atau teman. Meski begitu, sepertinya mereka akan cukup senang kalau punya situs web sendiri
Dalam praktiknya, ini bisa dilihat sebagai ide untuk mengintegrasikan blog statis ke BlueSky.
Bisa ditingkatkan dengan memanfaatkan identitas BlueSky, atau lewat plugin static site generator yang otomatis mengambil informasi autentikasi
Lihat tulisan terkait
Saya kaget melihat bagian yang menyebut menyimpan private key di localStorage browser
Jika pengaturan browser direset atau browser diinstal ulang, datanya bisa hilang, sulit dibackup, dan mudah diakses malware
Pada akhirnya, jika kunci hilang maka feed juga hilang selamanya, sehingga ada risiko pengguna meninggalkan layanan
URL.createObjectURL(localStorage.getItem(...)), pengguna bisa diarahkan untuk menyimpan fileMemang akses akan hilang jika kunci lenyap, tetapi pengguna 2FA atau dompet kripto juga menerima tanggung jawab serupa, jadi bukan sesuatu yang sepenuhnya mustahil
Ada usulan untuk memakai jalur
/.well-known/alih-alih/satellite/Mengacu pada standar Well-known URI
.well-knownditujukan untuk seluruh host, jadi kurang cocok untuk unit stream. Menurut mereka, lebih baik beberapa direktori dipisahkanSaya rasa usulan
/.well-known/layak dipertimbangkan seriusIni sudah luas dipakai sebagai standar terdaftar IANA, dan berbagai file untuk keamanan maupun discovery ditempatkan di sana
Jika diletakkan di
/.well-known/satproto.jsonalih-alih/satellite/satproto.json, konflik bisa dihindari dan akan lebih jelas bahwa itu endpoint protokol.well-knownberlaku pada tingkat host, jadi tidak cocok bila ingin punya banyak direktori per akunProtokol jejaring sosial seharusnya bukan demi teknologi itu sendiri, melainkan harus memberi manfaat langsung bagi pengguna
Seperti BitTorrent, orang harus mau ikut karena memang merasa perlu; barulah efek jaringan bisa muncul
Menurut saya, pendekatan yang berangkat dari pengelolaan data dan kemudahan berbagi lebih realistis
Lemmy dan Pixelfed terasa seperti “tempat di mana tidak ada apa-apa yang terjadi” karena kontennya sedikit
Signal juga sama, karena hanya untuk pesan sederhana dan tidak ada alasan untuk terus scroll
Pada akhirnya, harus ada konten dan FOMO (takut ketinggalan) agar orang terus kembali
Untuk benar-benar membuat jejaring sosial dan messenger E2EE yang terdesentralisasi, diperlukan struktur seperti Discord di mana tiap server benar-benar di-host secara mandiri
Akun dikelola dengan protokol seperti Nostr, dan berjalan di atas Yggdrasil Network agar ketergantungan pada IPv4/6 dan DNS berkurang
Jika trafik dibungkus dengan HTTPS dan traversal NAT diotomatisasi, siapa pun bisa menjalankan server
Hanya dengan struktur seperti inilah kita bisa lepas dari kontrol big tech dan pemerintah
Bahkan jika server hilang, data tetap ada di edge, dan browser pengguna pun bisa berperan sebagai host
Lihat ephemeral-p2p-project
Setiap perangkat berfungsi sebagai server, dan pesan sepenuhnya P2P lewat WebRTC
Bahkan tanpa internet, pertukaran data tetap bisa dilakukan lewat koneksi radio
Dulu pernah ada percobaan jejaring sosial yang sepenuhnya terdesentralisasi seperti FOAF atau Pingback
Wiki IndieWeb direkomendasikan sebagai referensi bagus untuk mengeksplorasi teknologi sosial berbasis web pribadi seperti ini
Saat membaca penjelasan “sAT Protocol adalah jejaring sosial terdesentralisasi berbasis situs statis”, saya merasa ingin menggambar grafik alis yang terus terangkat
Hanya saja, karena ciphertext bisa didaftarkan secara publik, ini bisa berisiko di era komputer kuantum
Cocok untuk jaringan kecil, tetapi sulit diskalakan besar karena masalah distribusi dan rotasi kunci
Dari sudut pandang pengguna, rasanya perlu dijelaskan dulu layanan ini sebenarnya melakukan apa
Isinya penuh istilah teknis seperti fork, path, JSON, dan enkripsi, sehingga skenario penggunaan nyatanya tidak terlihat
Ada area yang tidak bisa dipenuhi Mastodon maupun Signal, jadi ada nilai untuk mencoba ini
Eksperimen jaringan terdesentralisasi seperti ini benar-benar menarik
Walaupun secara struktural punya banyak masalah, menyenangkan bisa belajar kombinasi-kombinasi baru
Hanya saja, harus mengenkripsi ulang dan membangun ulang seluruh situs setiap kali follow/unfollow terasa terlalu merepotkan
Selain itu, struktur di mana komentar tidak terlihat jika tidak follow sangat membatasi skalabilitas
Namun perpaduan RSS, ActivityPub, dan situs statis tetap terasa menarik
Upaya menerapkan kontrol akses daftar teman yang dinamis pada situs statis memang kontradiktif, tetapi menarik
Pada akhirnya ini terasa seperti struktur yang memunculkan rasa cinta dan benci sekaligus. Meski begitu, percobaan seperti ini tetap patut disambut dan diapresiasi