{
  "description": "Third-party tools every box runs. `tools` live in their own git repos and are pinned by `ref`; `vendor` ship as a release artifact and are pinned by `version`. overdeck declares the pin and never carries a copy of the code. Bump the pin here to roll the fleet.",
  "root": "~/.dev-tools",
  "hook_paths": {
    "description": "Hook commands in modules/workstation/claude/settings.json name workstation locations that do not exist on a box. Convergence rewrites these prefixes into their box-side location while staging the payload; the rewritten command is what every box runs. `{claude_home}` is the box's ~/.claude, `{devtools_root}` is `root` above. Every other absolute path a hook command names must live under ~/.claude and ship in the payload, or staging fails.",
    "rewrites": [
      { "from": "/usr/bin/bun", "to": "{claude_home}/bin/bun" },
      { "from": "~/Projects/slopgate", "to": "{devtools_root}/slopgate" }
    ]
  },
  "tools": [
    {
      "name": "fewtok",
      "repo": "https://github.com/alexcodeplace/fewtok.git",
      "ref": "ed90c45094cb10ebeaf7b2a79cbf942f47b37eb1",
      "install": "bun install --frozen-lockfile && bun run build",
      "bins": {
        "ft": "bin/fewtok",
        "fewtok": "bin/fewtok",
        "cld": "bin/cld"
      }
    },
    {
      "name": "slopgate",
      "repo": "https://github.com/alexcodeplace/slopgate.git",
      "ref": "868de369665bfa9632d613781cc8d3b85a57403e",
      "install": "cargo build --release --locked",
      "bins": {
        "slopgate": "bin/slopgate"
      }
    },
    {
      "name": "quietcontext",
      "repo": "https://github.com/alexcodeplace/quietcontext.git",
      "ref": "81b1d436966c7d5ac4745a6b1e41e174ff721c46",
      "dest": "~/.claude/plugins/sources/quietmode",
      "install": "bun install --frozen-lockfile",
      "bins": {}
    }
  ],
  "vendor": [
    {
      "name": "cursor-agent",
      "kind": "tarball",
      "version": "2026.08.04-aaa8809",
      "version_cmd": "cursor-agent --version",
      "url": "https://downloads.cursor.com/lab/{version}/linux/x64/agent-cli-package.tar.gz",
      "dest": "~/.local/share/cursor-agent/versions/{version}",
      "bins": { "cursor-agent": "{dest}/cursor-agent" }
    },
    {
      "name": "codex",
      "kind": "mise",
      "version": "0.146.0",
      "version_cmd": "codex --version",
      "tool": "npm:@openai/codex",
      "bins": { "codex": "~/.local/share/mise/shims/codex" }
    },
    {
      "name": "pi",
      "kind": "mise",
      "version": "0.80.3",
      "version_cmd": "pi-agent --version",
      "tool": "npm:@earendil-works/pi-coding-agent",
      "dest": "~/.local/share/mise/installs/npm-earendil-works-pi-coding-agent/{version}",
      "bins": { "pi-agent": "{dest}/bin/pi" }
    },
    {
      "name": "typescript",
      "kind": "mise",
      "version": "5.9.3",
      "version_cmd": "tsc --version",
      "tool": "npm:typescript",
      "bins": { "tsc": "~/.local/share/mise/shims/tsc" }
    },
    {
      "name": "vitest",
      "kind": "mise",
      "version": "4.1.10",
      "version_cmd": "vitest --version",
      "tool": "npm:vitest",
      "bins": { "vitest": "~/.local/share/mise/shims/vitest" }
    }
  ],
  "forbidden": {
    "description": "Hand-installed binaries that predate this declaration. Nothing rebuilds them, they resolve to paths that do not exist on a box, and they are the reason the fleet was not identical.",
    "paths": [
      "~/.local/bin/cdx",
      "~/.local/bin/overdeck-watchdog"
    ]
  }
}
