CarpaNet - a .NET ATProtocol Library
CarpaNet is a .NET library for ATProtocol that uses Roslyn source generators to produce type-safe API bindings from Lexicon JSON schema files. It's the replacement for FishyFlip.

This site is under construction.
Quick Start
Add the CarpaNet NuGet package and declare which lexicons you need:
<ItemGroup>
<PackageReference Include="CarpaNet" Version="1.*" />
</ItemGroup>
<ItemGroup>
<LexiconResolve Include="app.bsky.actor.getProfile" />
<LexiconResolve Include="app.bsky.feed.post" />
<LexiconResolve Include="com.atproto.repo.createRecord" />
</ItemGroup>
Then use the generated client:
using CarpaNet;
var client = ATProtoClientFactory.Create();
var profile = await client.AppBskyActorGetProfileAsync(
new AppBsky.Actor.GetProfileParameters { Actor = new ATHandle("alice.bsky.social") });
Console.WriteLine($"{profile.DisplayName} (@{profile.Handle})");
Packages
| Package | Description |
|---|---|
| CarpaNet | Core runtime, source generator, XRPC protocol, identity resolution, DAG-CBOR, CAR files |
| CarpaNet.OAuth | OAuth 2.0 with PAR, PKCE, and DPoP support |
| CarpaNet.Jetstream | Real-time event subscription via Bluesky Jetstream |
| CarpaNet.AspNetCore | ASP.NET Core integration |
Third-Party Libraries
- ZstdSharp.Port — Zstandard compression