# w3c/webauthn: Working with the Web Authentication specification

> w3c/webauthn is the source repository for the W3C Web Authentication specification, not a browser authentication library or deployable service. Its practical use is building, reviewing, and contributing to the Bikeshed draft.

**w3c/webauthn** — Web Authentication: An API for accessing Public Key Credentials

- Repository: https://github.com/w3c/webauthn
- Website: https://w3c.github.io/webauthn/
- Stars: 1,482 · Forks: 311
- Language: Bikeshed
- License: NOASSERTION
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/w3c-webauthn

## WebAuthn source versus an authentication library

The repository addresses a specific standards problem: it holds the source used by the W3C WebAuthn Working Group to produce the Web Authentication specification. Web Authentication is described as an API for accessing Public Key Credentials, so the repository defines and maintains the standards material for that web platform capability. It is intended for specification editors, standards contributors, reviewers, and implementers who need the current draft or its normative text.

This distinction matters during project selection. A developer looking for JavaScript, browser, or server code that performs registration and authentication should not choose this repository as though it were an installable SDK. The listed Python project named `w3c-webauthn` is the document build environment defined in `pyproject.toml`, not an application library exposing a WebAuthn client. Its version is `0.1.0`, while its dependencies are `bikeshed>=7.1.1` and `pip>=26.1.2`.

The repository provides several forms of the specification. The editor's draft is published at `https://w3c.github.io/webauthn/`, and the README also points to the `gh-pages` branch. It separately links the officially published working-draft snapshot at `https://www.w3.org/TR/webauthn/`. These are useful for reading, while contributions belong in the source repository and must follow its contribution process.

## Bikeshed source, includes, and generated specification output

The primary language is identified as Bikeshed, which fits the repository layout. The main specification entry point is `index.bs`, with supporting content in directories such as `.bikeshed-include/`, `explainers/`, and `test-vectors/`. Configuration and build metadata are distributed across files including `manifest.txt`, `status.include`, `w3c.json`, `pyproject.toml`, `mise.toml`, and `mise.lock`. Based on that structure, the normative document is assembled from Bikeshed source and includes, then rendered as formatted HTML.

This repository is therefore a publication pipeline with specification content, not merely a static HTML copy. Changes to the source can affect generated prose, references, document metadata, or supporting material. The README states that the editor's copy is also available from the `gh-pages` branch, while the `main` branch is the source and publishing path.

The `test-vectors/` directory indicates that test-vector material is part of the repository, and the README separately links the Web Platform Tests tree for WebAuthn. It does not, however, explain how to run those browser tests from this repository or provide a conformance test command. That is a real boundary for contributors who want to validate browser behavior. This repository supplies specification sources and build machinery, but the README does not document an end-to-end browser test procedure here.

## Installing mise and building the draft locally

The documented installation path targets specification contributors rather than WebAuthn application users. The README identifies `mise` as a prerequisite and points to its own getting-started documentation. It does not give separate operating system packages or a pip-first installation route for the specification build, so the commands below are limited to the documented workflow.

After cloning the repository, place the project root as the working directory. The first command initializes the local tool environment using the repository's `mise` configuration:

```bash
mise setup
```

After setup completes, build the formatted HTML for the draft:

```bash
mise build
```

The README does not identify the exact output path produced by `mise build`. It does confirm that the editor's copy is published at `https://w3c.github.io/webauthn/` and is available through the `gh-pages` branch, but a contributor should inspect the local build configuration rather than assume a generated filename.

For the first useful editing cycle, run the documented preview server:

```bash
mise serve
```

The README says this command regenerates the rendered document as local changes are made and makes it available at `http://localhost:8000`. The expected confirmation is therefore access to the rendered draft at that address, not an application login or credential ceremony. Anyone preparing a substantive specification change must also read `CONTRIBUTING.md`, check the current issue list, and review the mailing list discussion before submitting feedback.

## Continuous publication from main to gh-pages

The README documents an automated publishing path for the editor's draft. A push to `main` triggers a GitHub Actions workflow configured in `.github/workflows/build-validate-publish.yml`. The workflow publishes `https://w3c.github.io/webauthn/` automatically from the `gh-pages` branch.

