{
  "port": 8889,
  "protocol": "tcp",
  "service": "Jupyter (second instance), HTTP alternate",
  "oneLiner": "Where the second Jupyter server lands when 8888 is already taken.",
  "whatItIs": "Jupyter servers try their configured port and then walk upward to the next free one, so a machine already running a notebook on 8888 puts the next on 8889. The same happens with any tool that retries the next port. IANA registers 8889 as ddi-tcp-2 (Desktop Data), which is not something you will encounter. Treat it exactly as you would 8888: identify the process, and assume a notebook until proven otherwise.",
  "exposure": {
    "verdict": "never",
    "note": "Same reasoning as 8888 — if this is a notebook server it is arbitrary code execution for anyone who can reach it and get past the token."
  },
  "checkCommand": "curl -sI http://127.0.0.1:8889/",
  "links": [
    {
      "title": "Jupyter Notebook docs — running the notebook",
      "url": "https://jupyter-notebook.readthedocs.io/en/stable/notebook.html",
      "kind": "official-docs"
    },
    {
      "title": "IANA Service Name and Transport Protocol Port Number Registry — 8889",
      "url": "https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=8889",
      "kind": "iana"
    }
  ],
  "ianaName": "ddi-tcp-2"
}
