Title: Joshternet
Author: JoshuaMorris
Published: <strong>12 Oktoobar, 2026</strong>
Last modified: 12 Oktoobar, 2026

---

Raadi kaabayaal

![](https://ps.w.org/joshternet/assets/banner-772x250.png?rev=3740586)

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

# Joshternet

 Qore [JoshuaMorris](https://profiles.wordpress.org/thewoollybully/)

[Soo Rog](https://downloads.wordpress.org/plugin/joshternet.0.1.1.zip)

 * [Faahfaahin](https://so.wordpress.org/plugins/joshternet/#description)
 * [Dibu-eegisyo](https://so.wordpress.org/plugins/joshternet/#reviews)
 *  [Rakibaad](https://so.wordpress.org/plugins/joshternet/#installation)
 * [Horumarinta](https://so.wordpress.org/plugins/joshternet/#developers)

 [Taageero](https://wordpress.org/support/plugin/joshternet/)

## Sharraxaad

The Joshternet is an open network for independent websites. Everyone is welcome:
Joshes and non-Joshes are equal participants, with the same standing in the network.
Being a Josh is not a requirement for joining.

A website should be able to say for itself that it participates in the network.

This plugin publishes the RFC-JOSH-0002 declaration at the origin-root URI:

    ```
    /.well-known/josh
    ```

The smallest valid declaration is:

    ```
    {"version":1}
    ```

Josh identity is optional and separate from participation. Affirming, declining,
or leaving Josh identity undeclared does not change your status in the network. 
A Josh can publish:

    ```
    {"version":1,"josh":true}
    ```

A non-Josh can participate equally and explicitly publish:

    ```
    {"version":1,"josh":false}
    ```

Joshness is declared, never derived.

The declaration endpoint is served through WordPress. The plugin does not create
a physical `.well-known` file, change Apache or Nginx configuration, add telemetry,
register accounts, or require JavaScript.

Optional shortcode `[joshternet_button]`: WordPress may query the Joshternet Button
State service for this origin, caches the result locally, and displays a bundled
88×31 image. See External services. No remote script or remote image is loaded on
the page.

#### Multisite

Joshternet declarations belong to origins, not WordPress site records.

Subdomain and domain-mapped sites can have independent declarations when they have
different origins. Path-based subsites that share the main site’s origin also share
its single `/.well-known/josh` URI, so the plugin directs those administrators back
to the main site.

A site published below the origin root may require hosting configuration to route`/.
well-known/josh` into WordPress. The plugin warns about that case instead of pretending
every hosting platform handles it the same way.

### External services

The plugin’s primary function is publishing a Joshternet declaration at `/.well-
known/josh`. Publishing that declaration does not contact Joshternet.org or any 
other external service.

The optional `[joshternet_button]` shortcode uses the Joshternet Button State service:

https://joshternet.org/api/button-state

When the shortcode is rendered and there is no usable cached result, this site’s
WordPress server sends an HTTPS GET request to that URL. The request includes this
site’s normalized website origin as the `origin` query parameter, for example `https://
example.com`. The User-Agent identifies the plugin version and repeats that same
origin. The service uses the origin to determine the site’s state in the public 
Joshternet registry and returns the appropriate button information. Ordinary connection
metadata such as the WordPress server’s IP address can be visible to the service.

The plugin does not send WordPress usernames, email addresses, posts, comments, 
visitor identities, cookies, analytics identifiers, the current visitor’s page URL,
or the contents of `/.well-known/josh` to the Button State service.

A successful result is cached locally in WordPress for up to 6 hours. A failed or
invalid lookup is cached for 15 minutes so an outage does not contact the service
on every page view. If the service is unavailable or its response cannot be validated,
the shortcode displays nothing.

The button images are bundled with the plugin. The shortcode does not load a remote
image or remote JavaScript.

Joshternet Terms of Service:
 https://joshternet.org/terms/

Joshternet Privacy Policy:
 https://joshternet.org/privacy/

### License and authorship

Copyright 2026 Joshua Morris.

This plugin is licensed under GPLv2 or later. The full GPL version 2 text is in 
LICENSE.

The Joshternet specifications (RFC-JOSH-0001, RFC-JOSH-0002) are separate works 
authored by Joshua Morris for the Joshternet and licensed under CC BY 4.0. This 
plugin implements those specifications; it does not relicense them under the GPL,
and the specification licenses do not relicense this plugin.

The 88×31 PNGs in assets/buttons/ are Joshternet button artwork authored by Joshua
Morris for the Joshternet project. For distribution with this plugin they are licensed
under GPLv2 or later, the same as the plugin code.

## Sawir-shaashado

[⌊Settings > Joshternet participation and identity options.⌉⌊Settings > Joshternet
participation and identity options.⌉[

Settings > Joshternet participation and identity options.

[⌊Optional [joshternet_button] shortcode showing Join the Joshternet for an origin
that is not yet a registry member.⌉⌊Optional [joshternet_button] shortcode showing
Join the Joshternet for an origin that is not yet a registry member.⌉[

Optional `[joshternet_button]` shortcode showing Join the Joshternet for an origin
that is not yet a registry member.

## Rakibaad

 1. Install and activate Joshternet.
 2. Open Settings > Joshternet.
 3. Enable Joshternet participation.
 4. Choose whether to declare Josh identity.
 5. Verify the public endpoint shown on the settings page.

## SBI

### Does this create a physical .well-known file?

No. WordPress serves the endpoint. That avoids depending on a writable document 
root or host-specific Apache and Nginx configuration.

### Does joining the Joshternet make me a Josh?

No. Participation and Josh identity are separate. A participant may affirm Josh 
identity, decline it, or leave identity undeclared. All three choices have equal
status in the network.

### Can a non-Josh participate?

Yes. Non-Joshes are welcome as equal participants, with the same standing as Joshes.
Josh identity is optional; it does not determine membership or status in the network.

### How does WordPress Multisite work?

The declaration belongs to an origin. Subdomain and mapped-domain sites can publish
independently when they use distinct origins. Path-based subsites on the same origin
cannot each own the same origin-root `/.well-known/josh` endpoint.

### Does the plugin send anything to joshternet.org?

Publishing `/.well-known/josh` does not call joshternet.org. There is no telemetry
or registration.

The optional `[joshternet_button]` shortcode is the only feature that contacts Joshternet.
org. See **External services** for when that request happens, what normalized website
origin is sent, how long the result is cached, and the Joshternet Terms of Service
and Privacy Policy.

### How do I show the Joshternet button?

Add `[joshternet_button]` to a post or page (Shortcode block works). Images are 
shipped in the plugin. No remote script is loaded.

## Dibu-eegisyo

Ma jiraan wax dibu-eegis ah oo ku saabsan kaabahan.

## Ka-qaybgalayaasha & Horumariyayaasha

“Joshternet” waa softiweer il furan. Dadka soo socda ayaa wax ku biiriyay kaabahan.

Ka-qaybgalayaasha

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

[Ku tarjun “Joshternet” luqaddaada.](https://translate.wordpress.org/projects/wp-plugins/joshternet)

### Ma xiisaynaysaa horumarinta?

[Baadh koodka](https://plugins.trac.wordpress.org/browser/joshternet/), fiiri [bakhaarka SVN](https://plugins.svn.wordpress.org/joshternet/),
ama iska qor [diiwaanka horumarinta](https://plugins.trac.wordpress.org/log/joshternet/)
adigoo adeegsanaya [RSS](https://plugins.trac.wordpress.org/log/joshternet/?limit=100&mode=stop_on_copy&format=rss).

## Isbeddellada

#### 0.1.1

 * Documented the optional Joshternet Button State external service in readme, settings,
   and the Privacy Policy Guide.
 * Linked Joshternet Terms of Service and Privacy Policy.
 * Hardened the Button State HTTP request and expanded external-service and cache
   tests.
 * Cache a successful Button State for 6 hours and a failed lookup for 15 minutes.
 * Reconciled WordPress compatibility CI with the published Tested up to claim.
 * Path-based Multisite shortcode images load from origin-root `wp-content/plugins/`,
   not `/{blog}/wp-content/`.

#### 0.1.0

 * Initial pre-release implementation.
 * RFC-JOSH-0002 version 1 declaration support.
 * Separate affirmed, declined, and undeclared Josh identity states.
 * WordPress Multisite origin awareness.
 * Virtual endpoint with no filesystem or server-configuration writes.
 * Optional `[joshternet_button]` shortcode with local images and registry lookup.

## Meta

 *  Version **0.1.1**
 *  Last updated **19 saac kahor**
 *  Active installations **In ka yar 10**
 *  WordPress version ** 6.0 ama ka sareeya **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 ama ka sareeya **
 *  Language
 * [English (US)](https://wordpress.org/plugins/joshternet/)
 * Tags
 * [identity](https://so.wordpress.org/plugins/tags/identity/)[indieweb](https://so.wordpress.org/plugins/tags/indieweb/)
   [well-known](https://so.wordpress.org/plugins/tags/well-known/)
 *  [Aragti Sare](https://so.wordpress.org/plugins/joshternet/advanced/)

## Qiimeynta

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/joshternet/reviews/#new-post)

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

## Ka-qaybgalayaasha

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

## Taageero

Ma heysaa waxaad dhahdo? Caawimaad ma u baahan tahay?

 [Eeg madasha taageerada](https://wordpress.org/support/plugin/joshternet/)