Two deployments, and an update path for each
The hosted editor needs no installation and holds nothing. The self-hosted server is a single container image you run. Both open the same documents from the same contract.
Hosted editor — nothing to install
A static page served from a versioned path, running entirely in your browser against your own filesystem through the File System Access API. No server, no session, no stored credential, and no data at rest beyond your own repository.
Its only network traffic is fetching its own build. Your specification never leaves your machine.
Try it on sample data at specpad.com/v01/?demo — every document editable, edits held in the browser and lost on reload.
Self-hosted — one container
The server is distributable as a single container image serving both the editor build and the API. It takes its repository, branch, credential, authentication provider, role map and commit policy from one configuration file given on the command line, and exits with a non-zero status when that file is invalid rather than starting in a half-configured state.
State on disk is a bare clone and per-user worktrees, all regenerable from git. An update never migrates data and a rollback loses nothing.
The launcher
docs/specpad/index.html is generated in your repository and redirects to
whichever editor you use — the public one, or your own server. A team running its own server
sets the base URL in the project index, and everyone on the repository lands there instead.
Where one server hosts several repositories, the launcher names which project this one is.
Updates, and what an operator controls
| Deployment | Update path | Automatic? |
|---|---|---|
| Hosted editor | New build published to the version path; the next page load has it | Yes |
| Self-hosted server | New image; the operating company redeploys | No |
| The skill | Distributed with Claude Code | With the CLI |
The version path is derived from the contract version, and old paths stay live indefinitely — so an update never breaks a document authored against an earlier contract.
SpecPad cannot push an update to a self-hosted instance. An operator who does nothing stays on the version they installed. That is a deliberate property of self-hosting rather than a gap: a documentation tool that could silently replace its own code inside your network would be a worse security position, not a better one.
Everything is in your git
Documents, snapshots, job caches and release baselines are all committed files under
docs/specpad/. There is no database and nothing to back up separately. If SpecPad
disappeared tomorrow your specification would still be there, still readable, still diffable.