{
  "id": "grip",
  "name": "Grip",
  "homepage": "https://github.com/joeyespo/grip",
  "description": "Grip is a command-line server application written in Python that uses the GitHub markdown API to render a local readme file.",
  "executables": [
    "grip"
  ],
  "dotfiles": {
    "paths": [],
    "secret": [
      "~/.grip/settings.py"
    ]
  },
  "commands": {
    "format": 1,
    "label": "Preview or export Markdown",
    "description": "Serve a Markdown file or README as GitHub-rendered HTML, or export it to a file. GitHub credentials, API URL and user-content rendering options are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": false,
      "short_bundles": false
    },
    "source": [
      {
        "id": "help",
        "kind": "help",
        "url": "https://github.com/joeyespo/grip/blob/master/grip/command.py",
        "revision": "master 2026-10-27",
        "evidence": "Usage:\n  grip [options] [<path>] [<address>]\n\nWhere:\n  <path> is a file to render or a directory containing README.md (- for stdin)\n  <address> is what to listen on, of the form <host>[:<port>], or just <port>\n\nOptions:\n  --export          Exports to <path>.html or README.md instead of\n                    serving, optionally using [<address>] as the out\n                    file (- for stdout).\n  --no-inline       Link to styles instead inlining when using --export.\n  -b --browser      Open a tab in the browser after the server starts.\n  --title=<title>   Manually sets the page's title.\n                    The default is the filename.\n  --norefresh       Do not automatically refresh the Readme content when\n                    the file changes.\n  --quiet           Do not print to the terminal.\n  --theme=<theme>   Theme to view markdown file (light mode or dark mode).\n                    Valid options (\"light\", \"dark\"). Default: \"light\"\n  --wide            Renders wide, i.e. when the side nav is collapsed.\n"
      }
    ],
    "field": [
      {
        "id": "path",
        "label": "Markdown file or directory",
        "description": "File to render, or a directory containing README.md. Leave empty for the current directory.",
        "type": "path",
        "position": 0,
        "path": {
          "kind": "any",
          "role": "input",
          "must_exist": true
        },
        "sources": [
          "help"
        ]
      },
      {
        "id": "address",
        "label": "Port or host:port (or output file with export)",
        "description": "Listen address such as 6419 or localhost:8080. With Export it is the output file instead.",
        "type": "string",
        "position": 1,
        "sources": [
          "help"
        ]
      },
      {
        "id": "browser",
        "label": "Open in browser",
        "type": "boolean",
        "option": [
          "--browser",
          "-b"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "export",
        "label": "Export HTML instead of serving",
        "type": "boolean",
        "option": [
          "--export"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "no_inline",
        "label": "Link styles instead of inlining",
        "description": "Only meaningful together with Export.",
        "type": "boolean",
        "option": [
          "--no-inline"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "theme",
        "label": "Theme",
        "type": "enum",
        "option": [
          "--theme"
        ],
        "choices": [
          {
            "value": "light",
            "label": "Light"
          },
          {
            "value": "dark",
            "label": "Dark"
          }
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "title",
        "label": "Page title",
        "type": "string",
        "option": [
          "--title"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "norefresh",
        "label": "Disable auto-refresh",
        "type": "boolean",
        "option": [
          "--norefresh"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "wide",
        "label": "Wide layout",
        "type": "boolean",
        "option": [
          "--wide"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "quiet",
        "label": "Quiet",
        "type": "boolean",
        "option": [
          "--quiet"
        ],
        "sources": [
          "help"
        ]
      }
    ],
    "task": [
      {
        "id": "preview",
        "label": "Preview in browser",
        "set": {
          "browser": [
            true
          ]
        },
        "fields": [
          "path",
          "address",
          "browser",
          "theme",
          "norefresh"
        ],
        "required": []
      },
      {
        "id": "export",
        "label": "Export to HTML",
        "set": {
          "export": [
            true
          ]
        },
        "lock": [
          "export"
        ],
        "fields": [
          "path",
          "address",
          "export",
          "no_inline",
          "theme",
          "title"
        ],
        "required": [
          "path"
        ]
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "path",
          "address",
          "browser",
          "export",
          "theme"
        ]
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "fields": [
          "no_inline",
          "title",
          "norefresh",
          "wide",
          "quiet"
        ]
      }
    ]
  }
}
