Fork of diggerhq/digger with Forgejo backendless support
  • Go 75.4%
  • TypeScript 14.9%
  • JavaScript 4.7%
  • HCL 2.2%
  • Go Template 1.7%
  • Other 1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Simon B. Laursen 78b37f520f
All checks were successful
release / test (pull_request) Successful in 1m10s
release / release (pull_request) Has been skipped
release / test (push) Successful in 49s
release / release (push) Successful in 1m33s
forgejo: count imports, moves and output changes as something to apply
AllPlansEmpty relied on the created/updated/deleted summary, which is 0/0/0
for plans that only change outputs, import, move or forget resources.
Applying those still changes state, so digger/apply must not turn green.
Decide emptiness strictly from the plan JSON (IsTerraformPlanStrictlyEmpty)
and carry it as DiggerExecutorPlanResult.IsEmpty. Unparseable JSON counts as
non-empty.
2026-10-23 09:54:25 +02:00
.forgejo/workflows ci: run the tests on pull requests, release only from main 2026-10-22 17:22:26 +02:00
.github ci: drop the upstream GitHub workflows, Forgejo runs them and they cannot pass here 2026-10-21 23:23:21 +02:00
agent-tasks Move from callbacks to webhooks for repos handling - again - on top of v0.6.136 this time (#2492) 2025-11-28 16:48:41 +02:00
backend feat: add Forgejo and Gitea Actions support in backendless mode 2026-10-21 22:38:25 +02:00
background/projects-refresh-service fix: honor git_timeout from digger.yml before cloning (#2724) 2026-09-30 17:56:09 +01:00
changelogs Add changelog for November 7th, 2025 (#2458) 2025-11-18 16:41:41 -08:00
cli forgejo: count imports, moves and output changes as something to apply 2026-10-23 09:54:25 +02:00
cli_e2e Finish bumping go to 1.25 (#2438) 2025-11-13 16:41:31 +00:00
dgctl Docs: Schema generation (#2547) 2026-02-06 10:01:38 -08:00
docs feat: add Forgejo and Gitea Actions support in backendless mode 2026-10-21 22:38:25 +02:00
drift fix: carry git_timeout in the job spec so policy repo clones honor it (#2740) 2026-10-07 14:26:17 +01:00
ee feat: add Forgejo and Gitea Actions support in backendless mode 2026-10-21 22:38:25 +02:00
fieldnotes Fix image filename for Managed Postgres section (#2409) 2025-11-06 16:18:44 -08:00
libs forgejo: count imports, moves and output changes as something to apply 2026-10-23 09:54:25 +02:00
sandbox-sidecar fix rebased docs merge out of order (#2591) 2026-03-02 14:54:27 -08:00
scripts add x permissions to providers after download (#2134) 2025-09-16 14:04:40 +01:00
self-hosting Fix default image repos (backend ee -> ce), add podAnnotations (#2598) 2026-04-24 17:07:17 +01:00
taco fix rebased docs merge out of order (#2591) 2026-03-02 14:54:27 -08:00
ui ui github setup link fix (#2642) 2026-04-14 13:02:19 -07:00
.dockerignore helm charts for open taco, ui adjustment for deploy (#2326) 2025-10-28 09:26:15 -07:00
.gitignore docs: add Holocron migration spike (#2656) 2026-06-01 13:37:48 -07:00
.release-please-manifest.json Sandboxes (draft) (#2457) 2025-11-19 13:14:24 -08:00
action.yml feat: add Forgejo and Gitea Actions support in backendless mode 2026-10-21 22:38:25 +02:00
CONTRIBUTING.md Update Slack invitation links in CONTRIBUTING.md (#2646) 2026-04-24 15:51:10 +01:00
Dockerfile_backend feat: enable orchestrator gha setup via UI, feat: full docker compose, fix: handle drift job status processing in orchestrator (#2569) 2026-02-23 11:35:25 -05:00
Dockerfile_backend_ee security: resolve CVE-2025-61729 & CVE-2025-47913 via package upgrade (#2560) 2026-02-06 09:39:49 -08:00
Dockerfile_bg_projects_refresh Update base image in Dockerfile for builder stage (#2447) 2025-11-13 11:47:09 -08:00
Dockerfile_drift security: resolve CVE-2025-61729 & CVE-2025-47913 via package upgrade (#2560) 2026-02-06 09:39:49 -08:00
Dockerfile_tasks update atlas versions to latests (#2446) 2025-11-13 11:37:43 -08:00
Dockerfile_ui commit sha logging (#2505) 2025-12-05 16:39:36 -08:00
fly-drift-igor-dev.toml Updates to slack handling 2024-10-02 18:10:12 +01:00
fly-drift.toml update domain 2024-09-25 09:46:31 +01:00
fly-pro.toml enable debug logs (#2106) 2025-08-22 10:25:06 -07:00
fly-projects-refresh-service.toml projects refresh background service (#2011) 2025-07-07 12:30:03 -07:00
go.mod security: resolve CVE-2025-61729 & CVE-2025-47913 via package upgrade (#2560) 2026-02-06 09:39:49 -08:00
go.sum security: resolve CVE-2025-61729 & CVE-2025-47913 via package upgrade (#2560) 2026-02-06 09:39:49 -08:00
go.work Finish bumping go to 1.25 (#2438) 2025-11-13 16:41:31 +00:00
go.work.sum Docs: Schema generation (#2547) 2026-02-06 10:01:38 -08:00
LICENSE Change license to MIT 2025-09-26 13:36:04 -07:00
README.md docs: Update README (#2521) 2026-01-22 09:28:25 -08:00

Image

Community Slack | Schedule a call | Demo Video | Docs


Heads-up: We’ve rebranded! Starting from 7th November 2025, the Digger project is now OpenTaco.
The company’s still Digger, same battle-tested engine — just a more apt name and a bigger vision.

TL;DR

  • Before: Best-in-class Terraform PR automation (a solid improvement upon Atlantis)
  • After: The only piece of software you need to run Terraform or OpenTofu in production.

    We'll gradually update all our marketing material to reflect the same!

CI/CD for Terraform is tricky. To make life easier, specialized CI systems aka TACOS exist - Terraform Cloud, Spacelift, Atlantis, etc.

But why have 2 CI systems? Why not reuse the async jobs infrastructure (compute, orchestration, logs, etc.) of your existing CI?

Digger runs Terraform natively in your CI. This is:

  • Secure, because cloud access secrets aren't shared with a third-party
  • Cost-effective, because you are not paying for additional compute just to run your Terraform

Features

  • Terraform plan and apply in pull request comments
  • Private runners - thanks to the fact that there are no separate runners! Your existing CI's compute environment is used
  • Open Policy Agent (OPA) support for RBAC
  • PR-level locks (on top of Terraform native state locks, similar to Atlantis) to avoid race conditions across multiple PRs
  • Terragrunt, Workspaces, multiple Terraform versions, static analysis via Checkov, plan persistence, ...
  • Drift detection

Getting Started

How it works

Digger has 2 main components:

  • CLI that runs inside your CI and calls Terraform with the right arguments
  • Orchestrator - a minimal backend (that can also be self-hosted) that triggers CI jobs in response to events such as PR comments

Digger also stores PR-level locks and plan cache in your cloud account (DynamoDB + S3 on AWS, equivalents in other cloud providers)

Compared to Atlantis

  • No need to host and maintain a server (although you can)
  • Secure by design: jobs run in your CI, so sensitive data stays there
  • Scalable compute: jobs can run in parallel
  • RBAC and policies via OPA
  • Drift detection
  • Apply-after-merge workflows
  • Web UI (cloud-based)
  • Read more about differences with Atlantis in our blog post

Compared to Terraform Cloud and other TACOs

  • Open source; the orchestrator can be self-hosted
  • Unlimited runs and unlimited resources-under-management on all tiers
  • Jobs run in your CI, not on a third-party server
  • Supports PR automation (apply before merge)
  • No duplication of the CI/CD stack
  • Secrets not shared with a third-party

How Digger is Used

Contributing

We love contributions. Check out our contributing guide to get started.

Please pick an existing issue if you’re interested in contributing; otherwise, feel free to create an issue and triage it with the maintainers before creating a PR.

Not sure where to get started? You can:

  • Join our Slack, and ask us any questions there.

Telemetry

Digger collects anonymized telemetry. See usage.go for details. You can disable telemetry collection either by setting telemetry: false in digger.yml, or by setting the TELEMETRY env variable to false.

Running migrations

atlas migrate apply --url $DATABASE_URL --allow-dirty

Local postgres

You might need to disable SSL if running the default docker image.

export DATABASE_URL=postgres://postgres:root@localhost:5432/postgres?sslmode=disable

Resources

  • Docs for comprehensive documentation and guides
  • Slack for discussion with the community and Digger team.
  • GitHub for code, issues, and pull requests
  • Medium for terraform automation and collaboration insights, articles, tutorials, and updates.