This design separates source editing from the rendered site. Contributors work against `main`, while readers can consume the generated editor's copy or inspect the history in the repository Actions tab. It also means the editor's draft should not be treated as the same publication track as the officially published W3C snapshot linked at `https://www.w3.org/TR/webauthn/`.

The README does not enumerate the individual validation steps performed by the workflow, its required review policy, or its failure conditions. It identifies the workflow file and publishing behavior, but not a complete CI contract. Contributors should inspect that workflow file before relying on a local build as a complete substitute for CI validation.

Recent release records include `PR-00-20190116`, `CR-00-20180320`, and `WD-09-20180315`, dated in 2018 and 2019. Those records are historical milestones, not evidence of the current state of the source. For maintenance, the concrete repository fact is that it is not archived and the last push was on 2026-10-06.

## Contribution requirements and specification review costs

WebAuthn specification changes carry review costs beyond ordinary code edits. The README states that a person who wants to materially contribute must meet the requirements in `CONTRIBUTING.md`. It also asks contributors to examine the existing issue list and the W3C mailing list discussion before submitting feedback. This workflow suggests that proposals need technical context and coordination with the Working Group, rather than a quick pull request based only on implementation preference.

The repository's build configuration reduces mechanical overhead. `mise setup`, `mise build`, and `mise serve` handle environment setup, formatted output, and local regeneration. They do not resolve whether a change is editorially acceptable, technically coherent, or suitable for the specification process. Those judgments require reviewing the contribution rules and relevant discussions.

The maintenance record shows recent activity: the repository is not archived, and its last push was on 2026-10-06. However, the listed releases stop at 2019, so the release list and the source repository's recent activity should not be conflated. The release entries identify formal specification milestones; they do not describe every subsequent editor's draft update.

Upgrade cost is tied to the document toolchain. `pyproject.toml` requires Python `>=3.13` and pins lower bounds for `bikeshed` and `pip`. Repository files also include `uv.lock` and `mise.lock`, while `mise.toml` defines the development environment. A contributor should expect toolchain compatibility to matter when reproducing the build, but the README does not document a separate migration procedure for application projects because this is not an application dependency.

## Custom licensing and limits of the repository

The repository is marked with a custom licence that GitHub cannot classify, and the relevant file is `LICENSE.md`. That means an engineer cannot infer the permissions or restrictions from a standard software licence identifier. The classification itself is not permission or prohibition. Anyone copying source, generated specification text, images, or other files should read `LICENSE.md` and determine whether the intended use is allowed. This is a licence-review boundary, not legal advice.

The largest practical limitation is also the main reason to use the project correctly. `w3c/webauthn` does not document how to integrate Public Key Credentials into an application, configure a server, choose an authenticator, or ship a login flow. It does not document rollback for a proposed change, and the README does not describe a deployment procedure because deployment is outside the repository's stated purpose.

For an implementation-oriented alternative, a browser or server authentication library would provide executable APIs and application integration instructions. The difference is architectural: this project produces and publishes a standards document through Bikeshed, while an implementation library exposes callable software for developers. Web platform tests can complement the specification by exercising browser behavior, but they are maintained in the separate `web-platform-tests` repository linked by the README.

## Conclusion

Adopt this repository if you need to inspect, build, or propose changes to the Web Authentication specification. Do not treat it as an authentication implementation for an application, and first verify the branch, generated output, contribution rules, and custom LICENSE.md terms that apply to your intended use.

## FAQ

### Is w3c/webauthn an authentication library that I can install in an application?

No. The repository contains the source for the W3C Web Authentication specification and its document build environment. It is intended for specification work, not application integration.

### How do I build the w3c/webauthn specification locally?

Install `mise`, run `mise setup`, and then use `mise build`. For local regeneration and viewing, the README documents `mise serve`, which serves the draft at `http://localhost:8000`.

### Where should I submit a change to w3c/webauthn?

Start with `CONTRIBUTING.md` because the README states that material contributions must meet its requirements. It also directs contributors to the current issue list and the mailing list discussion before feedback is submitted.

## Sources

- [Issues](https://github.com/w3c/webauthn/issues)
- [Project website](https://w3c.github.io/webauthn/)
- [README](https://github.com/w3c/webauthn/blob/main/README.md)
- [Releases](https://github.com/w3c/webauthn/releases)
- [w3c/webauthn on GitHub](https://github.com/w3c/webauthn)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/w3c-webauthn
