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
🐍 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
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/
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
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.
@atproto.com are you gonna be our trusted verifier? 🙂 #atproto
April 21, 2025 at 5:45 PM
@atproto.com are you gonna be our trusted verifier? 🙂 #atproto
🚀 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
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
🚀 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
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
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
Add sync firehose message support, the latest lexicon update, and more github.com/MarshalX/atp... #atproto
zero issues with making custom video feeds in Python
January 25, 2025 at 10:16 PM
zero issues with making custom video feeds in Python
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 😅
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
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 😅
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 😅
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 🙂
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
Thank you for your contribution! Test coverage, performance benchmarks, and more — that's very professional. I appreciate it!
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
The fix was merged! But it does not resolve the main problem. So to be continued here github.com/bluesky-soci...
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)
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
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)
tl;dr no recursion limit; malformed payloads in the network could lead to segfaults of python-libipld (rust binding)
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
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... 🙃
300 stars on GitHub github.com/MarshalX/atp... (atproto.blue) 🎉
October 21, 2024 at 8:29 PM
300 stars on GitHub github.com/MarshalX/atp... (atproto.blue) 🎉
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
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.
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
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
Bluesky now has over 10 million users, and I was #17,636!
September 17, 2024 at 11:01 AM
Bluesky now has over 10 million users, and I was #17,636!
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
This is how easy you can upload video to Bluesky using Python! Thanks to @meorge.com contribution which adds send_video method! #atdev
⚡ 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
⚡ 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...
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
Detach quote posts support and performance improvement for JSON parsing in github.com/MarshalX/atp...
do not like 🤫 github.com/MarshalX/atp...
Release v0.0.49 · MarshalX/atproto
What's Changed
Breaking changes for Direct Messages. Now you must create a client with a chat proxy. See the updated documentation.
Add automatically switching to PDS endpoint after login and sess...
github.com
July 4, 2024 at 4:27 PM
do not like 🤫 github.com/MarshalX/atp...
Just shipped: Bluesky Direct Messages in Python SDK! atproto.blue/en/latest/dm... #atproto
💬 Direct Messages (Chats)
Bluesky Direct Messages were launched on May 22, 2024. It began as a simple chat system for Bluesky users to communicate with one another. Currently, only text messages are supported. The Python SD...
atproto.blue
May 22, 2024 at 9:44 PM
Just shipped: Bluesky Direct Messages in Python SDK! atproto.blue/en/latest/dm... #atproto
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!
Update to the latest version of the app (1.83) or refresh on desktop to start chatting!
May 22, 2024 at 6:57 PM
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!
Update to the latest version of the app (1.83) or refresh on desktop to start chatting!
🦋 Bluesky
Butterflies Sky GIF
ALT: Butterflies Sky GIF
media.tenor.com
April 25, 2024 at 7:17 PM
🦋 Bluesky
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
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:...
Content labeling (moderation) is here! This update brings labeling data-stream support as well ozone.tools API!
github.com/MarshalX/atp...
#atdev #python
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
Content labeling (moderation) is here! This update brings labeling data-stream support as well ozone.tools API!
github.com/MarshalX/atp...
#atdev #python
github.com/MarshalX/atp...
#atdev #python
coming in Python as well!
March 14, 2024 at 12:54 AM
coming in Python as well!
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
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
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
github.com/MarshalX/pyt...
#atdev #python #pyo3