Publish with Jekyll
The public resource is exactly /.well-known/josh. It does not become /.well-known/josh.json.
This is the layout joshternet.org uses.
Keep an extensionless static file
Jekyll copies source files without front matter as static files, byte for byte. Put the declaration at the public path in the project source:
.well-known/
josh
A participant affirming Josh identity:
{
"version": 1,
"josh": true
}
josh may instead be false for Declined Josh Identity, or omitted for Undeclared Josh Identity. The implementation guide defines those three declarations. Do not invent other values.
Where you want editors and validators to treat the file as JSON while you edit, keep a separate josh.json for tooling and keep .well-known/josh as the published copy of the same object. Jekyll does not rename josh.json to an extensionless path the way some other generators can. Do not publish the protocol resource as /.well-known/josh.json.
Include the dot directory
Jekyll skips source paths that begin with . unless they appear in include. Add the directory in _config.yml:
include:
- .well-known
Without that entry, .well-known/josh stays out of _site and the deployed origin has no declaration.
The generated site then contains:
.well-known/
josh
The deployed resource is https://example.invalid/.well-known/josh.
Serve it as JSON
The response should use Content-Type: application/json. Jekyll does not choose that media type for an extensionless file. The host does.
On Netlify:
[[headers]]
for = "/.well-known/josh"
[headers.values]
Content-Type = "application/json"
A different host needs its own header rule for the same path. The path and the media type do not change.
Check the deployed URL
Check the live origin with Check a declaration.
Or check the live URL directly (not only the source file):
curl -i https://example.invalid/.well-known/josh
Confirm all of the following:
200 OKContent-Type: application/json- a valid JSON body
- the expected version 1 declaration
- the extensionless path
/.well-known/josh - no redirect to a different origin