No description
  • Go 76%
  • Svelte 15.7%
  • TypeScript 6.6%
  • CSS 0.8%
  • JavaScript 0.4%
  • Other 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Andrew Borg 89d9527021
feat: Implement GitHub release webhook receivers (#834)
* feat: Implement GitHub release webhook receivers

Add VCS and release handling to parse release events and
create module and provider versions from them.

Supports webhook secrets to validate incoming webhook calls.

Requires providing GitHub App or Personal Access Token to access
private repositories.

Signed-off-by: Andrew Borg <andrew.b.borg@gmail.com>

* Apply suggestion from @valentindeaconu

Co-authored-by: Valentin Deaconu <valentin@vdea.ro>

* Add e2e test for webhook events; revert invalid changes to SHASUMS

* Fix latent merge conflicts and lint

---------

Signed-off-by: Andrew Borg <andrew.b.borg@gmail.com>
Co-authored-by: Valentin Deaconu <valentin@vdea.ro>
2026-07-14 10:45:47 +03:00
.devcontainer feat: add support terraform submodules (#708) 2026-02-06 12:46:45 +02:00
.github feat: Implement GitHub release webhook receivers (#834) 2026-07-14 10:45:47 +03:00
.vscode chore(build): Rework Taskfile (#556) 2025-08-25 13:00:19 +03:00
cmd/terralist feat: Implement GitHub release webhook receivers (#834) 2026-07-14 10:45:47 +03:00
docs feat: Implement GitHub release webhook receivers (#834) 2026-07-14 10:45:47 +03:00
e2e feat: Implement GitHub release webhook receivers (#834) 2026-07-14 10:45:47 +03:00
internal/server feat: Implement GitHub release webhook receivers (#834) 2026-07-14 10:45:47 +03:00
pkg feat: Implement GitHub release webhook receivers (#834) 2026-07-14 10:45:47 +03:00
static feat(webui): Revamp the web UI (#94) 2023-04-21 21:57:10 +03:00
tools fix: remediate AWS Inspector CVEs (dependency bumps + golang-jwt v5 migration) (#857) 2026-06-09 12:20:23 +03:00
web chore(deps): update typescript-eslint monorepo to v8.63.0 (#869) 2026-07-08 09:32:18 +03:00
.gitignore feat: Implement GitHub release webhook receivers (#834) 2026-07-14 10:45:47 +03:00
.go-version chore(deps): bump pgx to v5.9.0 and Go to 1.26.4 (#840) 2026-06-04 12:39:06 +03:00
.golangci.yml chore(deps): bump pgx to v5.9.0 and Go to 1.26.4 (#840) 2026-06-04 12:39:06 +03:00
.goreleaser.yml feat!(build): Switch to pure-Go sqlite3 implementation (#362) 2024-11-27 13:05:12 +02:00
.mise.toml chore(deps): bump pgx to v5.9.0 and Go to 1.26.4 (#840) 2026-06-04 12:39:06 +03:00
.mockery.yml feat: Implement GitHub release webhook receivers (#834) 2026-07-14 10:45:47 +03:00
docker-entrypoint.sh feat: add _FILE env vars for some secrets within Docker image only (#786) 2026-04-14 17:27:06 +03:00
Dockerfile chore(deps): update alpine docker tag to v3.24 (#863) 2026-06-15 11:22:08 +03:00
Dockerfile.test chore(ci): move all GitHub Actions off the deprecated Node 20 runtime (#841) 2026-06-04 14:19:40 +03:00
go.mod fix(deps): update module golang.org/x/text to v0.39.0 (#875) 2026-07-08 10:44:05 +03:00
go.sum fix(deps): update module golang.org/x/text to v0.39.0 (#875) 2026-07-08 10:44:05 +03:00
LICENSE Add LICENSE (#10) 2022-07-14 11:03:25 +03:00
mkdocs.yml feat!: block fetching artifacts from private addresses by default (#839) 2026-06-04 12:39:47 +03:00
README.md chore(docs): update inconsistencies and outdated documentation (#744) 2026-03-25 10:27:40 +02:00
Taskfile.yaml feat: Implement GitHub release webhook receivers (#834) 2026-07-14 10:45:47 +03:00

Terralist Logo

Terralist

A private Terraform/OpenTofu registry for modules and providers


Latest Release CI Go Version License: MPL 2.0

Terralist implements the Terraform registry protocols and gives you a private, self-hosted registry with a web dashboard, RBAC, and support for multiple storage backends.

Features

  • Private module and provider registry: upload, version, and distribute Terraform/OpenTofu modules and providers within your organization
  • Web dashboard: browse artifacts, view documentation, and manage authorities and API keys
  • RBAC: fine-grained access control with built-in roles (admin, readonly, anonymous) and custom policies via Casbin
  • Multiple OAuth providers: authenticate via GitHub, GitLab, BitBucket, or any OIDC-compatible provider
  • API keys with scoped policies: create API keys for CI/CD with per-key RBAC policies and organizational scopes
  • Storage backends: store artifacts in AWS S3, Azure Blob, Google Cloud Storage, local filesystem, or proxy mode
  • Prometheus metrics: monitor uploads, downloads, API key usage, storage operations, and HTTP request latency
  • Single binary: no external dependencies, runs anywhere Go compiles to

Quick start

# Download the latest release
curl -sL "https://github.com/terralist/terralist/releases/latest/download/terralist_$(go env GOOS)_$(go env GOARCH).zip" -o terralist.zip
unzip terralist.zip

# Create a minimal config
cat > config.yaml <<EOF
oauth-provider: github
gh-client-id: ${GITHUB_OAUTH_CLIENT_ID}
gh-client-secret: ${GITHUB_OAUTH_CLIENT_SECRET}
token-signing-secret: $(openssl rand -hex 16)
cookie-secret: $(openssl rand -hex 16)
EOF

# Start the server
./terralist server --config config.yaml

Then open http://localhost:5758 in your browser.

See the getting started guide for detailed setup instructions including HTTPS configuration for Terraform CLI integration.

Usage

# Use a module from your private registry
module "vpc" {
  source  = "registry.example.com/my-org/vpc/aws"
  version = "1.0.0"
}

# Use a provider from your private registry
terraform {
  required_providers {
    custom = {
      source  = "registry.example.com/my-org/custom"
      version = "2.0.0"
    }
  }
}

Documentation

Full documentation is available at www.terralist.io, including:

Contributing

Contributions are welcome. All input is appreciated, whether it's a bug report, feature request, or pull request.

License

Terralist is licensed under the Mozilla Public License 2.0.