FSharp.ATProto.DRISL 0.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package FSharp.ATProto.DRISL --version 0.1.0
                    
NuGet\Install-Package FSharp.ATProto.DRISL -Version 0.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FSharp.ATProto.DRISL" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FSharp.ATProto.DRISL" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="FSharp.ATProto.DRISL" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FSharp.ATProto.DRISL --version 0.1.0
                    
#r "nuget: FSharp.ATProto.DRISL, 0.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FSharp.ATProto.DRISL@0.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FSharp.ATProto.DRISL&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=FSharp.ATProto.DRISL&version=0.1.0
                    
Install as a Cake Tool

<p align="center"> <img src="docs/assets/header.svg" alt="FSharp.ATProto" width="400"/> </p>

<p align="center"> <a href="https://github.com/Arrow7000/atproto-fsharp/actions/workflows/ci.yml"><img src="https://github.com/Arrow7000/atproto-fsharp/actions/workflows/ci.yml/badge.svg" alt="CI"></a> <img src="https://img.shields.io/badge/.NET-10.0-512BD4?logo=dotnet" alt=".NET 10"> <img src="https://img.shields.io/badge/tests-1%2C761-brightgreen" alt="Tests: 1,761"> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="License: MIT"></a> </p>

<p align="center"> A native F# library for <a href="https://bsky.app">Bluesky</a> and the <a href="https://atproto.com">AT Protocol</a>. <br/> Built from the ground up in F#. No C# wrappers. Functional-first. </p>


open FSharp.ATProto.Bluesky

taskResult {
    let! agent = Bluesky.login "https://bsky.social" "my-handle.bsky.social" "app-password"
    let! post = Bluesky.post agent "Hello from F#! 🦋"
    let! like = Bluesky.like agent post // PostRef -> LikeRef (the compiler prevents mix-ups)
    let! reply = Bluesky.replyTo agent "Nice thread!" post // thread root resolved automatically
    let! _ = Bluesky.undo agent like // generic undo — works on any ref type
    return reply
}
// : Task<Result<PostRef, XrpcError>> — no exceptions, ever

Design

  • If it compiles, it's correct -- distinct types for every domain concept (PostRef, LikeRef, FollowRef, BlockRef...) mean the compiler catches your mistakes.
  • The library handles protocol complexity -- thread roots, rich text facets, chat proxy headers -- all resolved automatically.
  • Results, not exceptions -- every public function returns Result. No failwith, no try/catch.
  • Rich domain types -- PostRef, Profile, FeedItem, ConvoSummary, Page<'T>, and more. Plus convenience functions for search, bookmarks, muting, notifications, and moderation.
  • Generated from the spec -- 324 Lexicon schemas compiled to F# types + 237 typed XRPC endpoint wrappers.

Getting Started

See the Quickstart to get up and running in 5 minutes.

Features

  • Posts -- create, reply, quote, delete, with automatic rich text detection (guide)
  • Rich text -- mentions, links, and hashtags detected and resolved automatically (guide)
  • Images -- upload and attach with typed ImageMime and alt text (guide)
  • Social graph -- follow, block, like, repost, mute, with typed refs and generic undo (guide)
  • Feeds -- timeline, author feed, actor likes, bookmarks (guide)
  • Profiles -- get, search, typeahead, batch fetch, upsert (guide)
  • Chat / DMs -- conversations, messages, reactions, with automatic proxy headers (guide)
  • Notifications -- fetch, count unread, mark seen (guide)
  • Moderation -- report content, mute threads and mod lists (guide)
  • Identity -- DID resolution, handle verification, PDS discovery (guide)
  • Pagination -- lazy IAsyncEnumerable paginators for timeline, followers, notifications (guide)
  • Full XRPC access -- all 237 Bluesky endpoints available as typed wrappers (guide)

Documentation

  • Quickstart -- zero to first post
  • Build a Bot -- end-to-end tutorial
  • Concepts -- AT Protocol terms explained (DID, Handle, AT-URI, PDS, Lexicon)
  • Guides -- posts, social, feeds, profiles, media, chat, notifications, moderation, rich text, identity, error handling, pagination, raw XRPC

Building & Testing

Requires .NET 10 SDK.

dotnet build && dotnet test

1,761 tests across six projects.

AI Transparency

This project was built with heavy use of AI coding assistants, mostly Claude Opus 4.6.

To ensure correctness the project validates against ground truth at every layer:

  • Syntax parsing -- tested against the official AT Protocol interop test vectors (valid and invalid inputs for DIDs, Handles, NSIDs, TIDs, AT-URIs, and more)
  • CBOR & CID -- tested against the interop data-model fixtures (known JSON → CBOR → CID round-trips), plus property-based tests for encoding invariants
  • Lexicon schemas -- all 324 real lexicon files from the official atproto repo are parsed and validated; the code generator is tested against them
  • Rich text -- property-based tests verify byte-range correctness and facet ordering
  • XRPC / Bluesky -- tested via mock HTTP handlers that verify request construction, multi-step orchestration (e.g. thread root resolution), error handling, and domain type mapping (note: the mocks don't validate against real Bluesky API responses -- that contract is covered by the generated types matching the lexicon schemas above)

All told, 1,761 tests across six projects, with zero reliance on manual testing or live API calls.

License

MIT

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on FSharp.ATProto.DRISL:

Package Downloads
FSharp.ATProto.Core

XRPC client, session authentication, rate limiting, and cursor-based pagination for the AT Protocol.

FSharp.ATProto.Bluesky

Native F# client for Bluesky and the AT Protocol. Type-safe, functional-first, exception-free. Posts, social graph, chat, feeds, profiles, notifications, moderation, and full XRPC access via 237 typed endpoint wrappers generated from 324 Lexicon schemas.

FSharp.ATProto.Streaming

Jetstream event streaming client for the AT Protocol.

FSharp.ATProto.Repo

AT Protocol repository data structures: Merkle Search Tree (MST), signed commits, and CAR import/export.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.4.0 128 3/25/2026
0.3.0 134 3/5/2026
0.2.0 133 3/4/2026
0.1.2 102 3/4/2026
0.1.1 97 3/4/2026
0.1.0 101 3/3/2026