a collection of lightweight TypeScript packages for AT Protocol, the protocol powering Bluesky.
lightweight TypeScript packages for AT Protocol, the protocol powering Bluesky.
npm install @atcute/client @atcute/bluesky
import { Client, simpleFetchHandler } from '@atcute/client';
import type {} from '@atcute/bluesky';
const client = new Client({
handler: simpleFetchHandler({ service: 'https://public.api.bsky.app' }),
});
const { data } = await client.get('app.bsky.actor.getProfile', {
params: { actor: 'bsky.app' },
});
console.log(data.displayName);
// -> Bluesky
for authenticated requests, see the client docs or use the OAuth browser client for web apps.
| Packages |
|---|
| Client packages |
client: XRPC HTTP client |
firehose: XRPC subscription client |
jetstream: Jetstream WebSocket client |
cache: normalized cache store |
| Server packages |
xrpc-server: XRPC web framework |
xrpc-server-bun: Bun WebSocket adapter |
xrpc-server-cloudflare: Cloudflare Workers WebSocket adapter |
xrpc-server-deno: Deno WebSocket adapter |
xrpc-server-node: Node.js WebSocket adapter |
| OAuth packages |
oauth-browser-client: minimal OAuth client for SPAs |
| Lexicon packages |
lex-cli: generate TypeScript from lexicon schemas |
lexicon-doc: parse and author lexicon documents |
lexicon-resolver: resolve lexicons from the network |
lexicons: core types and schema validation |
| Lexicon definition packages |
atproto: com.atproto.* definitions |
bluemoji: blue.moji.* definitions |
bluesky: app.bsky.*, chat.bsky.* definitions |
frontpage: fyi.unravel.frontpage.* definitions |
leaflet: pub.leaflet.* definitions |
lexicon-community: community.lexicon.* definitions |
microcosm: blue.microcosm.*, com.bad-example.* definitions |
ozone: tools.ozone.* definitions |
pckt: blog.pckt.* definitions |
tangled: sh.tangled.* definitions |
whitewind: com.whtwnd.* definitions |
| Identity packages |
identity: handle, DID and DID document types |
identity-resolver: handle and DID document resolution |
identity-resolver-node: Node.js DNS-based handle resolver |
did-plc: did:plc operation validation |
| Utility packages |
car: CAR archive codec |
cbor: deterministic CBOR codec |
cid: content identifier codec |
crypto: signing and verification |
mst: merkle search tree utilities |
multibase: base32/base64 encoding |
repo: repository export reader |
tid: timestamp identifier codec |
varint: LEB128 varint codec |
| Bluesky-specific packages |
bluesky-moderation: content moderation interpretation |
bluesky-richtext-builder: rich text facet builder |
bluesky-richtext-parser: parse rich text syntax |
bluesky-richtext-segmenter: segment text by facets |
bluesky-search-parser: search query tokenizer |
bluesky-threading: atomic thread publishing |
this monorepo uses mise for runtime versioning and pnpm for package management.
# install runtimes
mise install
# build all packages
pnpm run -r build
# pull latest lexicons and regenerate definitions
pnpm run -r pull
pnpm run -r generate
check bundle sizes with the pkg-size-report tool:
[!WARNING]
runpnpm run -r buildfirst, otherwise measurements may be inaccurate.
pnpm pkg-size-report # show sizes (and diff if previously saved)
pnpm pkg-size-report --save # save current sizes for comparison
pnpm pkg-size-report --compare # show only changed packages
Dhaaga - An indie SNS app that blends sleek design 💅, useful features ✨ and fun ways to discover and connect 🎉
Fix X/Twitter and Bluesky embeds! Use multiple images, videos, polls, translations and more on Discord, Telegram and others
Unfollowers for Bluesky é uma aplicação web intuitiva que identifica usuários que não seguem de volta um determinado perfil na rede social Bluesky. Com uma interface simples, basta pesquisar pelo nome de usuário desejado, selecioná-lo e a plataforma exibirá rapidamente a lista de não-seguidores.
Git scraping of AT Protocol/Bluesky instances
Git scraping of Bluesky labelers/label providers
Your Brand Here!
50K+ engaged viewers every month
Limited spots available!
📧 Contact us via email🦋 Contact us on Bluesky