Title: Wireservice
Author: tylrfishr
Published: <strong>March 19, 2026</strong>
Last modified: March 19, 2026

---

Search plugins

![](https://ps.w.org/wireservice/assets/icon-256x256.png?rev=3486768)

# Wireservice

 By [tylrfishr](https://profiles.wordpress.org/tylrfishr/)

[Download](https://downloads.wordpress.org/plugin/wireservice.1.2.0.zip)

 * [Details](https://wordpress.org/plugins/wireservice/#description)
 * [Reviews](https://wordpress.org/plugins/wireservice/#reviews)
 * [Development](https://wordpress.org/plugins/wireservice/#developers)

 [Support](https://wordpress.org/support/plugin/wireservice/)

## Description

Publish your posts and pages to the AT Protocol using the standard.site lexicons.

### Requirements

 * PHP 8.3+
 * WordPress 6.4+

### Setup

 1. Go to **Settings > Wireservice**.
 2. Connect your AT Protocol account via the OAuth flow.
 3. Configure your **Publication** settings (name, description, icon, theme colors)
    and sync to AT Protocol.
 4. Enable **Document** syncing and configure how post titles, descriptions, and cover
    images are sourced.

### How It Works

### Publication

Your WordPress site is represented as a `site.standard.publication` record on AT
Protocol. The plugin syncs site-level metadata including:

 * **Name** — from WordPress site title, Yoast SEO, or a custom value
 * **Description** — from WordPress tagline, Yoast SEO, or a custom value
 * **Icon** — from WordPress site icon or a custom upload
 * **Theme colors** — background, foreground, accent, and accent foreground. NOTE:
   these are used by other ATProto platforms to style your content, not on your 
   WordPress site.
 * **Discoverability** — opt in or out of discovery feeds. NOTE: these are used 
   by other ATProto platforms to show your publication in algorithmic feeds, not
   on your WordPress site.

The plugin also serves a `.well-known/site.standard.publication` endpoint that returns
the AT-URI of your publication record.

### Documents

When document syncing is enabled, published posts and pages are automatically synced
as `site.standard.document` records. Each document includes:

 * Title and description (configurable source)
 * Cover image (featured image, Yoast SEO image, or custom)
 * Publication date and last-updated date
 * Relative path (permalink)
 * Tags and categories
 * Optionally, full plain-text content

Documents are created on publish, updated on edit, and deleted when a post is trashed,
deleted, or unpublished.

A `<link rel="site.standard.document">` tag is added to the `<head>` of each synced
post for verification.

Note that Wireservice does not have a content lexicon yet. This is in development.

### Per-Post Overrides

A **Wireservice** meta box appears on the post editor, allowing per-post overrides
for:

 * Title source
 * Description source
 * Cover image source
 * Whether to include full content

### Yoast SEO Integration

When Yoast SEO is active, additional source options become available for both publication
and document settings:

 * **Publication**: Yoast organization name, website name, homepage meta description
 * **Documents**: Yoast SEO title, social title, X title, meta description, social
   description, X description, social image, X image

### Self-Hosting the OAuth Service

Wireservice authenticates with AT Protocol through an external OAuth service. By
default it uses `https://aip.wireservice.net`, but you can run your own instance
using [AIP](https://github.com/graze-social/aip), a high-performance OAuth 2.1 authorization
server with native AT Protocol integration.

### Running AIP

AIP requires Rust 1.87+. To run locally:

 1. Generate an OAuth signing key with `goat`: `goat key generate -t p256`. Save the
    public and private keys somewhere safe.
 2. Clone AIP: `git clone https://github.com/graze-social/aip.git`
 3. Setup environment variables:
 4. `EXTERNAL_BASE=https://your-domain.com
     DPOP_NONCE_SEED=$(openssl rand -hex 32)
    STORAGE_BACKEND=sqlite ATPROTO_OAUTH_SIGNING_KEYS=did:key:${YOUR_PRIVATE_KEY}OAUTH_SIGNING_KEYS
    =did:key:${YOUR_PRIVATE_KEY}ENABLE_CLIENT_API=true OAUTH_SUPPORTED_SCOPES="atproto:
    atproto atproto:repo:site.standard.publication atproto:repo:site.standard.document
    atproto:blob:*/*"
 5. Run AIP: `cargo run --bin aip`

Or with Docker:

    ```
    `
    ```

docker build -t aip .
 docker run -p 8080:8080 \ // all of the above env vars here
aip `

For production, use the `postgres` storage backend instead of `sqlite`. Depending
on your hosting environment, you may need to manually set the `DNS_NAMESERVERS` 
env var so that your AIP service can resolve handles properly. (Wireservice uses`
8.8.8.8,1.1.1.1`).

### Configuring Wireservice

Once your AIP instance is running, update the OAuth Service URL in WordPress:

 1. Go to **Settings > Wireservice**.
 2. Set the **OAuth Service URL** to your AIP instance (e.g., `https://your-domain.
    com`).

This is stored as the `wireservice_oauth_url` option and can also be set programmatically:

    ```
    `
    ```

update_option(‘wireservice_oauth_url’, ‘https://your-domain.com’);
 `<h3>Filters
</h3>` // Customize which post types are synced (default: post, page) add_filter(‘
wireservice_syncable_post_types’, function ($types) { $types[] = ‘custom_post_type’;
return $types; });

// Control whether a specific post should sync
 add_filter(‘wireservice_should_sync_post’,
function ($should_sync, $post) { return $should_sync; }, 10, 2); `

### License

[AGPL 3.0](https://wordpress.org/plugins/wireservice/LICENSE.md?output_format=md)

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Wireservice” is open source software. The following people have contributed to 
this plugin.

Contributors

 *   [ tylrfishr ](https://profiles.wordpress.org/tylrfishr/)

[Translate “Wireservice” into your language.](https://translate.wordpress.org/projects/wp-plugins/wireservice)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/wireservice/), check
out the [SVN repository](https://plugins.svn.wordpress.org/wireservice/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/wireservice/) by
[RSS](https://plugins.trac.wordpress.org/log/wireservice/?limit=100&mode=stop_on_copy&format=rss).

## Meta

 *  Version **1.2.0**
 *  Last updated **2 weeks ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **6.9.4**
 *  PHP version ** 8.3 or higher **
 * Tags
 * [atproto](https://wordpress.org/plugins/tags/atproto/)[bluesky](https://wordpress.org/plugins/tags/bluesky/)
   [syndication](https://wordpress.org/plugins/tags/syndication/)
 *  [Advanced View](https://wordpress.org/plugins/wireservice/advanced/)

## Ratings

No reviews have been submitted yet.

[Add my review](https://wordpress.org/support/plugin/wireservice/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/wireservice/reviews/)

## Contributors

 *   [ tylrfishr ](https://profiles.wordpress.org/tylrfishr/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/wireservice/)