This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

indigo / README.md
8.9 kB

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](brew.sh) 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.
  • 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:

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.