CINXE.COM

Federation Architecture Overview - Bluesky

<!DOCTYPE html><html lang="en"><head><title>Federation Architecture Overview - Bluesky</title><link rel="apple-touch-icon" sizes="180x180" href="/about/images/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="/about/images/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/about/images/favicon-16x16.png"/><link rel="manifest" href="/about/images/site.webmanifest"/><link rel="mask-icon" href="/about/images/safari-pinned-tab.svg" color="#044318"/><meta name="msapplication-TileColor" content="#044318"/><meta name="theme-color" content="#044318"/><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta property="og:site_name" content="Bluesky"/><meta property="og:title" content="Federation Architecture Overview - Bluesky"/><meta property="og:url" content="https://bsky.social/about/blog/5-5-2023-federation-architecture"/><meta name="twitter:url" content="https://bsky.social/about/blog/5-5-2023-federation-architecture"/><meta property="og:image" content="blogposts/federation-architecture-diagram.png"/><meta name="twitter:title" content="Federation Architecture Overview - Bluesky"/><meta name="description" content="Soon, we’re launching a sandbox environment for federation. In advance, we want to share some technical details about our design decisions."/><meta name="og:description" content="Soon, we’re launching a sandbox environment for federation. In advance, we want to share some technical details about our design decisions."/><meta name="twitter:description" content="Soon, we’re launching a sandbox environment for federation. In advance, we want to share some technical details about our design decisions."/><meta name="twitter:site" content="@bluesky"/><meta property="twitter:image" content="blogposts/federation-architecture-diagram.png"/><meta name="twitter:card" content="summary_large_image"/><meta name="next-head-count" content="22"/><link rel="preload" href="/about/_next/static/css/56ad064a88b7ffa4.css" as="style" crossorigin=""/><link rel="stylesheet" href="/about/_next/static/css/56ad064a88b7ffa4.css" crossorigin="" data-n-g=""/><link rel="preload" href="/about/_next/static/css/475b753f4becb243.css" as="style" crossorigin=""/><link rel="stylesheet" href="/about/_next/static/css/475b753f4becb243.css" crossorigin="" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/about/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/about/_next/static/chunks/webpack-705b2d5e34302617.js" defer="" crossorigin=""></script><script src="/about/_next/static/chunks/framework-fa877b8be7542607.js" defer="" crossorigin=""></script><script src="/about/_next/static/chunks/main-2e8f584bd8144e14.js" defer="" crossorigin=""></script><script src="/about/_next/static/chunks/pages/_app-e6ca888df01112c8.js" defer="" crossorigin=""></script><script src="/about/_next/static/chunks/pages/blog/%5Bslug%5D-c8bb2b562327ca62.js" defer="" crossorigin=""></script><script src="/about/_next/static/4KDhGWbtBRU6lupWc--pk/_buildManifest.js" defer="" crossorigin=""></script><script src="/about/_next/static/4KDhGWbtBRU6lupWc--pk/_ssgManifest.js" defer="" crossorigin=""></script></head><body><div id="__next"><div class="grid grid-cols-8 fixed border-b z-20 duration-300 w-full p-4 py-5 800:grid-cols-12 800:px-8 800:py-8 text-white border-transparent" style="opacity:0;transform:translateY(-100px) translateZ(0)"><div class="col-span-3 800:col-span-4 1200:col-span-5 flex items-center"><a class="flex items-center 800:hover:text-dark-blue duration-300" href="/about"><div class="1200:hidden"><svg class="w-[32px] h-auto mr-3" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 568 501"><title>Bluesky butterfly logo</title><path fill="currentColor" d="M123.121 33.664C188.241 82.553 258.281 181.68 284 234.873c25.719-53.192 95.759-152.32 160.879-201.21C491.866-1.611 568-28.906 568 57.947c0 17.346-9.945 145.713-15.778 166.555-20.275 72.453-94.155 90.933-159.875 79.748C507.222 323.8 536.444 388.56 473.333 453.32c-119.86 122.992-172.272-30.859-185.702-70.281-2.462-7.227-3.614-10.608-3.631-7.733-.017-2.875-1.169.506-3.631 7.733-13.43 39.422-65.842 193.273-185.702 70.281-63.111-64.76-33.89-129.52 80.986-149.071-65.72 11.185-139.6-7.295-159.875-79.748C9.945 203.659 0 75.291 0 57.946 0-28.906 76.135-1.612 123.121 33.664Z"></path></svg></div><svg aria-label="wordmark bluesky" class="h-auto w-[90px] 800:w-[116px] relative top-[3px]" width="116" height="31" viewBox="0 0 116 31" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Bluesky</title><path d="M15.3666 11.4928C18.0902 12.4818 19.536 14.7668 19.536 17.3245C19.536 21.6557 16.6779 24.2816 11.1971 24.2816H0V0H10.8272C16.0391 0 18.5609 2.69417 18.5609 6.27503C18.5609 8.66227 17.4849 10.4015 15.3666 11.4928ZM10.491 3.78548H4.53936V10.1287H10.491C12.8111 10.1287 14.0552 8.90099 14.0552 6.85479C14.0552 4.9791 12.7774 3.78548 10.491 3.78548ZM4.53936 20.462H10.9617C13.5172 20.462 14.8958 19.2684 14.8958 17.1199C14.8958 14.8691 13.5844 13.7437 10.9617 13.7437H4.53936V20.462Z" fill="currentColor"></path><path d="M25.8299 24.2816H21.5932V0H25.8299V24.2816Z" fill="currentColor"></path><path d="M39.8775 16.5402V6.68427H44.1143V24.2816H40.012V21.7239C38.7007 23.7019 36.8849 24.6909 34.5648 24.6909C30.8997 24.6909 28.5123 22.44 28.5123 18.3476V6.68427H32.7491V17.6315C32.7491 19.8482 33.8251 20.9736 36.0107 20.9736C38.0618 20.9736 39.8775 19.4389 39.8775 16.5402Z" fill="currentColor"></path><path d="M63.3989 15.7899V16.813H50.4197C50.7224 19.8482 52.37 21.3487 54.9255 21.3487C56.8757 21.3487 58.1871 20.4962 58.8932 18.8251H62.9618C62.0539 22.4059 59.0277 24.6909 54.8918 24.6909C52.3027 24.6909 50.218 23.8383 48.6376 22.1672C47.0572 20.4962 46.2502 18.2794 46.2502 15.4829C46.2502 12.7206 47.0236 10.5038 48.604 8.79868C50.1844 7.12761 52.2355 6.27503 54.8246 6.27503C57.4473 6.27503 59.5321 7.16172 61.0788 8.90099C62.6256 10.6403 63.3989 12.9593 63.3989 15.7899ZM54.791 9.61716C52.4708 9.61716 50.8569 10.9813 50.4534 13.8119H59.1622C58.7923 11.2541 57.2456 9.61716 54.791 9.61716Z" fill="currentColor"></path><path d="M72.7892 24.7591C67.7455 24.7591 65.0891 22.747 64.8537 18.6887H68.9896C69.2249 20.8713 70.3009 21.6898 72.8564 21.6898C75.1429 21.6898 76.2862 20.9736 76.2862 19.5754C76.2862 18.3135 75.4792 17.6997 72.8901 17.2563L70.9062 16.9153C67.1066 16.2673 65.2236 14.494 65.2236 11.5952C65.2236 8.28713 67.8127 6.27503 72.4193 6.27503C77.3622 6.27503 79.9177 8.25302 80.0858 12.2431H76.0844C75.9835 10.0946 74.7394 9.34433 72.4193 9.34433C70.4018 9.34433 69.3931 10.0264 69.3931 11.3905C69.3931 12.6183 70.2673 13.1639 72.2848 13.5391L74.4704 13.8801C78.6735 14.6645 80.4893 16.2332 80.4893 19.2343C80.4893 22.7811 77.6648 24.7591 72.7892 24.7591Z" fill="currentColor"></path><path d="M99.0846 24.2816H94.2426L89.1989 16.0968L86.5762 18.7569V24.2816H82.4067V0H86.5762V13.9824L93.6374 6.68427H98.6811L92.1243 13.3344L99.0846 24.2816Z" fill="currentColor"></path><path d="M110.149 11.1177L111.562 6.68427H116L109.309 25.714C108.603 27.6579 107.728 29.0561 106.619 29.8405C105.509 30.6249 103.929 31 101.844 31C101.138 31 100.533 30.9659 99.9946 30.8977V27.5215H101.609C103.525 27.5215 104.467 26.3278 104.467 24.6909C104.467 23.8724 104.198 22.6788 103.66 21.1441L98.616 6.68427H103.189L104.601 11.0836C105.644 14.3916 106.551 17.6656 107.358 20.9054C108.098 18.1089 109.04 14.835 110.149 11.1177Z" fill="currentColor"></path></svg></a></div><div class="hidden 1200:inline-flex col-span-2 items-center justify-center"><a class="inline-block hover:text-dark-blue duration-300" href="/about"><svg class="w-[40px] h-auto" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 568 501"><title>Bluesky butterfly logo</title><path fill="currentColor" d="M123.121 33.664C188.241 82.553 258.281 181.68 284 234.873c25.719-53.192 95.759-152.32 160.879-201.21C491.866-1.611 568-28.906 568 57.947c0 17.346-9.945 145.713-15.778 166.555-20.275 72.453-94.155 90.933-159.875 79.748C507.222 323.8 536.444 388.56 473.333 453.32c-119.86 122.992-172.272-30.859-185.702-70.281-2.462-7.227-3.614-10.608-3.631-7.733-.017-2.875-1.169.506-3.631 7.733-13.43 39.422-65.842 193.273-185.702 70.281-63.111-64.76-33.89-129.52 80.986-149.071-65.72 11.185-139.6-7.295-159.875-79.748C9.945 203.659 0 75.291 0 57.946 0-28.906 76.135-1.612 123.121 33.664Z"></path></svg></a></div><div class="col-span-5 800:col-span-8 1200:col-span-5 text-right"><nav class="hidden 800:block"><div class=" inline-flex items-center text-dark-blue px-4 800:pl-2 rounded-[20px] text-16 -tracking-[0.48px] bg-white shadow-menu"><a target="_self" class="pt-2 py-[7px] px-4 font-500 hover:text-primary-blue transition-all duration-300" href="/about/faq">Company</a><a target="_self" class="pt-2 py-[7px] px-4 font-500 hover:text-primary-blue transition-all duration-300" href="/about/blog">Blog</a><a target="_blank" class="pt-2 py-[7px] px-4 font-500 hover:text-primary-blue transition-all duration-300" href="https://atproto.com/">AT Protocol</a><a target="_blank" class="pt-2 py-[7px] px-4 font-500 hover:text-primary-blue transition-all duration-300" href="https://bsky.app">App</a><a href="https://github.com/bluesky-social" target="_blank" class="hover:text-primary-blue ml-2 transition-all duration-300"><svg class="w-5 h-5" width="27" height="26" viewBox="0 0 27 26" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Github Icon</title><path fill-rule="evenodd" clip-rule="evenodd" d="M13.211 0.856445C6.01634 0.856445 0.200195 6.60845 0.200195 13.7245C0.200195 19.4127 3.9268 24.2276 9.09659 25.9318C9.74294 26.0599 9.9797 25.6549 9.9797 25.3142C9.9797 25.0159 9.9584 23.9934 9.9584 22.9279C6.33912 23.695 5.58544 21.394 5.58544 21.394C5.00379 19.9026 4.14199 19.5193 4.14199 19.5193C2.9574 18.7311 4.22827 18.7311 4.22827 18.7311C5.54229 18.8163 6.23179 20.0519 6.23179 20.0519C7.39481 22.0118 9.2689 21.458 10.0228 21.1171C10.1304 20.2862 10.4753 19.711 10.8415 19.3915C7.95488 19.0932 4.91777 17.9854 4.91777 13.0426C4.91777 11.6365 5.43443 10.4861 6.2531 9.59139C6.12393 9.27189 5.67146 7.95076 6.38253 6.18254C6.38253 6.18254 7.4811 5.8416 9.95813 7.50341C11.0186 7.22173 12.1123 7.07844 13.211 7.07724C14.3095 7.07724 15.4294 7.22653 16.4635 7.50341C18.9408 5.8416 20.0394 6.18254 20.0394 6.18254C20.7504 7.95076 20.2977 9.27189 20.1685 9.59139C21.0088 10.4861 21.5041 11.6365 21.5041 13.0426C21.5041 17.9854 18.467 19.0717 15.5588 19.3915C16.0329 19.7962 16.4419 20.5631 16.4419 21.7775C16.4419 23.5031 16.4206 24.8881 16.4206 25.314C16.4206 25.6549 16.6577 26.0599 17.3037 25.932C22.4735 24.2274 26.2001 19.4127 26.2001 13.7245C26.2214 6.60845 20.384 0.856445 13.211 0.856445Z" fill="currentColor"></path></svg></a></div></nav></div><nav class="800:hidden col-span-8"><button class=" absolute right-3 top-[14px] rounded-full h-[40px] w-[40px] inline-flex flex-row justify-center items-center shadow-menu bg-white" aria-label="toggle mobile menu"><div><span class="w-[16px] h-[2px] bg-black block my-[3px]"></span><span class="w-[16px] h-[2px] bg-black block my-[3px]" style="opacity:1"></span><span class="w-[16px] h-[2px] bg-black block my-[3px]"></span></div></button><ul class="w-full ml-0 user-select-none pointer-events-none" style="opacity:0;height:0px"><div class="py-8"><li class="block w-full pl-0 ml-0 pb-2" style="opacity:0;transform:translateY(2px) translateZ(0)"><a target="_self" class="text-black text-sans-34 font-500 -tracking-[1.36px]" href="/about/faq">Company</a></li><li class="block w-full pl-0 ml-0 pb-2" style="opacity:0;transform:translateY(2px) translateZ(0)"><a target="_self" class="text-black text-sans-34 font-500 -tracking-[1.36px]" href="/about/blog">Blog</a></li><li class="block w-full pl-0 ml-0 pb-2" style="opacity:0;transform:translateY(2px) translateZ(0)"><a target="_blank" class="text-black text-sans-34 font-500 -tracking-[1.36px]" href="https://atproto.com/">AT Protocol<svg class="w-5 h-5 inline-block ml-2 transform -rotate-45" width="19" height="19" viewBox="0 0 19 19" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Arrow Icon</title><path d="M5.88809 9.20633L13.7935 9.20634M13.7935 9.20634L10.4996 5.9124M13.7935 9.20634L10.4996 12.5003M18.2258 9.20633C18.2258 13.8372 14.4717 17.5913 9.84082 17.5913C5.20991 17.5913 1.45582 13.8372 1.45582 9.20633C1.45582 4.57542 5.20991 0.821327 9.84082 0.821327C14.4717 0.821327 18.2258 4.57542 18.2258 9.20633Z" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></li><li class="block w-full pl-0 ml-0 pb-2" style="opacity:0;transform:translateY(2px) translateZ(0)"><a target="_blank" class="text-black text-sans-34 font-500 -tracking-[1.36px]" href="https://bsky.app">App<svg class="w-5 h-5 inline-block ml-2 transform -rotate-45" width="19" height="19" viewBox="0 0 19 19" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Arrow Icon</title><path d="M5.88809 9.20633L13.7935 9.20634M13.7935 9.20634L10.4996 5.9124M13.7935 9.20634L10.4996 12.5003M18.2258 9.20633C18.2258 13.8372 14.4717 17.5913 9.84082 17.5913C5.20991 17.5913 1.45582 13.8372 1.45582 9.20633C1.45582 4.57542 5.20991 0.821327 9.84082 0.821327C14.4717 0.821327 18.2258 4.57542 18.2258 9.20633Z" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></li><ul class="flex justify-start mt-8"><li class="block text-black pl-0 ml-0" style="opacity:0;transform:translateY(2px) translateZ(0)"><a target="_blank" href="https://bsky.app/profile/bsky.app" class="block text-black text-18"><svg class="w-7 h-7" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 568 501"><title>Bluesky butterfly logo</title><path fill="currentColor" d="M123.121 33.664C188.241 82.553 258.281 181.68 284 234.873c25.719-53.192 95.759-152.32 160.879-201.21C491.866-1.611 568-28.906 568 57.947c0 17.346-9.945 145.713-15.778 166.555-20.275 72.453-94.155 90.933-159.875 79.748C507.222 323.8 536.444 388.56 473.333 453.32c-119.86 122.992-172.272-30.859-185.702-70.281-2.462-7.227-3.614-10.608-3.631-7.733-.017-2.875-1.169.506-3.631 7.733-13.43 39.422-65.842 193.273-185.702 70.281-63.111-64.76-33.89-129.52 80.986-149.071-65.72 11.185-139.6-7.295-159.875-79.748C9.945 203.659 0 75.291 0 57.946 0-28.906 76.135-1.612 123.121 33.664Z"></path></svg></a></li><li class="block text-black pl-0 ml-0" style="opacity:0;transform:translateY(2px) translateZ(0)"><a target="_blank" href="https://github.com/bluesky-social"><svg class="w-7 h-7 mx-3 " width="27" height="26" viewBox="0 0 27 26" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Github Icon</title><path fill-rule="evenodd" clip-rule="evenodd" d="M13.211 0.856445C6.01634 0.856445 0.200195 6.60845 0.200195 13.7245C0.200195 19.4127 3.9268 24.2276 9.09659 25.9318C9.74294 26.0599 9.9797 25.6549 9.9797 25.3142C9.9797 25.0159 9.9584 23.9934 9.9584 22.9279C6.33912 23.695 5.58544 21.394 5.58544 21.394C5.00379 19.9026 4.14199 19.5193 4.14199 19.5193C2.9574 18.7311 4.22827 18.7311 4.22827 18.7311C5.54229 18.8163 6.23179 20.0519 6.23179 20.0519C7.39481 22.0118 9.2689 21.458 10.0228 21.1171C10.1304 20.2862 10.4753 19.711 10.8415 19.3915C7.95488 19.0932 4.91777 17.9854 4.91777 13.0426C4.91777 11.6365 5.43443 10.4861 6.2531 9.59139C6.12393 9.27189 5.67146 7.95076 6.38253 6.18254C6.38253 6.18254 7.4811 5.8416 9.95813 7.50341C11.0186 7.22173 12.1123 7.07844 13.211 7.07724C14.3095 7.07724 15.4294 7.22653 16.4635 7.50341C18.9408 5.8416 20.0394 6.18254 20.0394 6.18254C20.7504 7.95076 20.2977 9.27189 20.1685 9.59139C21.0088 10.4861 21.5041 11.6365 21.5041 13.0426C21.5041 17.9854 18.467 19.0717 15.5588 19.3915C16.0329 19.7962 16.4419 20.5631 16.4419 21.7775C16.4419 23.5031 16.4206 24.8881 16.4206 25.314C16.4206 25.6549 16.6577 26.0599 17.3037 25.932C22.4735 24.2274 26.2001 19.4127 26.2001 13.7245C26.2214 6.60845 20.384 0.856445 13.211 0.856445Z" fill="currentColor"></path></svg></a></li><li class="block text-black pl-0 ml-0" style="opacity:0;transform:translateY(2px) translateZ(0)"><a target="_blank" href="https://twitter.com/bluesky"><svg class="w-7 h-7 " width="27" height="25" viewBox="0 0 27 25" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Twitter Icon</title><path d="M20.7915 0.860352H24.8397L15.9957 11.0671L26.4 24.9561H18.2535L11.8728 16.5325L4.57194 24.9561H0.521318L9.98092 14.0389L0 0.860352H8.35333L14.1209 8.55988L20.7915 0.860352ZM19.3708 22.5095H21.6139L7.13447 3.17849H4.72735L19.3708 22.5095Z" fill="currentColor"></path></svg></a></li></ul></div></ul></nav></div><div class="bg-gradient-to-b from-primary-blue from-40% to-secondary-blue __className_7483a9"><main class="pt-20 800:pt-40 800:min-h-[80vh]" style="opacity:0;transform:translateY(10px) translateZ(0)"><div class="px-4 800:px-8"><section class="bg-white-blue text-black rounded-[20px] py-8 800:pb-24"><header class="text-center relative border-b mb-2 800:mb-4 px-6"><section class="flex absolute -top-[24px] left-4 800:left-8 800:-top-[40px] text-sans-14 items-center mx-auto text-other-blue"><a href="/about/blog">Blog</a><svg class="mx-2 w-[6px] h-auto" width="8" height="12" viewBox="0 0 8 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 10L6 6L2 2" stroke="#667999" stroke-width="2" stroke-linecap="square"></path></svg><span class="text-ellipsis overflow-hidden text-nowrap whitespace-nowrap max-w-[60vw] block">Federation Architecture Overview</span></section><h1 class=" mb-10 mt-2 800:mb-14 800:mt-8 text-sans-20 pt-6 800:text-sans-40 font-500 -tracking-[0.36px] 800:-tracking-[0.08px] max-w-[680px] mx-auto">Federation Architecture Overview</h1><section class="max-w-[918px] mx-auto mb-8 mt-8 800:mt-10 800:mb-10 px-4 600:px-6"><div class="text-other-blue text-sans-16 -tracking-[0.16px]"><p class="font-600">May 5, 2023</p><p><span class="italic">by <!-- -->The Bluesky Team</span></p></div></section></header><section class="max-w-[918px] mx-auto px-4 pt-2 600:px-6"><div class="blog"><p>Many of our experiences with social media today are defined by the same constraining dynamics — one private company owns all of our data, populates our feeds with an algorithm of their choice, and we’re unable to take our followers and posts with us to a new home if we ever decide to leave. The AT Protocol, a federated networking model which Bluesky is built upon, changes this.</p> <p>Soon, we’re launching a sandbox environment to begin the testing phase of federation for the AT Protocol with allow-listed servers. In advance of this launch, we want to share some technical details about our design decisions with you.</p> <p>At a high level, federation means that anyone can run the parts that make up the AT Protocol themselves, such as their own server. Sandbox mode means that people can start experimenting with federation without interfacing with the actual network — think of it as a test network. If you’d like to run your own server, you’ll be able to do so in the near future.</p> <h4>Update: Join the atproto federation developer sandbox <a href="https://atproto.com/blog/federation-developer-sandbox">here</a>!</h4> <h2>Federation Architecture</h2> <p>The AT Protocol is made up of a bunch of pieces that stack together. (Technically, the lower-level primitives that can get stacked together differently are the <a href="https://atproto.com/guides/overview">repositories, lexicons, and DIDs</a>.) This means that the architecture we’re proposing for launching federation is not the only network architecture that’s possible – it’s just what we expect to be the most powerful and robust way of supporting public conversations on a global social network, so we implemented it first.</p> <img src="/about/images/blogposts/federation-architecture-diagram.png" alt="Diagram of federation architecture" width="600"> <p>The three main services of our first federation are personal data servers (PDS), relays, and App Views. Developers can also run feed generators (custom feeds), and labelers are in active development.</p> <ul> <li>Personal Data Server (PDS) <ul> <li>A PDS acts as the participant’s agent in the network. This is what hosts your data (like the posts you’ve created) in your <a href="https://atproto.com/guides/data-repos">repo</a>. It also handles your account &#x26; login, manages your repo’s <a href="https://atproto.com/guides/overview#account-portability">signing key</a>, stores any of your private data (like which accounts you have muted), and handles the services you talk to for any request.</li> </ul> </li> <li>Relay <ul> <li>The Relay handles "big-world" networking. It crawls the network, gathering as much data as it can, and outputs it in one big stream for other services to use. It’s analogous to a firehose provider or a super-powered relay node.</li> </ul> </li> <li>App Views <ul> <li>An App View is the piece that actually assembles your feed and all the other data you see in the app, and is generally expected to be downstream from a Relay's firehose of data. This is a highly semantically-aware service that produces aggregations across the network and views over some subset of the network. This is analogous to a prism that takes in the Relay's raw firehose of data from the network, and outputs views that enable an app to show a curated feed to a user. For example, the Relay might crawl to grab data such as a certain post’s likes and reposts, and the app view will output the count of those metrics.</li> </ul> </li> </ul> <img src="/about/images/blogposts/app-view-prism.png" alt="The App View visualized as a prism" width="600"> <figcaption>Base image of prism: Wikimedia Commons</figcaption> <p>The federation architecture allows anyone to host a Relay, though it’s a fairly resource-demanding service. In all likelihood, there may be a few large full-network providers, and then a long tail of partial-network providers. Small bespoke Relays could also service tightly or well-defined slices of the network, like a specific new application or a small community.</p> <p>There will also be an ecosystem of App Views for each lexicon, or “social mode,” deployed on the network. For example, Bluesky currently supports a micro-blogging mode: the <code>app.bsky</code> lexicon. Developers who create new lexicons would likely deploy a corresponding App View that understands their lexicon to service their users. Other lexicons could include video or long-form blogging, or different ways of organizing like groups and forums. By bootstrapping off of an existing Relay, data collation will already be taken care of for these new applications. They need only provide the indexing behaviors necessary for their application.</p> <h2>“Big World” Design</h2> <p>When we were architecting the topology of the AT Protocol, we looked at the web as an example. We see the web as the most successful decentralized system in existence — millions of devices globally connected on an open network — so we’re taking it as a null hypothesis of what works best.</p> <p>As a result, we opted to architect the protocol in a “big world with small world fallbacks” way. With the web, individual computers upload content to the network, and then all of that content is then broadcasted back to other computers. Similarly, with the AT Protocol, we’re sending messages to a much smaller number of big aggregators, which then broadcast that data to personal data servers across the network. Additionally, we solve the major problems that have surfaced from the web through <a href="/about/blog/3-6-2022-a-self-authenticating-social-protocol">self-certifying data, open schematic data and APIs, and account portability</a>.</p> <p>On a technical level, prioritizing big-world indexing over small world networking has multiple benefits.</p> <ul> <li>It significantly reduces the load on PDSs, making it easier to self-host — you could easily run your own server.</li> <li>It improves discoverability of content outside of your immediate neighbors — people want to use social media to see content from outside of their network.</li> <li>It improves the quality of experience for everyone in the network — fewer dropped messages or out-of-sync metrics.</li> </ul> <p>Given all that, our proposed methodology here of networking through Relays instead of server-to-server isn’t prescriptive. The protocol is actually explicitly designed to work both ways.</p> <h2>What’s Next For Us</h2> <p>We strongly believe that for federation to matter, all the pieces must be easy for you to set up. When we launch our sandbox environment publicly, we’ll provide straightforward instructions.</p> <p>Meanwhile, we’re working on two more pieces of federation: <a href="/about/blog/3-30-2023-algorithmic-choice">feed generators</a> and <a href="/about/blog/4-13-2023-moderation">labelers</a>. Currently, Bluesky’s App View generates some “opinionated” data (as in, it differentiates between pieces of data, unlike a giant firehose of data), like the feeds that we show users and the labels we use in content moderation. But we’re experimenting with splitting feed generators and labelers out as services of their own, and when that’s complete, anyone may host a feed generator and advertise it to users in the marketplace of algorithms.</p> <p>From a technical perspective, here’s one potential architecture: A feed generator can exist downstream of some Relay and App View, where the feed generator is constrained to offering “candidates” for the feed. Then, the App View presents the actual view of that data to the user.</p> <p>Similarly, a labeler would also be downstream of a Relay. Its labels would then be ingested by either an App View or a semantically-aware PDS.</p> <h2>Sandbox Mode</h2> <p>We will be initially launching federation in sandbox mode with allow-listed servers. This means we’ll be running it in a staging environment that gets reset at least once a week, allowing the network to test it out before going live with all existing user data. Having a sandbox environment is very useful, as it will allow us and all developers in the ecosystem to stress-test and debug the system. The sandbox environment we’ve set up can be used to test out future major protocol changes as well. You can participate in the sandbox as a developer or a user — just be aware that things will break, and your data will get wiped!</p> <p>The sandbox environment is also useful to us as we finish building out our moderation and curation tooling. Before we open federation entirely, we want to provide other servers with the same toolbox that we’re using to curate a safe social media experience, and developers can also build more moderation tools on top of atproto themselves.</p> <p>We’ll be sharing more soon about moderation, and about how to start experimenting with the sandbox environment.</p> <h4>Update: Join the atproto federation developer sandbox <a href="https://atproto.com/blog/federation-developer-sandbox">here</a>!</h4></div></section></section></div></main><div class="px-4 800:px-8 mt-4 800:mt-8"><section class="bg-black text-white text-center rounded-[20px] py-12 px-4 800:px-8 800:py-32"><div class="max-w-[680px] mx-auto"><h3 class="text-sans-34 800:text-sans-76 text-light-blue -tracking-[1.36px] 800:-tracking-[3.46px] italic font-500 mb-2 800:mb-8">We&#x27;re Hiring</h3><p class="text-sans-16 800:text-sans-18 my-4 800:my-8 -tracking-[0.16px] 800:-tracking-[0.16px]">Bluesky is an initiative to transition the social web from platforms to protocols. Join a nimble team developing and driving large-scale adoption of technologies for open and decentralized public conversation.</p><a class="block mt-4 site-link 800:hover:opacity-75 duration-300 text-light-blue" href="/about/join"><span class="border-b font-600">Apply to Bluesky</span><svg class="inline-block w-4 h-4 ml-2" width="19" height="19" viewBox="0 0 19 19" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Arrow Icon</title><path d="M5.88809 9.20633L13.7935 9.20634M13.7935 9.20634L10.4996 5.9124M13.7935 9.20634L10.4996 12.5003M18.2258 9.20633C18.2258 13.8372 14.4717 17.5913 9.84082 17.5913C5.20991 17.5913 1.45582 13.8372 1.45582 9.20633C1.45582 4.57542 5.20991 0.821327 9.84082 0.821327C14.4717 0.821327 18.2258 4.57542 18.2258 9.20633Z" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></div></section></div><section class="p-4 pt-10 grid grid-cols-6 800:grid-cols-12 800:pt-20 800:pb-20 800:px-8"><div class="col-span-2 800:col-span-6 text-left"><a class="text-white 800:hover:text-dark-blue duration-300" href="/about"><svg class="w-8 h-8 inline-block" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 568 501"><title>Bluesky butterfly logo</title><path fill="currentColor" d="M123.121 33.664C188.241 82.553 258.281 181.68 284 234.873c25.719-53.192 95.759-152.32 160.879-201.21C491.866-1.611 568-28.906 568 57.947c0 17.346-9.945 145.713-15.778 166.555-20.275 72.453-94.155 90.933-159.875 79.748C507.222 323.8 536.444 388.56 473.333 453.32c-119.86 122.992-172.272-30.859-185.702-70.281-2.462-7.227-3.614-10.608-3.631-7.733-.017-2.875-1.169.506-3.631 7.733-13.43 39.422-65.842 193.273-185.702 70.281-63.111-64.76-33.89-129.52 80.986-149.071-65.72 11.185-139.6-7.295-159.875-79.748C9.945 203.659 0 75.291 0 57.946 0-28.906 76.135-1.612 123.121 33.664Z"></path></svg></a></div><div class="col-span-4 800:col-span-6 800:mt-0"><div class="grid grid-cols-1 800:grid-cols-2 1400:grid-cols-3"><div class="col-span-1 mb-8"><h4 class="col-span-2 font-600 text-black mb-2 text-sans-16 800:text-18">Bluesky</h4><a target="_self" href="/about/blog/5-19-2023-user-faq" class="block text-400 text-16 800:hover:underline 800:text-18 text-white">User FAQ</a><a target="_self" href="/about/blog/press-faq" class="block text-400 text-16 800:hover:underline 800:text-18 text-white">Press</a><a target="_self" href="/about/support" class="block text-400 text-16 800:hover:underline 800:text-18 text-white">Support</a><a target="_self" href="/about/join" class="block text-400 text-16 800:hover:underline 800:text-18 text-white">Jobs</a><a target="_self" href="/about/rss.xml" class="block text-400 text-16 800:hover:underline 800:text-18 text-white">RSS</a></div><div class="col-span-1 mb-8"><h4 class="col-span-2 font-600 text-black mb-2 text-sans-16 800:text-18">Links</h4><a target="_blank" href="https://atproto.com/" class="block text-400 text-16 800:hover:underline 800:text-18 text-white">AT Protocol</a><a target="_blank" href="https://bsky.app/" class="block text-400 text-16 800:hover:underline 800:text-18 text-white">Bluesky App</a></div><div class="col-span-1 mb-8"><h4 class="col-span-2 font-600 text-black mb-2 text-sans-16 800:text-18">Connect</h4><a target="_blank" href="mailto:press@blueskyweb.xyz" class="block text-400 text-16 800:hover:underline 800:text-18 text-white">press@blueskyweb.xyz</a><a target="_blank" href="mailto:support@bsky.app" class="block text-400 text-16 800:hover:underline 800:text-18 text-white">support@bsky.app</a></div></div></div><div class="text-white col-span-3 800:col-span-6 mt-8 800:mt-20 text-left"><p class="font-500 text-sans-14 800:text-sans-16 items-center">Bluesky is a<!-- --> <a href="https://en.wikipedia.org/wiki/Benefit_corporation" class="inline text-white 800:hover:text-dark-blue duration-300 whitespace-nowrap" target="_blank"><span class="block 800:inline"></span><span class="border-b">Public Benefit Corporation</span> <svg class="inline" width="20" height="21" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Question Mark Icon</title><path d="M8.71604 13.1055V12.9162C8.71604 12.393 8.75913 11.976 8.8453 11.6651C8.93456 11.3543 9.06382 11.105 9.23309 10.9173C9.40236 10.7264 9.60856 10.5526 9.8517 10.3956C10.0456 10.2725 10.2179 10.1478 10.3687 10.0217C10.5226 9.8924 10.6442 9.75391 10.7334 9.60618C10.8227 9.45845 10.8673 9.29072 10.8673 9.10298C10.8673 8.9214 10.8242 8.76136 10.7381 8.62287C10.6519 8.48437 10.5334 8.3782 10.3826 8.30433C10.2349 8.22739 10.0702 8.18892 9.88863 8.18892C9.70705 8.18892 9.53624 8.23047 9.3762 8.31356C9.21924 8.39666 9.08998 8.51515 8.98841 8.66903C8.88993 8.81984 8.83915 9.00296 8.83607 9.21839H6.71249C6.72172 8.57209 6.87099 8.04273 7.16029 7.63033C7.45267 7.21792 7.83891 6.91323 8.31903 6.71626C8.79914 6.51622 9.3285 6.41619 9.90709 6.41619C10.5411 6.41619 11.1043 6.51468 11.5967 6.71165C12.0922 6.90862 12.4815 7.19946 12.7647 7.58416C13.0478 7.96887 13.1894 8.43975 13.1894 8.9968C13.1894 9.36304 13.1279 9.6862 13.0047 9.96626C12.8816 10.2463 12.7093 10.4941 12.4877 10.7095C12.2692 10.9219 12.0122 11.1158 11.7168 11.2912C11.4859 11.4266 11.2936 11.5682 11.1397 11.7159C10.9889 11.8636 10.875 12.0329 10.7981 12.2237C10.7211 12.4115 10.6827 12.6423 10.6827 12.9162V13.1055H8.71604ZM9.73628 16.1339C9.4039 16.1339 9.11921 16.0169 8.88224 15.783C8.64833 15.5491 8.53292 15.266 8.536 14.9336C8.53292 14.6074 8.64833 14.3288 8.88224 14.098C9.11921 13.8641 9.4039 13.7472 9.73628 13.7472C10.0533 13.7472 10.3318 13.8641 10.5719 14.098C10.8119 14.3288 10.9335 14.6074 10.9366 14.9336C10.9335 15.1552 10.875 15.3568 10.7611 15.5384C10.6503 15.7199 10.5042 15.8646 10.3226 15.9723C10.1441 16.08 9.94864 16.1339 9.73628 16.1339Z" fill="currentColor"></path><ellipse cx="10" cy="10.9363" rx="9" ry="9.03591" stroke="currentColor" stroke-width="2"></ellipse></svg></a> </p></div><div class="col-span-3 800:col-span-6 mt-8 800:mt-8 flex items-center justify-end"><a href="https://bsky.app/profile/bsky.app" class="block text-white text-18 800:hover:text-dark-blue duration-300" target="_blank"><svg class="w-6 h-6 " xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 568 501"><title>Bluesky butterfly logo</title><path fill="currentColor" d="M123.121 33.664C188.241 82.553 258.281 181.68 284 234.873c25.719-53.192 95.759-152.32 160.879-201.21C491.866-1.611 568-28.906 568 57.947c0 17.346-9.945 145.713-15.778 166.555-20.275 72.453-94.155 90.933-159.875 79.748C507.222 323.8 536.444 388.56 473.333 453.32c-119.86 122.992-172.272-30.859-185.702-70.281-2.462-7.227-3.614-10.608-3.631-7.733-.017-2.875-1.169.506-3.631 7.733-13.43 39.422-65.842 193.273-185.702 70.281-63.111-64.76-33.89-129.52 80.986-149.071-65.72 11.185-139.6-7.295-159.875-79.748C9.945 203.659 0 75.291 0 57.946 0-28.906 76.135-1.612 123.121 33.664Z"></path></svg></a><a href="https://github.com/bluesky-social" class="text-white 800:hover:text-dark-blue duration-300" target="_blank"><svg class="w-6 h-6 mx-3 " width="27" height="26" viewBox="0 0 27 26" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Github Icon</title><path fill-rule="evenodd" clip-rule="evenodd" d="M13.211 0.856445C6.01634 0.856445 0.200195 6.60845 0.200195 13.7245C0.200195 19.4127 3.9268 24.2276 9.09659 25.9318C9.74294 26.0599 9.9797 25.6549 9.9797 25.3142C9.9797 25.0159 9.9584 23.9934 9.9584 22.9279C6.33912 23.695 5.58544 21.394 5.58544 21.394C5.00379 19.9026 4.14199 19.5193 4.14199 19.5193C2.9574 18.7311 4.22827 18.7311 4.22827 18.7311C5.54229 18.8163 6.23179 20.0519 6.23179 20.0519C7.39481 22.0118 9.2689 21.458 10.0228 21.1171C10.1304 20.2862 10.4753 19.711 10.8415 19.3915C7.95488 19.0932 4.91777 17.9854 4.91777 13.0426C4.91777 11.6365 5.43443 10.4861 6.2531 9.59139C6.12393 9.27189 5.67146 7.95076 6.38253 6.18254C6.38253 6.18254 7.4811 5.8416 9.95813 7.50341C11.0186 7.22173 12.1123 7.07844 13.211 7.07724C14.3095 7.07724 15.4294 7.22653 16.4635 7.50341C18.9408 5.8416 20.0394 6.18254 20.0394 6.18254C20.7504 7.95076 20.2977 9.27189 20.1685 9.59139C21.0088 10.4861 21.5041 11.6365 21.5041 13.0426C21.5041 17.9854 18.467 19.0717 15.5588 19.3915C16.0329 19.7962 16.4419 20.5631 16.4419 21.7775C16.4419 23.5031 16.4206 24.8881 16.4206 25.314C16.4206 25.6549 16.6577 26.0599 17.3037 25.932C22.4735 24.2274 26.2001 19.4127 26.2001 13.7245C26.2214 6.60845 20.384 0.856445 13.211 0.856445Z" fill="currentColor"></path></svg></a><a href="https://twitter.com/bluesky" class="text-white 800:hover:text-dark-blue duration-300" target="_blank"><svg class="w-6 h-6 " width="27" height="25" viewBox="0 0 27 25" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Twitter Icon</title><path d="M20.7915 0.860352H24.8397L15.9957 11.0671L26.4 24.9561H18.2535L11.8728 16.5325L4.57194 24.9561H0.521318L9.98092 14.0389L0 0.860352H8.35333L14.1209 8.55988L20.7915 0.860352ZM19.3708 22.5095H21.6139L7.13447 3.17849H4.72735L19.3708 22.5095Z" fill="currentColor"></path></svg></a></div></section></div></div><script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KZT6XPW7');</script><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KZT6XPW7" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><script id="__NEXT_DATA__" type="application/json" crossorigin="">{"props":{"pageProps":{"data":{"title":"Federation Architecture Overview","date":"May 5, 2023","summary":"Soon, we’re launching a sandbox environment for federation. In advance, we want to share some technical details about our design decisions.","author":"The Bluesky Team","image":"blogposts/federation-architecture-diagram.png","path":"/blog/5-5-2023-federation-architecture","bodyHTML":"\u003cp\u003eMany of our experiences with social media today are defined by the same constraining dynamics — one private company owns all of our data, populates our feeds with an algorithm of their choice, and we’re unable to take our followers and posts with us to a new home if we ever decide to leave. The AT Protocol, a federated networking model which Bluesky is built upon, changes this.\u003c/p\u003e\n\u003cp\u003eSoon, we’re launching a sandbox environment to begin the testing phase of federation for the AT Protocol with allow-listed servers. In advance of this launch, we want to share some technical details about our design decisions with you.\u003c/p\u003e\n\u003cp\u003eAt a high level, federation means that anyone can run the parts that make up the AT Protocol themselves, such as their own server. Sandbox mode means that people can start experimenting with federation without interfacing with the actual network — think of it as a test network. If you’d like to run your own server, you’ll be able to do so in the near future.\u003c/p\u003e\n\u003ch4\u003eUpdate: Join the atproto federation developer sandbox \u003ca href=\"https://atproto.com/blog/federation-developer-sandbox\"\u003ehere\u003c/a\u003e!\u003c/h4\u003e\n\u003ch2\u003eFederation Architecture\u003c/h2\u003e\n\u003cp\u003eThe AT Protocol is made up of a bunch of pieces that stack together. (Technically, the lower-level primitives that can get stacked together differently are the \u003ca href=\"https://atproto.com/guides/overview\"\u003erepositories, lexicons, and DIDs\u003c/a\u003e.) This means that the architecture we’re proposing for launching federation is not the only network architecture that’s possible – it’s just what we expect to be the most powerful and robust way of supporting public conversations on a global social network, so we implemented it first.\u003c/p\u003e\n\u003cimg src=\"/about/images/blogposts/federation-architecture-diagram.png\" alt=\"Diagram of federation architecture\" width=\"600\"\u003e\n\u003cp\u003eThe three main services of our first federation are personal data servers (PDS), relays, and App Views. Developers can also run feed generators (custom feeds), and labelers are in active development.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePersonal Data Server (PDS)\n\u003cul\u003e\n\u003cli\u003eA PDS acts as the participant’s agent in the network. This is what hosts your data (like the posts you’ve created) in your \u003ca href=\"https://atproto.com/guides/data-repos\"\u003erepo\u003c/a\u003e. It also handles your account \u0026#x26; login, manages your repo’s \u003ca href=\"https://atproto.com/guides/overview#account-portability\"\u003esigning key\u003c/a\u003e, stores any of your private data (like which accounts you have muted), and handles the services you talk to for any request.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eRelay\n\u003cul\u003e\n\u003cli\u003eThe Relay handles \"big-world\" networking. It crawls the network, gathering as much data as it can, and outputs it in one big stream for other services to use. It’s analogous to a firehose provider or a super-powered relay node.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eApp Views\n\u003cul\u003e\n\u003cli\u003eAn App View is the piece that actually assembles your feed and all the other data you see in the app, and is generally expected to be downstream from a Relay's firehose of data. This is a highly semantically-aware service that produces aggregations across the network and views over some subset of the network. This is analogous to a prism that takes in the Relay's raw firehose of data from the network, and outputs views that enable an app to show a curated feed to a user. For example, the Relay might crawl to grab data such as a certain post’s likes and reposts, and the app view will output the count of those metrics.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cimg src=\"/about/images/blogposts/app-view-prism.png\" alt=\"The App View visualized as a prism\" width=\"600\"\u003e\n\u003cfigcaption\u003eBase image of prism: Wikimedia Commons\u003c/figcaption\u003e\n\u003cp\u003eThe federation architecture allows anyone to host a Relay, though it’s a fairly resource-demanding service. In all likelihood, there may be a few large full-network providers, and then a long tail of partial-network providers. Small bespoke Relays could also service tightly or well-defined slices of the network, like a specific new application or a small community.\u003c/p\u003e\n\u003cp\u003eThere will also be an ecosystem of App Views for each lexicon, or “social mode,” deployed on the network. For example, Bluesky currently supports a micro-blogging mode: the \u003ccode\u003eapp.bsky\u003c/code\u003e lexicon. Developers who create new lexicons would likely deploy a corresponding App View that understands their lexicon to service their users. Other lexicons could include video or long-form blogging, or different ways of organizing like groups and forums. By bootstrapping off of an existing Relay, data collation will already be taken care of for these new applications. They need only provide the indexing behaviors necessary for their application.\u003c/p\u003e\n\u003ch2\u003e“Big World” Design\u003c/h2\u003e\n\u003cp\u003eWhen we were architecting the topology of the AT Protocol, we looked at the web as an example. We see the web as the most successful decentralized system in existence — millions of devices globally connected on an open network — so we’re taking it as a null hypothesis of what works best.\u003c/p\u003e\n\u003cp\u003eAs a result, we opted to architect the protocol in a “big world with small world fallbacks” way. With the web, individual computers upload content to the network, and then all of that content is then broadcasted back to other computers. Similarly, with the AT Protocol, we’re sending messages to a much smaller number of big aggregators, which then broadcast that data to personal data servers across the network. Additionally, we solve the major problems that have surfaced from the web through \u003ca href=\"/about/blog/3-6-2022-a-self-authenticating-social-protocol\"\u003eself-certifying data, open schematic data and APIs, and account portability\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eOn a technical level, prioritizing big-world indexing over small world networking has multiple benefits.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIt significantly reduces the load on PDSs, making it easier to self-host — you could easily run your own server.\u003c/li\u003e\n\u003cli\u003eIt improves discoverability of content outside of your immediate neighbors — people want to use social media to see content from outside of their network.\u003c/li\u003e\n\u003cli\u003eIt improves the quality of experience for everyone in the network — fewer dropped messages or out-of-sync metrics.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGiven all that, our proposed methodology here of networking through Relays instead of server-to-server isn’t prescriptive. The protocol is actually explicitly designed to work both ways.\u003c/p\u003e\n\u003ch2\u003eWhat’s Next For Us\u003c/h2\u003e\n\u003cp\u003eWe strongly believe that for federation to matter, all the pieces must be easy for you to set up. When we launch our sandbox environment publicly, we’ll provide straightforward instructions.\u003c/p\u003e\n\u003cp\u003eMeanwhile, we’re working on two more pieces of federation: \u003ca href=\"/about/blog/3-30-2023-algorithmic-choice\"\u003efeed generators\u003c/a\u003e and \u003ca href=\"/about/blog/4-13-2023-moderation\"\u003elabelers\u003c/a\u003e. Currently, Bluesky’s App View generates some “opinionated” data (as in, it differentiates between pieces of data, unlike a giant firehose of data), like the feeds that we show users and the labels we use in content moderation. But we’re experimenting with splitting feed generators and labelers out as services of their own, and when that’s complete, anyone may host a feed generator and advertise it to users in the marketplace of algorithms.\u003c/p\u003e\n\u003cp\u003eFrom a technical perspective, here’s one potential architecture: A feed generator can exist downstream of some Relay and App View, where the feed generator is constrained to offering “candidates” for the feed. Then, the App View presents the actual view of that data to the user.\u003c/p\u003e\n\u003cp\u003eSimilarly, a labeler would also be downstream of a Relay. Its labels would then be ingested by either an App View or a semantically-aware PDS.\u003c/p\u003e\n\u003ch2\u003eSandbox Mode\u003c/h2\u003e\n\u003cp\u003eWe will be initially launching federation in sandbox mode with allow-listed servers. This means we’ll be running it in a staging environment that gets reset at least once a week, allowing the network to test it out before going live with all existing user data. Having a sandbox environment is very useful, as it will allow us and all developers in the ecosystem to stress-test and debug the system. The sandbox environment we’ve set up can be used to test out future major protocol changes as well. You can participate in the sandbox as a developer or a user — just be aware that things will break, and your data will get wiped!\u003c/p\u003e\n\u003cp\u003eThe sandbox environment is also useful to us as we finish building out our moderation and curation tooling. Before we open federation entirely, we want to provide other servers with the same toolbox that we’re using to curate a safe social media experience, and developers can also build more moderation tools on top of atproto themselves.\u003c/p\u003e\n\u003cp\u003eWe’ll be sharing more soon about moderation, and about how to start experimenting with the sandbox environment.\u003c/p\u003e\n\u003ch4\u003eUpdate: Join the atproto federation developer sandbox \u003ca href=\"https://atproto.com/blog/federation-developer-sandbox\"\u003ehere\u003c/a\u003e!\u003c/h4\u003e"}},"__N_SSG":true},"page":"/blog/[slug]","query":{"slug":"5-5-2023-federation-architecture"},"buildId":"4KDhGWbtBRU6lupWc--pk","assetPrefix":"/about","isFallback":false,"gsp":true,"scriptLoader":[]}</script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10