bluesky-social
indigo
Go

Go source code for Bluesky's atproto services.

Last updated Jul 7, 2026
1.4k
Stars
255
Forks
228
Issues
+3
Stars/day
Attention Score
78
Language breakdown
No language data available.
Files click to expand
README

photo

indigo: atproto libraries and services in golang

Some Bluesky software is developed in Typescript, and lives in the bluesky-social/atproto repository. Some is developed in Go, and lives here.

If you are not a Go developer and you want to run one of these tools, you can do:

# with Homebrew installed
brew install go

for example, to run tap

go install github.com/bluesky-social/indigo/cmd/tap tap

Go will fetch dependencies, compile, and install tap or another service with a one-line go install command.

Soon, we plan to decouple the tools in this repo so you can install them individually like goat.

What is in here?

Go Services:

  • tap (README): synchronization and backfill tool for atproto apps
  • relay (README): relay reference implementation
  • rainbow (README): firehose "splitter" or "fan-out" service
  • hepa (README): auto-moderation bot for Ozone
Developer Tools:
  • goat (README): CLI for interacting with network: CAR files, firehose, APIs, etc (moved to separate repo)
Go Packages:
⚠️ All the packages in this repository are under active development. Features and software interfaces have not stabilized and may break or be removed.

| Package | Docs | | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | api/atproto: generated types for com.atproto.* Lexicons | PkgGoDev | | api/bsky: generated types for app.bsky.* Lexicons | PkgGoDev | | atproto/atclient: HTTP API client | PkgGoDev | | atproto/auth/oauth: AT OAuth client | PkgGoDev| | atproto/identity: DID and handle resolution | PkgGoDev | | atproto/syntax: string types and parsers for identifiers | PkgGoDev | | atproto/lexicon: schema validation of data | PkgGoDev | | atproto/repo: repository data structure | PkgGoDev | | atproto/repo/mst: Merkle Search Tree implementation | PkgGoDev | | atproto/atcrypto: cryptographic signing and key serialization | PkgGoDev| | go-didplc/didplc: DID PLC implementation (external) | PkgGoDev|

The TypeScript reference implementation, including PDS and bsky AppView services, is at bluesky-social/atproto. Source code for the Bluesky Social client app (for web and mobile) can be found at bluesky-social/social-app.

Development Quickstart

First, you will need the Go toolchain installed. We develop using the latest stable version of the language.

The Makefile provides wrapper commands for basic development:

make build make test make fmt make lint

Individual commands can be run like:

go run ./cmd/relay

The HACKING file has a list of commands and packages in this repository and some other development tips.

What is atproto?

not to be confused with the AT command set or Adenosine triphosphate_

The Authenticated Transfer Protocol ("ATP" or "atproto") is a decentralized social media protocol, developed by Bluesky Social PBC. Learn more at:

The Bluesky Social application encompasses a set of schemas and APIs built in the overall AT Protocol framework. The namespace for these "Lexicons" is app.bsky.*.

Contributions

While we do accept contributions, we prioritize high quality issues and pull requests. Adhering to the below guidelines will ensure a more timely review.

Rules:

  • We may not respond to your issue or PR.
  • We may close an issue or PR without much feedback.
  • We may lock discussions or contributions if our attention is getting DDOSed.
  • We do not provide support for build issues.
Guidelines:
  • Check for existing issues before filing a new one, please.
  • Open an issue and give some time for discussion before submitting a PR.
  • Issues are for bugs & feature requests related to the golang implementation of atproto and related services.
- For high-level discussions, please use the Discussion Forum. - For client issues, please use the relevant social-app repo.
  • Stay away from PRs that:
- Refactor large parts of the codebase - Add entirely new features without prior discussion - Change the tooling or libraries used without prior discussion - Introduce new unnecessary dependencies

Remember, we serve a wide community of users. Our day-to-day involves us constantly asking "which top priority is our top priority." If you submit well-written PRs that solve problems concisely, that's an awesome contribution. Otherwise, as much as we'd love to accept your ideas and contributions, we really don't have the bandwidth.

Are you a developer interested in building on atproto?

Bluesky is an open social network built on the AT Protocol, a flexible technology that will never lock developers out of the ecosystems that they help build. With atproto, third-party can be as seamless as first-party through custom feeds, federated services, clients, and more.

License

This project is dual-licensed under MIT and Apache 2.0 terms:

  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
  • Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.

Bluesky Social PBC has committed to a software patent non-aggression pledge. For details see the original announcement.

🔗 More in this category

© 2026 GitRepoTrend · bluesky-social/indigo · Updated daily from GitHub