9 poin oleh GN⁺ 2026-03-13 | 1 komentar | Bagikan ke WhatsApp
  • 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

  • Versi protokol dan kunci publik disediakan di jalur https://{domain}/satellite/profile.json
    {
      "satproto_version": "0.1.0",
      "public_key": "<base64-encoded X25519 public key>"
    }
    
  • Jika menggunakan jalur selain default /satellite/, lokasi repositori sebenarnya bisa ditentukan melalui file .well-known/satproto.json

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

 
GN⁺ 2026-03-13
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

    • Saya juga berpikir mirip. Namun jika kita menginginkan dunia tanpa perantara, pada akhirnya perlu ada perubahan budaya agar pengguna nonteknis juga mau mengelola sedikit hal sendiri
    • Setelah pengaturan awal, cukup ekspor private key dan simpan di password manager atau semacamnya. Jika tidak sedang mengimplementasikan protokolnya sendiri, ini tidak terlalu rumit
      Hanya saja, mungkin saya tetap harus membantu menyiapkannya untuk keluarga atau teman. Meski begitu, sepertinya mereka akan cukup senang kalau punya situs web sendiri
    • Menurut FAQ di bagian bawah tulisan, ini lebih dekat ke eksperimen konseptual yang menghilangkan beberapa elemen dari AT Protocol (BlueSky)
      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
    • Dulu saya pernah mencoba ide memakai email sebagai lapisan transport untuk jejaring sosial, tetapi gagal
      Lihat tulisan terkait
    • Saya tidak yakin apakah tujuannya memang menggantikan big tech. Kalau sekadar komunitas kecil bisa memakainya dengan berguna, menurut saya itu saja sudah sukses
  • 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

    • Setuju. Melihat istilah seperti “pasangan kunci X25519” dipakai begitu saja, rasanya proyek ini lebih dekat ke eksperimen konsep daripada sesuatu yang ditujukan untuk adopsi massal
    • Saya rasa ini bisa diselesaikan hanya dengan satu tombol “ekspor kunci ke lokasi aman”. Dengan kode sederhana seperti URL.createObjectURL(localStorage.getItem(...)), pengguna bisa diarahkan untuk menyimpan file
    • Kita jangan sampai mengejar kesempurnaan lalu kehilangan solusi yang cukup baik. Menambahkan fitur unduh/unggah kunci saja sudah akan menyelesaikan sebagian besar masalah
      Memang 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

    • Ada yang membalas bercanda dengan menyebutnya “.poorly-known”
    • Ada juga yang khawatir sambil mengingat bahwa pada awal AT Proto, penggunaan root path pernah menimbulkan kerentanan keamanan
    • Ada yang berpendapat bahwa .well-known ditujukan untuk seluruh host, jadi kurang cocok untuk unit stream. Menurut mereka, lebih baik beberapa direktori dipisahkan
  • Saya rasa usulan /.well-known/ layak dipertimbangkan serius
    Ini sudah luas dipakai sebagai standar terdaftar IANA, dan berbagai file untuk keamanan maupun discovery ditempatkan di sana
    Jika diletakkan di /.well-known/satproto.json alih-alih /satellite/satproto.json, konflik bisa dihindari dan akan lebih jelas bahwa itu endpoint protokol

    • Namun ada yang menolak dengan argumen bahwa .well-known berlaku pada tingkat host, jadi tidak cocok bila ingin punya banyak direktori per akun
  • Protokol 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

    • Setelah mencoba berbagai SNS terdesentralisasi, saya merasa pada akhirnya orang tidak akan datang kalau tidak ada rangsangan dopamin
      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
    • Meski begitu, desain protokol yang baik tetap penting. Jika terlalu rumit atau tidak siap menghadapi masa depan, ide bagus sekalipun akan cepat lenyap
  • 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

    • Namun teknologi saja tidak cukup. Publik pada akhirnya akan berkumpul di platform dengan modal pemasaran terbesar
    • Menurut saya, pendekatan jaringan terdistribusi berbasis cache seperti BitTorrent atau IPFS lebih baik
      Bahkan jika server hilang, data tetap ada di edge, dan browser pengguna pun bisa berperan sebagai host
      Lihat ephemeral-p2p-project
    • Struktur seperti ini sudah sedang diuji di geogram.radio
      Setiap perangkat berfungsi sebagai server, dan pesan sepenuhnya P2P lewat WebRTC
      Bahkan tanpa internet, pertukaran data tetap bisa dilakukan lewat koneksi radio
    • Saya sedang membuat hal serupa di Mikoto Platforms. “Spaces” bisa ada di node fisik mana pun, dan DM dirutekan secara E2EE melewati banyak node
  • Dulu pernah ada percobaan jejaring sosial yang sepenuhnya terdesentralisasi seperti FOAF atau Pingback

    • Versi modernnya adalah Webmention
      Wiki IndieWeb direkomendasikan sebagai referensi bagus untuk mengeksplorasi teknologi sosial berbasis web pribadi seperti ini
    • Contoh lain yang juga jangan dilupakan adalah XFN
  • Saat membaca penjelasan “sAT Protocol adalah jejaring sosial terdesentralisasi berbasis situs statis”, saya merasa ingin menggambar grafik alis yang terus terangkat

    • Meski begitu, karena cakupan tujuannya sempit, saya rasa sistem ini tetap masuk akal
      Hanya saja, karena ciphertext bisa didaftarkan secara publik, ini bisa berisiko di era komputer kuantum
    • Ini mirip kombinasi PGP + RSS. Tiap feed dienkripsi agar hanya orang tertentu yang bisa mendekripsinya
      Cocok untuk jaringan kecil, tetapi sulit diskalakan besar karena masalah distribusi dan rotasi kunci
    • Saya memahaminya sebagai konsep “database dikirim, lalu klien membangun situs statis”
    • Bagian “Key Rotation (Unfollow)” ditulis seperti lelucon dengan ASCII art
  • 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

    • Meski begitu, saya punya cukup banyak teman yang tertarik pada teknologi, jadi saya berniat bereksperimen dengan mereka yang punya selera keamanan yang paranoid
      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