koment

Keep the why next to your code.

Comments narrate what the code already says, then drift until they lie. koment stores the reasoning outside the source, anchored to the exact lines it explains — and fails a check the moment it stops matching.

before — a comment nobody re-read
// retry 3 times because the API is flaky
for attempt := range 5 {
after — rationale that has to stay true
for attempt := range 5 {

  gotcha  retry.go:12  ok
  Five attempts, not three: the upstream rate limiter
  returns 429 for up to four seconds and the fourth
  retry is the first that can succeed.

Edit the loop and the annotation reports drifted instead of quietly misleading the next reader.

Git is the record

Annotations are YAML in your repository. No database, no service to keep alive, no account. They review like code because they are.

Checked, not trusted

koment check exits non-zero when an anchor no longer resolves. Stale reasoning fails CI instead of misleading someone.

Humans and agents alike

A CLI, an MCP server, a language server and an editor extension all read the same records, so an agent and a person see the same thing.