Skip to content

Module Layout

ForgeMT organizes modules by operational intent. The goal is to make the install path obvious and keep optional systems out of the critical path.


Layout

modules/
  platform/      Forge runner runtime and internal platform building blocks.
  infra/         Foundational infrastructure for the platform.
  helpers/       Operational helper modules used to run and maintain Forge.
  integrations/  Optional external integrations and vendor-specific modules.

Use platform first, infra only for EKS/ARC foundations, helpers when you need operational support resources, and integrations only when your company uses those external systems.

For a full module-by-module map, see Module Catalog.


Platform Modules

Module Purpose Directly call it?
modules/platform/forge_runners Tenant runner entry point. Wires EC2 and ARC runner specs, GitHub App behavior, trust validation, job logs, relay options, and service catalog data. Yes. This is the normal tenant-facing module.
modules/platform/ec2_deployment EC2 runner lane backed by terraform-aws-github-runner. Usually through forge_runners.
modules/platform/arc_deployment Tenant ARC runner lane wrapper. Usually through forge_runners.
modules/platform/arc Lower-level ARC controller and scale-set Helm wrapper. No, unless building a custom platform wrapper.

Infrastructure Modules

Module Purpose Required?
modules/infra/eks Builds the EKS foundation for ARC/Kubernetes runners, including Karpenter, Calico, EBS CSI, CoreDNS, and pod identity support. Required only for ARC runners.

EC2-only Forge deployments can skip modules/infra/eks.


Helper Modules

Module Purpose
modules/helpers/ami_policy IAM policy support for Forge AMI usage.
modules/helpers/ami_sharing Shares runner AMIs across accounts or regions.
modules/helpers/cloud_custodian Runs cleanup and policy automation.
modules/helpers/cloud_formation Creates CloudFormation admin and execution roles used by CloudFormation-backed setup paths.
modules/helpers/ecr Creates ECR repositories for runner, sidecar, Lambda, or operational images.
modules/helpers/forge_subscription Creates tenant-side roles and access policies for Forge runner jobs.
modules/helpers/opt_in_regions Enables AWS opt-in regions.
modules/helpers/service_linked_roles Creates AWS service-linked roles used by services such as EC2 Spot.
modules/helpers/storage Creates S3 buckets for artifacts, templates, logs, and operational data.

Helpers are useful, but they are not the runner runtime. Deploy them when your company's operating model requires them.


Integration Modules

Module family Purpose Required?
modules/integrations/splunk_* Splunk Cloud, Splunk Observability, dashboards, billing ingest, OpenTelemetry, OpenCost, secrets, and stuck-workflow redelivery. No.
modules/integrations/teleport Teleport agents and access/audit integration. No.
modules/platform/forge_runners/github_webhook_relay/source Internal GitHub webhook ingress used by the Forge tenant runner platform. Yes.
modules/integrations/github_webhook_relay_* GitHub webhook relay destination and receiver modules for external consumers. No.

Splunk modules are intentionally optional. A company that uses another observability platform should skip the Splunk deployment example and provide its own log and metric ingestion path.


Release Metadata

Every deployment root should pin both the Forge ref and the module path in release_versions.yml or release_versions.yaml. Terragrunt stacks should read those values instead of rebuilding source addresses in every stack.

module_path: modules/helpers/storage
ref: <forge-release-tag-or-commit>