Skip to main content

CLI, MCP, LSP, and VS Code extension for kustomize manifest drift detection

Project description

kdrift

CLI, MCP, LSP, and VS Code extension for kustomize manifest drift detection. Discovers which overlays are affected by your changes, renders baselines and candidates, and diffs per-resource.

Install

uv tool install kdrift
# or: pip install kdrift

Requires Python 3.13+ and kustomize on PATH.

For unreleased changes on main:

uv tool install git+https://github.com/mikedougherty/kdrift

Usage

kdrift diff                             # diff all affected overlays vs HEAD
kdrift diff k8s/base/deployment.yaml    # diff overlays affected by this file
kdrift diff --overlay k8s/dev           # diff only this overlay
kdrift diff --ref main~3                # diff against a specific ref
kdrift diff --ref main~5..main~2        # compare two commits
kdrift diff -C /path/to/repo            # target a different repository
kdrift diff --format json               # structured JSON output
kdrift diff --check                     # exit non-zero if drift exists (CI/pre-commit)
kdrift diff --watch                     # continuous mode: re-diff on file save

How It Works

  1. git diff --name-only HEAD finds changed files
  2. Dependency graph maps changes to affected leaf overlays (parses all kustomization.yaml reference types)
  3. kustomize build renders baseline (via git worktree, cached) and candidate (working tree)
  4. Two-phase per-resource diff: exact GVK+namespace+name match, then generator-aware matching for hash-suffixed ConfigMap/Secret names
  5. Output as unified diff or structured JSON

Configuration

Create .kdrift.yaml anywhere in your directory tree (searched upward from CWD):

kustomize_args:
  - "--enable-helm"
  - "--load-restrictor"
  - "LoadRestrictionsNone"

Development

make deps        # Install dependencies
make validate    # Run all checks (lint + typecheck + test)
make test        # Tests only
make typecheck   # mypy strict mode

See docs/development.md for detailed setup.

Quick Start: MCP Server for Claude Code

Give your AI agent kustomize drift detection in two steps:

1. Install kdrift:

uv tool install kdrift

2. Add to your Claude Code MCP config (.claude.json or project .mcp.json):

{
  "mcpServers": {
    "kdrift": {
      "command": "kdrift",
      "args": ["mcp"]
    }
  }
}

That's it. Your agent now has four tools: kdrift_diff, kdrift_discover, kdrift_affected, kdrift_render. Ask it to "check what my kustomize changes affect" and it will use them.

3. (Optional) Add agent instructions for deeper context on how to use kdrift:

@path/to/kdrift/docs/agents/AGENTS.md

Or copy docs/agents/ into your project's agent instructions directory. The files are self-contained and agent-agnostic.

Agent Integration

kdrift ships with agent-readable instructions in docs/agents/. These work with any AI coding assistant that supports AGENTS.md or similar instruction files.

VS Code Extension

The vscode-kdrift/ directory contains a VS Code extension that shows drift diffs in a side panel, modeled after the built-in Markdown Preview. See vscode-kdrift/README.md for setup and development.

LSP Server (IDE integration)

kdrift lsp          # stdio transport, configure in your LSP client
kdrift lsp --debug  # enable file logging to ~/.cache/kdrift/kdrift.log

Provides diagnostics on save, CodeLens annotations, and hover info.

Documentation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kdrift-0.1.3rc1.tar.gz (974.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kdrift-0.1.3rc1-py3-none-any.whl (29.7 kB view details)

Uploaded Python 3

File details

Details for the file kdrift-0.1.3rc1.tar.gz.

File metadata

  • Download URL: kdrift-0.1.3rc1.tar.gz
  • Upload date:
  • Size: 974.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kdrift-0.1.3rc1.tar.gz
Algorithm Hash digest
SHA256 5911f1373b0b98dfe9e8e97e5e7fdc2b374a67e497acd32f0c4b1860d2344e94
MD5 88873ffa53223a74f692dd76f0a3807c
BLAKE2b-256 f71e09111d8f7fefde0dead843ca02bb2c590dc1db04fe9d3ca3b0ec0515ea22

See more details on using hashes here.

Provenance

The following attestation bundles were made for kdrift-0.1.3rc1.tar.gz:

Publisher: publish-rc.yml on mikedougherty/kdrift

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kdrift-0.1.3rc1-py3-none-any.whl.

File metadata

  • Download URL: kdrift-0.1.3rc1-py3-none-any.whl
  • Upload date:
  • Size: 29.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kdrift-0.1.3rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 67808fca85d79cba0bd3d6209ea23fd080939cbb83334b58d9faf7f359f72bf3
MD5 96c05c09557ae20a658bf963a76a3587
BLAKE2b-256 c045063b31c1a6ea14d6f8ed48e5f61c411835997db5e1c6d7fee197be496f05

See more details on using hashes here.

Provenance

The following attestation bundles were made for kdrift-0.1.3rc1-py3-none-any.whl:

Publisher: publish-rc.yml on mikedougherty/kdrift

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page