Ilya (Marshal)
banner
marshal.dev
Ilya (Marshal)
@marshal.dev
Software Engineer

🐍 The AT Protocol SDK for Python: https://atproto.blue/
🍿 Custom Feed in Python: https://github.com/MarshalX/bluesky-feed-generator
🏎️ Fast IPLD library for Python: https://github.com/MarshalX/python-libipld

https://marshal.dev
Thanks to @makeworld.space, Fast IPLD lib for Python is shiny as never before! Many panics and out-of-specification bugs have been fixed. Amazing DASL Testing: hyphacoop.github.io/dasl-testing/
DASL Testing
hyphacoop.github.io
October 22, 2025 at 8:11 PM
The atproto SDK for Python now supports Python 3.14! Please report any instability of firehose async client. There are too many dependency bumps for this release.
October 22, 2025 at 8:07 PM
@atproto.com are you gonna be our trusted verifier? 🙂 #atproto
April 21, 2025 at 5:45 PM
🚀 Python atproto SDK v0.0.60 is here!

Key additions:
- Message reactions in DMs
- Improved AtUri core class
- ⁠Content-Type overriding
- Digits in NSID
- Email 2FA support
- Enhanced HTTPX config and various fixes!

Check it out! 🐍✨ #Python #atproto
Release v0.0.60 · MarshalX/atproto
What's Changed Add message reaction to the example of Direct Messages by @MarshalX in #595 Add UnknownUnionModel type by @MarshalX in #586 Add include_pins argument to get_author_feed method of Cl...
github.com
April 11, 2025 at 7:24 PM
Add sync firehose message support, the latest lexicon update, and more github.com/MarshalX/atp... #atproto
Release v0.0.59 · MarshalX/atproto
What's Changed Add support for the repository #sync message in the subscribe repos firehose by @MarshalX in #556 Add chat.* and tools.* models to the main menu of documentation by @MarshalX in #55...
github.com
February 23, 2025 at 2:02 PM
zero issues with making custom video feeds in Python
January 25, 2025 at 10:16 PM
Reposted by Ilya (Marshal)
Fun little winter break side project to help me explore more of atproto - I made a fun Bluesky - IRC bridge!

github.com/quartzjer/AT...

Built in python using @marshal.dev's awesome atproto module, definitely spent too much time fiddling with how to display rich/media posts in an IRC-friendly way 😅
December 30, 2024 at 6:36 PM
Thank you for your contribution! Test coverage, performance benchmarks, and more — that's very professional. I appreciate it!
excited to have contributed opt-in string format validation to the `atproto` python client!

we added pydantic-powered validation for formats like handles, DIDs, & NSIDs etc.

I wrote about it! alternatebuild.dev/posts/8_strings_matter

thanks so much to @marshal.dev for the help & reviews 🙂
December 6, 2024 at 9:45 AM
The fix was merged! But it does not resolve the main problem. So to be continued here github.com/bluesky-soci...
November 17, 2024 at 4:30 PM
Today's Python SDK incident with segfault comes from Firehose raises the priority of the proper bugfix 🫠 github.com/MarshalX/atp...

tl;dr no recursion limit; malformed payloads in the network could lead to segfaults of python-libipld (rust binding)
Segmentation fault (core dumped) in CAR reading from Firehose · Issue #437 · MarshalX/atproto
i was consuming data from the firehouse, specifically at cursor: 3720770000, every time i get a consistent Core Dumped I managed to find the crash is coming from: .venv/lib/python3.12/site-packages...
github.com
November 17, 2024 at 4:28 PM
Firehose consumers do not receive root block in case of too big seq commit. I dug into this because I got reports from Python SDK users that commit.blocks received from the firehose message frame could be missed. I am waiting for the review by #atproto team github.com/bluesky-soci... 🙃
Firehose consumers do not receive root block in case of too big seq commit · Issue #2893 · bluesky-social/atproto
Describe the bug Firehose consumers do not receive root block in case of too big seq commit. To Reproduce I wrote a corresponding unit test in the linked PR that reproduces the issue Actual behavio...
github.com
October 24, 2024 at 9:08 PM
300 stars on GitHub github.com/MarshalX/atp... (atproto.blue) 🎉
October 21, 2024 at 8:29 PM
If the official instances are presented, I think it would be good for the Python SDK to adopt Jetstream as well. We do not struggle with CPU thanks to native bindings, but network bandwidth is crucial
jazco.dev Jaz @jazco.dev · Sep 22
The current public Jetstream instance has been running with `zstd` compression support for ~14 hours now, checking in on performance.

The instance supports ~12 consumers right now with varying filters, but that fluctuates throughout the day. All consumers are currently caught up with live.
September 24, 2024 at 1:31 PM
Bluesky now has over 10 million users, and I was #17,636!
September 17, 2024 at 11:01 AM
This is how easy you can upload video to Bluesky using Python! Thanks to @meorge.com contribution which adds send_video method! #atdev
September 13, 2024 at 5:51 PM
⚡ I finally dropped a new batch of optimizations for the fast Python IPLD library. Now we can read atproto repositories and firehose commits 30% faster! My local benchmarks show 200 MB/sec. GitHub Release: github.com/MarshalX/pyt...
September 8, 2024 at 12:26 AM
Detach quote posts support and performance improvement for JSON parsing in github.com/MarshalX/atp...
Release v0.0.50 · MarshalX/atproto
What's Changed Use jiter instead of the built-in json module to improve performance by @MarshalX in #360 Update docs example to fix empty blocks of commit by @MarshalX in #363 Bump certifi from 20...
github.com
August 30, 2024 at 11:52 AM
Reposted by Ilya (Marshal)
Now available: DMs! Start a private conversation with a friend directly on Bluesky within the Chat tab. 💬

Update to the latest version of the app (1.83) or refresh on desktop to start chatting!
May 22, 2024 at 6:57 PM
🦋 Bluesky
Butterflies Sky GIF
ALT: Butterflies Sky GIF
media.tenor.com
April 25, 2024 at 7:17 PM
The atproto custom feed is open for public view now(with respect of your privacy settings of course)! No login required! bsky.app/profile/did:...
April 13, 2024 at 9:10 PM
Content labeling (moderation) is here! This update brings labeling data-stream support as well ozone.tools API!

github.com/MarshalX/atp...

#atdev #python
Release v0.0.45 · MarshalX/atproto
What's Changed Content labeling (moderation) is here! This update brings labeling data-stream support as well ozone.tools API! Example how to subscribe and process labeling update Updated document...
github.com
March 14, 2024 at 1:28 AM
coming in Python as well!
March 14, 2024 at 12:54 AM
Python IPLD lib. Thanks to PGO and new Bound API in pyo3 v0.21 I achieved huge performance boost ones again! The pyo3 team did an awesome work! Many thanks to all contributors! Also, I implemented own CAR reader

github.com/MarshalX/pyt...

#atdev #python #pyo3
Release v1.2.3 · MarshalX/python-libipld
What's Changed Thanks to PGO and new Bound API in pyo3 v0.21 I achieved huge performance boost ones again! The pyo3 team did an awesome work! Many thanks to all contributors! Also, I implemented ow...
github.com
March 11, 2024 at 4:27 PM