Caution
This is still an experimental effort to explore whether ATProto can be implemented in WordPress. It’s not working yet, but contributions are very welcome.
- Contributors: pfefferle
- Tags: atproto, bluesky, federation, fediverse, decentralized
- Requires at least: 6.0
- Tested up to: 6.7
- Stable tag: 0.1.0
- Requires PHP: 8.0
- License: GPLv2 or later
- License URI: https://www.gnu.org/licenses/gpl-2.0.html
Turn your WordPress site into a federated AT Protocol node.
This plugin implements the AT Protocol specification, turning your WordPress site into a Personal Data Server (PDS). Your site becomes a first-class citizen in the decentralized social web, with its own DID (Decentralized Identifier) and cryptographic identity.
Features:
- did:web Identity: Your site gets a decentralized identifier based on your domain (e.g.,
did:web:example.com) - DID Document: Automatically served at
/.well-known/did.json - XRPC Endpoints: Full implementation of AT Protocol's RPC system
- Content Federation: Posts and comments are transformed into AT Protocol records
- Rich Text Support: Automatic extraction of mentions, links, and hashtags (facets)
- Media Support: Images and attachments are stored as blobs with proper CID references
- Bidirectional Sync: Receive interactions from the network via polling
- Cryptographic Signatures: All commits are signed with P-256 keys
How It Works:
Outgoing (WordPress → AT Protocol):
- You publish a post in WordPress
- The plugin transforms it into an
app.bsky.feed.postrecord - Rich text facets (links, mentions, hashtags) are extracted
- Images are uploaded as blobs
- The record is signed and stored in your repository
Incoming (AT Protocol → WordPress):
- The plugin polls subscribed DIDs for new content
- Replies to your posts become WordPress comments
- Likes and reposts are tracked as comment meta
No. This plugin makes your WordPress site a node in the AT Protocol network. You can interact with Bluesky users, but your content lives on your own server.
No. Your WordPress site becomes its own identity in the network with its own DID and handle.
Yes. The plugin uses polling instead of WebSockets for incoming content, making it compatible with standard WordPress hosting.
They can follow your handle (your domain name) or discover your posts through replies and interactions.
The private key is stored in the WordPress database (wp_options). For production use, consider using environment variables or a secrets manager.
The plugin implements:
com.atproto.identity.resolveHandlecom.atproto.server.describeServercom.atproto.repo.describeRepocom.atproto.repo.getRecordcom.atproto.repo.listRecordscom.atproto.repo.createRecordcom.atproto.repo.putRecordcom.atproto.repo.deleteRecordcom.atproto.repo.uploadBlobcom.atproto.sync.getRepocom.atproto.sync.getBlob
Project and support maintained on GitHub at pfefferle/wordpress-atproto.
- Initial release
- did:web identity support
- DID document generation
- XRPC endpoint implementation
- Post and comment federation
- Blob storage for media
- P-256 cryptographic signatures
- Polling-based relay subscription
Follow the normal instructions for installing WordPress plugins.
To add a WordPress Plugin using the built-in plugin installer:
- Go to Plugins > Add New.
- Type "
atproto" into the Search Plugins box. - Find the WordPress Plugin you wish to install.
- Click Details for more information about the Plugin and instructions you may wish to print or save to help setup the Plugin.
- Click Install Now to install the WordPress Plugin.
- The resulting installation screen will list the installation as successful or note any problems during the install.
- If successful, click Activate Plugin to activate it, or Return to Plugin Installer for further actions.
There are a few cases when manually installing a WordPress Plugin is appropriate.
- If you wish to control the placement and the process of installing a WordPress Plugin.
- If your server does not permit automatic installation of a WordPress Plugin.
- If you want to try the latest development version.
Installation of a WordPress Plugin manually requires FTP familiarity and the awareness that you may put your site at risk if you install a WordPress Plugin incompatible with the current version or from an unreliable source.
Backup your site completely before proceeding.
To install a WordPress Plugin manually:
- Download your WordPress Plugin to your desktop.
- Download from GitHub
- If downloaded as a zip archive, extract the Plugin folder to your desktop.
- With your FTP program, upload the Plugin folder to the
wp-content/pluginsfolder in your WordPress directory online. - Go to Plugins screen and find the newly uploaded Plugin in the list.
- Click Activate to activate it.
After activation, visit Settings → AT Protocol to:
- Generate Keys: Create your cryptographic keypair (done automatically on first activation)
- Verify DID Document: Check that
/.well-known/did.jsonis accessible - Configure Federation: Set relay URL and manage subscriptions
Ensure your site uses pretty permalinks (Settings → Permalinks) for the .well-known/did.json endpoint to work correctly.
Initial release.