Warning
This project is still in development and is not ready for use. It is very rough around the edges and a lot of things are rapidly changing.
FediProto Sync is a daemon to sync posts from your Mastodon account to your BlueSky account. It runs in the background and will automatically sync posts on an interval.
I'm making this because I wanted to have a way to sync any posts I make on my Mastodon server to BlueSky. There are multiple alternatives to this, but I wanted to make my own and tweak it to my liking. There are two alternatives that I know of:
- Bridgy Fed
- Bridgy Fed is the simplest way to create a bridge between Mastodon and BlueSky. It's a hosted service that creates a "proxy" account on either platform and syncs posts/interactions/reposts/replies between the two. It has two big downsides for me though: You can't control the proxied account it creates and it requires people on both sides to opt-in to the service.
- Skymoth
- Skymoth is an open-source hosted service that syncs posts from your Mastodon account to your BlueSky account. This is the closest alternative to what I'm making, but it's technically a hosted service. It's actually what I have been using in the meantime while I worked on this. It's a great service and I recommend it if you don't want to jump through the hoops of setting this up.
Legend:
Icon | Description |
---|---|
🛑 | Currently unsupported on BlueSky. |
❌ | No plans to implement. |
🏗️ | Not yet implemented, but will be. |
🚧 | Not supported on BlueSky, but plan to workaround. |
- Sync posts from your Mastodon account to your BlueSky account.
- Maintain the original post's creation date.
- This will only be applicable if the post is synced well after it was created on Mastodon. If the post is synced within a few minutes of being created, the creation date will be the time it was synced.
- Maintain thread structure.
- Sync image attachments.
- With any alternative text.
- Sync video attachments.
- Truncate posts that are too long for BlueSky's 300 character limit.
- Truncated posts will have a link to the original post on Mastodon.
- Sync content warnings. 🏗️
- Enrich links in posts.
- Enrich tags/hashtags in posts.
- If a post was truncated, any tags/hashtags that were in the truncated will be added to the end of the post.
- Sync polls. 🛑
- Sync boosts/reblogs. 🚧
- There are two methods I'm looking into:
- If the original account and post are bridged to BlueSky with Bridgy Fed, the bridged post will be reposted.
- Otherwise, a link to the original post will be added to the post.
- There are two methods I'm looking into:
- Sync replies. ❌
- Backfill older posts on Mastodon. ❌
- This isn't within the scope of what I want this to do. The goal is to sync posts as they are made on Mastodon.
- In addition I've heard there was some jank for people, who did something similar with their Twitter posts, and how others saw the posts flooding their discover feeds on BlueSky.
- Maintain the original post's creation date.
- Sync posts from your BlueSky account to your Mastodon account. 🏗 ️
Note
No pre-built binaries are available at this time. You will need to build from source.
For detailed setup instructions, see the setup guide.
You can run the daemon in the following ways:
- Directly in your terminal.
- Doing this will require you to keep the terminal open to keep the daemon running.
- Not recommended for long-term use.
- With Docker/Docker Compose.
- With Kubernetes.
- With
systemd
or another service manager.
- Rust
- The
nightly
toolchain is preferred, butstable
should work as well. - Make sure to have the toolchains for the target platforms you want to build for.
- The
- Navigate to the project directory in your terminal.
- Run the following command to build the project:
cargo build --package fediproto-sync --release --target <TARGET>
Replace <TARGET>
with the desired target platform.
anyhow
async-session
atrium-api
atrium-xrpc-client
axum
axum-extra
bytes
chrono
diesel
diesel_migrations
dom_query
dotenvy
git-version
image
ipld-core
libipld
megalodon
oauth2
openssl
rand
reqwest
serde
serde_json
thiserror
tokio
toml_edit
tracing
tracing-subscriber
uuid
The source code for this project is licensed with the MIT License.