How opentofu/registry works
OpenTofu Registry is a metadata-backed registry for providers and modules. Its main workflow is to discover repository releases, maintain and validate registry metadata, generate v1 API response files, and serve those files to registry clients. Separate commands support adding entries, updating versions and backfilling history, and checking provider signing keys. The README also describes GitHub issue-form submissions, which are a human intake process rather than an in-repository runtime path. The graph focuses on documented capabilities and evidenced command wiring; source excerpts are partial, so uncertain internal links are omitted.
Main entry points: bump-versions/main.go Bump versions · list.go Provider discovery · client.go GitHub client · verify-gpg-key/main.go Key verification
Components 21
Catalog management
- Add module
src/cmd/add-module/main.go - Add provider
src/cmd/add-provider/main.go - Bump versions
src/cmd/bump-versions/main.go - Module metadata
src/internal/module/module.go - Module discovery
src/internal/module/list.go - Provider metadata
src/internal/provider/provider.go - Provider discovery
src/internal/provider/list.go - Version backfill
src/internal/provider/backfill.go
GitHub integration
- GitHub client
src/internal/github/client.go - Release assets
src/internal/github/assets.go
Validation and signing
- Key verification
src/cmd/verify-gpg-key/main.go - Signing keys
src/internal/gpg/keycollection.go - Metadata validation
src/cmd/validate/main.go
API publication
- Generate API
src/cmd/generate-v1/main.go - Module API output
src/internal/v1api/modules.go - Provider API output
src/internal/v1api/providers.go - Generated responses
- HTTPS file server
src/cmd/run-server/main.go
Other components
- Registry submitter
- Registry clients
- GPG key files
Connections 33
- Registry submitter → Add module: submits module
- Registry submitter → Add provider: submits provider
- Add module → Module discovery: lists entries
- Add module → Module metadata: writes metadata
- Add provider → Provider discovery: lists entries
- Add provider → Provider metadata: writes metadata
- Bump versions → Module discovery: lists modules
- Bump versions → Provider discovery: lists providers
- Bump versions → Module metadata: updates metadata
- Bump versions → Provider metadata: updates metadata
- Bump versions → Version backfill: backfills versions
- Module discovery → GitHub client: queries repositories
- Provider discovery → GitHub client: queries repositories
- Version backfill → GitHub client: fetches history
- GitHub client → Release assets: downloads assets
- Metadata validation → Module metadata: validates module data
- Metadata validation → Provider metadata: validates provider data
- Key verification → Provider discovery: finds providers
- Key verification → Signing keys: uses key checks
- Key verification → GitHub client: checks membership
- Key verification → Release assets: downloads signatures
- Signing keys → GPG key files: reads keys
- Generate API → Module discovery: lists modules
- Generate API → Provider discovery: lists providers
- Generate API → Module API output: generates module API
- Generate API → Provider API output: generates provider API
- Module API output → Module metadata: reads metadata
- Module API output → Generated responses: writes responses
- Provider API output → Provider metadata: reads metadata
- Provider API output → Signing keys: loads signing keys
- Provider API output → Generated responses: writes responses
- HTTPS file server → Generated responses: serves files
- Registry clients → HTTPS file server: requests API