
Grafana dashboards as code: How to manage your dashboards with Git
Note: This blog post originally published in May 2025 and was updated in February 2026 to reflect that Git Sync is now available in public preview in Grafana Cloud.
As your Grafana instance scales, so does the challenge of maintaining dashboards. Managing dozens—or hundreds—of dashboards through the UI alone can quickly become overwhelming. Tracking changes gets murky, dashboards multiply, and consistency suffers.
To regain control, many teams manage dashboards as code, applying the same proven practices that have helped them successfully manage complex software systems. The as code approach offers greater visibility and version control, but it comes with trade-offs: the setup is often complex and not as user-friendly as managing dashboards from an engaging user interface. Plus, the burden of change management shifts to a few admins, creating bottlenecks.
Watching users wrestle with this again and again made something clear—what they really needed was a simple, integrated way to store dashboards in Git, track changes, and manage approvals.
That’s what sparked the idea: what if Grafana could handle this natively? What if we could bring the GitOps workflow into Grafana—leveraging familiar tools like GitHub pull requests—and make saving dashboards effortless?

The solution: Git Sync, a Grafana feature that provides you with the power of Git version control right within your Grafana instance. Git Sync enables you to submit changes in your dashboards as pull requests and get them reviewed by your team directly from Grafana or in GitHub.
How Git Sync works
In building Git Sync, our goal was to replace custom-made CIs with a simple way to synchronize Grafana content with GitHub. To make that happen, Git Sync automatically synchronizes your dashboard configuration with a Git repository.

You can connect Grafana to your repositories using GitHub Apps or a personal access token, then select the repository, branch, and path to see dashboards as code directly in Grafana.
After configuration, the feature becomes part of your Save workflow, and enables a seamless experience for saving dashboards directly to your selected repository. The edited dashboard is only visible to the editor, or through a preview link in the PR, and becomes available to everyone if the PR is merged to main.

Once Git Sync is set up, the Save button will trigger a new workflow to save your dashboard directly to the configured GitHub repository.
Once the dashboard is saved, it’s easy to open a pull request to submit the changes with just the click of a button. After the PR is opened, Grafana will automatically add a comment with links to the original dashboards, as well as the preview and, for on-prem versions, a screenshot of the current and edited dashboard so actual changes can be quickly reviewed at a glance.

After reviewing the changes and merging the PR, changes will be automatically synchronized with Grafana.
Over the course of the upcoming year, we plan to expand the feature capabilities, including adding support for additional Grafana resources. We will also add support for more upstream connections with other tools, like GitLab and BitBucket.
To learn more about this feature, you can review our Git Sync documentation.
How to get started with Git Sync
Git Sync is designed to make it easy to save and manage your dashboards as code—no complex setup required. It is a great fit if you don’t yet have an as code pipeline in place—or if your current setup is becoming difficult to maintain.
Git Sync is currently available in public preview for all Grafana Cloud users, and available in Grafana OSS as experimental. If you are interested in trying the feature, you can follow the documentation and set up your connections.
We strongly recommend not using Git Sync in production environments at this time. Instead, we suggest trying it in a development environment. Please refer to our documentation to learn more about Git Sync’s current limitations.
Once enabled, the folders and underlying dashboards with an active connection will have GitHub as their source of truth. This means that if you delete the connection setup, you will see all the dashboards disappear from the instance. (They will still be available in the Git repository and you can re-import them using, for example, grafanactl.)
We hope you’ll explore the different types of connections, copy your dashboards to Git or vice versa, and let us know what you think. We're actively gathering feedback in the #git-sync channel in our Grafana Labs Community Slack and we can’t wait to hear your thoughts.
Grafana Cloud is the easiest way to get started with metrics, logs, traces, dashboards, and more. We have a generous forever-free tier and plans for every use case. Sign up for free now!


