Join the Joshternet

Are you a Josh? Get yourself connected. People who aren’t named Josh are equally welcome—Joshness is declared, never derived, and non-Joshes participate fully.

No accounts. No signup form. Your website stays yours. This page guides the existing process; Implement remains the technical guide.

  1. 1. Choose participation identity

    Pick one valid version 1 declaration. Identity is never inferred from a name or site.

    Affirmed Josh Identity

    /.well-known/josh

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

    josh: true

    Declined Josh Identity

    /.well-known/josh

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

    josh: false—still a full participant.

    Undeclared Josh Identity

    /.well-known/josh

    {
      "version": 1
    }

    Omit josh to leave identity open.

  2. 2. Choose a website platform

    Use a tested recipe when you can. Instructions stay on the platform pages—this list only points there.

    • Cloudflare Worker — serves /.well-known/josh from a Worker route without changing your app build
    • Astro — copies public/.well-known/josh into dist/
    • Eleventy — copies josh.json to /.well-known/josh with addPassthroughCopy
    • Ghost — serves /.well-known/josh at the reverse-proxy layer
    • Hugo — publishes static/.well-known/josh into public/
    • Jekyll — publishes .well-known/josh after including that directory
    • Next.js — serves public/.well-known/josh (including static export)
    • Nuxt — copies public/.well-known/josh into Nuxt 4 generate output
    • Quartz — copies josh.json into public/.well-known/josh after npx quartz build
    • SvelteKit — copies static/.well-known/josh with adapter-static
    • WordPress — Joshternet plugin serves /.well-known/josh
    • Generic static website — serve the file at /.well-known/josh with Content-Type: application/json
  3. 3. Publish the declaration

    Serve the JSON at exactly /.well-known/josh on your origin (no trailing slash). Prefer Content-Type: application/json and a public 200 response without login or client script.

    For example, https://example.invalid/ publishes at https://example.invalid/.well-known/josh. Each origin needs its own file—including www if that origin is separate.

    Details, redirects, and caching notes live in the implementation guide.

  4. 4. Validate

    Check the file you published. A successful check means the declaration is valid when read—not that JoshBot has listed the site yet.

    Open the declaration checker

  5. 5. Request discovery (optional)

    Nomination asks JoshBot to crawl. It does not establish participation by itself and does not guarantee a registry listing.

    Nominate a site for JoshBot

  6. 6. Celebrate once you're listed

    When JoshBot lists your site in the public Network, these optional next steps are yours to take—or skip. Completing the steps above alone is not membership success.