Koder Service Port Registry

Living document. Single source of truth for the well-known ports Koder services bind to. Consumed today by Koder Jet's cross-container-drift doctor probe (jet#135); future tools should read from this file rather than hard-coding.

This registry maps port → owning container + service for every Koder service that runs as part of the Koder Stack on s.khost1 (post-cutover topology, 2026-05-05).

Why this exists

The kjet doctor cross-container-drift probe (shipped in v1.40.0) needs to answer "if a vhost in jet's sites.toml proxies to localhost:PORT, which container should it actually be pointing at?".

That question requires a port-to-container map. The first version hard-coded the map inline in infra/net/jet/internal/doctor/probes/cross_container_drift.go. This document promotes that map to a single source of truth so:

  • Future doctor enhancements (and other tools) can read it

    programmatically.

  • The koder-jet binary doesn't need a release just because a new

    service comes online.

  • Operators can grep one file to answer "what runs on port N?".

Schema

# Source format (TOML, machine-readable):
[port.<NUMBER>]
container = "<container-name>"
service   = "<short description>"
protocol  = "tcp" | "udp"  # default tcp

[container.<NAME>]
ip          = "10.0.1.X"
description = "<what this container is for>"

The koder-jet drift detector currently reads its own static fallback when the file is absent or unparseable. A future jet release will read this file directly when present (TODO: jet#136 follow-up).

Active port assignments (s.khost1, 2026-05-05)

Port Protocol Container Service
80 tcp jet HTTP redirect → HTTPS
443 tcp+udp jet TLS termination + HTTP/3
3000 tcp flow koder-flow (Gitea-compatible forge)
3080 tcp kortex koder-kortex
5432 tcp kdb PostgreSQL 18.3 (17 DBs)
7700 tcp kortex koder-kortex / console
7779 tcp aivoice koder-ai-voice
7781 tcp wired koder-wired admin
7800 tcp aigateway ai-gateway `/v1