{
  "$schema": "https://next.mdxui.dev/schema.json",
  "theme": "certificate",
  "frame": "sheet",
  "template": "api-product",
  "title": "Diffkeel: see the config change before it ships",
  "description": "Diffkeel renders the config each environment receives and diffs it against what runs there now.",
  "sections": [
    {
      "kind": "nav",
      "shell": {"inset":"bleed","density":"none","surface":"glass","sticky":true},
      "block": {
        "type": "nav",
        "menu": "none",
        "brand": {"href":"/","text":"diffkeel","mark":"git-commit-horizontal"},
        "links": [["/docs/first-diff","Docs"],["/changelog","Changelog"],["/pricing","Pricing"]],
        "cta": {"href":"/install","label":"Install"}
      }
    },
    {
      "kind": "hero",
      "shell": {"inset":"contained","density":"hero"},
      "block": {
        "type": "hero",
        "layout": "split",
        "stack": 560,
        "title": "See the config change before it ships.",
        "lede": "Diffkeel renders the config each environment receives and diffs it against what runs there now. A change nobody reviewed fails the build.",
        "actions": [
          {"href":"/install","label":"Install","kind":"solid"},
          {"href":"/docs/first-diff","label":"Read the first diff","kind":"ghost"}
        ],
        "command": {"command":"curl -fsSL get.diffkeel.example | sh","note":"macOS and Linux, one binary"},
        "fine": ["Free CLI, no account","YAML, JSON, TOML and env files"],
        "specimen": {
          "blocks": [
            {
              "type": "terminal",
              "variant": "plain",
              "title": "diffkeel diff prod",
              "lang": "diff",
              "lines": [
                "--- prod, running since 2026-10-21",
                "+++ prod, rendered from this commit",
                "@@ api.yaml @@",
                " replicas: 4",
                "-timeout: 30s",
                "+timeout: 5s",
                "@@ worker.yaml @@",
                "-queue.concurrency: 8",
                "+queue.concurrency: 16",
                "@@ prod.env @@",
                "-DB_PASSWORD: ******** (a1f3)",
                "+DB_PASSWORD: ******** (9c07)"
              ]
            }
          ]
        }
      }
    },
    {
      "kind": "band",
      "shell": {"inset":"contained","density":"compact"},
      "block": {
        "type": "stats",
        "items": [
          {"value":"1","label":"Binary, with no runtime to install","icon":"terminal"},
          {"value":"4","label":"Formats read: YAML, JSON, TOML, env","icon":"files"},
          {"value":"0","label":"Secret values printed, ever","icon":"shield-check"},
          {"value":"9 MB","label":"Download for macOS or Linux","icon":"gauge"}
        ]
      }
    },
    {
      "kind": "section",
      "shell": {"inset":"contained","density":"section","surface":"plate"},
      "block": {
        "type": "terminal",
        "variant": "tabs",
        "title": "One diff, three places",
        "group": "where",
        "tabs": [
          {
            "label": "CLI",
            "lines": [
              {"cmd":"diffkeel diff prod","space":"after"},
              {"out":"rendered prod from 3 files in 41 ms"},
              {"row":["api.yaml","timeout 30s to 5s"]},
              {"row":["worker.yaml","queue.concurrency 8 to 16"]},
              {"row":["prod.env","DB_PASSWORD changed, value masked"]},
              {"gap":"sm"},
              {"out":"3 changes, 1 secret, 0 reviews","cursor":true}
            ]
          },
          {
            "label": "CI",
            "lines": [
              {"cmd":"diffkeel check --env prod --require-review","space":"after"},
              {"out":"3 changes in prod need a review"},
              {"row":["api.yaml","timeout 30s to 5s"]},
              {"row":["worker.yaml","queue.concurrency 8 to 16"]},
              {"row":["prod.env","DB_PASSWORD changed, value masked"]},
              {"gap":"sm"},
              {"out":"exit 1: deploy stopped","cursor":true}
            ]
          },
          {
            "label": "Config",
            "pre": true,
            "lines": [
              {"text":"# diffkeel.toml"},
              {"text":"[env.prod]"},
              {"text":"files = [\"base.yaml\", \"prod.yaml\", \"prod.env\"]"},
              {"text":"live  = \"./scripts/read-live-config.sh prod\""},
              {"text":"mask  = [\"DB_PASSWORD\", \"API_TOKEN\"]"},
              {"text":"review = \"required\""}
            ]
          }
        ]
      }
    },
    {
      "kind": "section",
      "shell": {"inset":"contained","density":"section"},
      "block": {
        "type": "feature-grid",
        "cellHead": "icon-label",
        "head": {"eyebrow":"Four commands","title":"Render, diff, mask, gate."},
        "items": [
          {
            "icon": "layers",
            "label": "Render",
            "title": "The config each env gets",
            "text": "Overlays, defaults and env files resolved into the final values."
          },
          {
            "icon": "git-commit-horizontal",
            "label": "Diff",
            "title": "Against what runs now",
            "text": "Compared with the live config, key by key, not file by file."
          },
          {
            "icon": "shield-check",
            "label": "Mask",
            "title": "Secrets stay masked",
            "text": "A changed secret shows as changed, with a short hash. Its value never prints."
          },
          {
            "icon": "check",
            "label": "Gate",
            "title": "Unreviewed changes fail",
            "text": "A prod change without a review exits 1, in any CI that runs a container."
          }
        ]
      }
    },
    {
      "kind": "section",
      "shell": {"inset":"contained","density":"section"},
      "block": {
        "type": "bento",
        "head": {"eyebrow":"Where it runs","title":"Laptop, team, agent."},
        "panels": [
          {
            "title": "On a laptop",
            "text": "Before the pull request.",
            "specimen": {
              "type": "terminal",
              "variant": "plain",
              "title": "zsh · feature/shorter-timeouts",
              "lang": "console",
              "lines": [
                "$ diffkeel diff staging",
                "rendered staging from 2 files in 18 ms",
                "api.yaml     timeout          30s  ->  10s",
                "api.yaml     retries          3    ->  5",
                "1 file, 2 changes, 0 secrets",
                "$ diffkeel render staging --key api.timeout",
                "10s   from staging.yaml, line 12",
                "      over base.yaml, line 4 (30s)",
                "$ diffkeel diff staging --json | wc -l",
                "2"
              ]
            }
          },
          {
            "title": "For the team",
            "text": "Stored diffs and approvals, on Team.",
            "specimen": {
              "type": "api-call",
              "method": "POST",
              "path": "/v1/diffs/{id}/approve",
              "examples": [
                {
                  "label": "Approve",
                  "request": "{ \"env\": \"prod\" }",
                  "status": "200 OK",
                  "response": "{ \"id\": \"df_8k2\", \"approved\": true }"
                }
              ]
            }
          },
          {
            "title": "In an agent",
            "text": "JSON output an agent reads.",
            "specimen": {
              "type": "agent-prompt",
              "label": "Ask an agent",
              "lines": ["Run diffkeel diff prod --json and explain each change in one line."]
            }
          }
        ]
      }
    },
    {
      "kind": "closing",
      "shell": {"inset":"contained","density":"closing","background":"glow"},
      "block": {
        "type": "closing",
        "layout": "split",
        "head": {
          "eyebrow": "Free CLI",
          "title": "Diff your next deploy.",
          "lede": "Install one binary and run it in the repository you deploy from."
        },
        "specimen": {
          "blocks": [
            {
              "type": "terminal",
              "variant": "plain",
              "title": "The first five minutes",
              "lang": "console",
              "lines": [
                "$ diffkeel init",
                "wrote diffkeel.toml with 2 environments: staging, prod",
                "$ diffkeel diff prod",
                "3 changes, 1 secret, 0 reviews",
                "$ diffkeel check --env prod --require-review",
                "exit 1: 3 changes need a review"
              ]
            }
          ]
        },
        "actions": [
          {"href":"/install","label":"Install","kind":"solid"},
          {"href":"/pricing","label":"See Team","kind":"ghost"}
        ]
      }
    },
    {
      "kind": "footer",
      "shell": {"inset":"contained","density":"footer"},
      "block": {
        "type": "footer",
        "layout": "columns",
        "brand": {"href":"/","text":"diffkeel","mark":"git-commit-horizontal"},
        "blurb": "A CLI that renders each environment’s config and diffs it before it deploys.",
        "columns": [
          {
            "title": "Product",
            "links": [
              ["/install","Install"],
              ["/docs/first-diff","Your first diff"],
              ["/changelog","Changelog"],
              ["/pricing","Pricing"]
            ]
          },
          {
            "title": "For agents",
            "links": [
              ["/docs/first-diff","The agent prompt"],
              ["/pricing","The Team API"],
              ["/records.zip","Site records (.zip)"]
            ]
          },
          {"title":"Diffkeel","links":[["/contact","Contact"]]}
        ],
        "note": [
          "Diffkeel is a worked example on mdxui.dev, not a customer.",
          "Rendered by @mdxui/site. Forms here do not send."
        ]
      }
    }
  ]
}
