Key points
- GitOps can manage
pipelines/,steps/,schedules/,triggers/,external-triggers/,git-webhook-sources/,dashboards/,scopes/,knowledge/,access/,config-repositories/,setting/git-apps/, andsetting/system/. - Canonical system files:
credentials.yaml,runner.yaml,assistant.yaml,auth.yaml,mail.yaml,data-management.yaml, plussetting/git-apps/github.yaml. - Models, agent roles, and MCP servers and profiles are one file per resource under
models/,agent-roles/,mcp/servers/, andmcp/profiles/, where the file path is the resource name. Team scoping uses the path just like pipelines, somodels/<team>/<name>.yamlis a team-scoped model, and one file per registry may setdefault: true. setting/system/assistant.yamlowns the assistant block. Sync fails with a migration error whenassistant:is still insetting/system/runner.yaml.- UI or API edits to GitOps-managed resources create database overrides. The next sync can replace or recreate them unless the change is pushed back.
- Sync applies dependency roots first: team hierarchy from
config-repositories/, then team-owned dashboards and notification routes, then pipeline dashboard outputs. - Long-running syncs can be canceled. If no worker is registered but the row is still
running, cancellation marks itcanceledso operators can retry without editing the database. setting/git-apps/github.yamlis app-scoped; the legacysetting/system/github.yamlis read for migration compatibility for one release.
Examples
pipelines/ steps/ schedules/
models/ agent-roles/ mcp/
triggers/ external-triggers/ git-webhook-sources/
dashboards/ scopes/ knowledge/
access/ config-repositories/
setting/git-apps/github.yaml
setting/system/credentials.yaml
setting/system/runner.yaml
setting/system/assistant.yaml
setting/system/auth.yaml
setting/system/mail.yaml
setting/system/data-management.yaml
models/<name>.yaml models/<team>/<name>.yaml
agent-roles/<name>.yaml mcp/servers/<name>.yaml
mcp/profiles/<name>.yamlHow it works
Drift review presents Git and NopsAI panes side by side with line numbers, synchronized scrolling, and highlighted removed Git lines and added desired lines before a push.
Both a global configuration repository and per-team repositories are supported. Team repositories are bound through PUT /v1/teams/{teamID}/config-repository.
Internal service URLs stay in system configuration rather than in the app-scoped Git App file.
Implementation evidence
examples/gitops-quickstart/README.mdGitOps sample repository layout.
services/nopsai/config_sync_apply.goApply order and upsert behavior.

