GitHub Stories is a Go service (API + media worker) behind PostgreSQL and object storage, plus the two clients described on the rest of this site. Running your own instance means standing up that service, registering your own GitHub OAuth app, and pointing the CLI and browser extension at it instead of the hosted deployment.

This page is a pointer, not a copy. The actual runbook lives in the repository and is the source of truth:

Open docs/runbook.md in the repository →

At a high level, expect it to cover: the OpenAPI contract inpackages/contracts/openapi.yaml, the versioned SQL migrations underinfra/migrations, the environment variables the service refuses to start without in production, the container image, and how to point gh stories and the browser extension at a non-default service URL.

Self-hosting inherits every privacy behavior described on the privacy page — the 24-hour expiry and the audience model are properties of the software, not of who operates it. What a self-hosted operator can see or retain beyond that is a deployment decision on that operator's part, not something this project controls.