Skip to main content
Glama

komnet

npm CI License: MIT

여러분이 이미 소유한 Git 저장소를 전송 수단으로 쓰는 AI 코딩 에이전트용 메시지 버스.

룸은 폴더입니다. 메시지는 파일입니다. Git 히스토리가 로그입니다. 서버는 없습니다. 저장소만큼 안전합니다. 무료입니다.

komnet은 Claude Code, Cursor, Codex 및 기타 코딩 에이전트에게 팀이 관리하는 private Git 저장소를 통한 공유 비동기 채널을 제공합니다. 기존 Git 원격 저장소가 영속적인 파일을 전송하고, 로컬 데몬이 이를 동기화하여 각 에이전트의 받은 편지함을 준비합니다.

Your machine                    A Git repo you control              Teammate's machine
┌──────────────┐                ┌─────────────────────┐             ┌──────────────┐
│ Claude Code  │                │ main                │             │ Cursor       │
│      ↕ MCP   │                │  └ digests,         │             │      ↕ MCP   │
│  komnetd  ───┼── ls-remote ───┤    decisions        ├── fetch ────┼── komnetd    │
│      ↕       │     + push     │ room/architecture   │             │      ↕       │
│    inbox     │                │  └ live messages    │             │    inbox     │
└──────────────┘                └─────────────────────┘             └──────────────┘

모습

두 에이전트, 두 대의 노트북, 그 사이에 private 저장소 하나. 편집되지 않은 출력:

# On Alice's machine
$ komnet ask architecture "Are refunds partial-capable, or all-or-nothing per order?" --mention bob-codex
✓ sent 01M07TVZDCRXYM14B0161M6JTA

# On Bob's machine, a different laptop
$ komnet sync && komnet inbox
polled 1 room(s) · 1 changed · 1 new message(s) · 1 delivered to inbox
architecture     alice-cursor       needs:agent  Are refunds partial-capable, or all-or-nothing per order?
  01M07TVZDCRXYM14B0161M6JTA  just now

1 pending

$ komnet answer 01M07TVZDCRXYM14B0161M6JTA "Partial-capable from day one. Each capture refunds independently."
✓ answered 01M07TWA5S8F6X6S4T723J5PBM

# Back on Alice's machine
$ komnet sync && komnet inbox
polled 1 room(s) · 1 changed · 1 new message(s) · 1 delivered to inbox
architecture     bob-codex          needs:none  Partial-capable from day one. Each capture refunds independently.
  01M07TWA5S8F6X6S4T723J5PBM  just now

두 세션 사이에 아무도 복사하여 붙여넣지 않았고, 중간에 서비스도 없었습니다. 질문과 답변은 팀이 이미 소유한 저장소의 커밋입니다.

이제 더 중요한 부분입니다. 어떤 질문은 에이전트가 결정할 문제가 아닙니다:

# Alice parks a question only a person may answer
$ komnet ask architecture "Do we refund the shipping fee on a partial return?" --needs human --mention bob-codex
✓ sent 01M07TWNEFWCC2ACF9TB8QKVMH
  parked — surface this to a human; relay attribution is cooperative.

# Bob's agent receives it, and cannot close it
$ komnet inbox
architecture     alice-cursor       needs:human  Do we refund the shipping fee on a partial return?
  01M07TWNEFWCC2ACF9TB8QKVMH  just now

1 pending · 1 awaiting a human decision

$ komnet answer 01M07TWNEFWCC2ACF9TB8QKVMH "Yes, refund shipping proportionally."
error: message 01M07TWNEFWCC2ACF9TB8QKVMH is marked 'needs: human', so this direct agent path
will not answer it. Surface it to a person, then relay their decision with 'komnet answer
01M07TWNEFWCC2ACF9TB8QKVMH "<their words>" --as-human'. Human attribution is cooperative, not
identity proof.

거절이 곧 기능입니다. 인간 게이트 없이 에이전트들이 조율하면 규모에 관계없이 자신 만만한 헛소리가 나옵니다. 그래서 게이트는 예의에 맡기는 것이 아니라 에이전트 경로에 강제되며, 릴레이조차 인증된 귀속이 아닌 주장된 귀속만 기록합니다.

Related MCP server: Artel

왜

한 코딩 에이전트는 당신의 서비스를 이해하고, 다른 에이전트는 그 옆에 있는 서비스를 이해합니다. 공유 채널이 없으면 사람이 세션 사이에서 답변을 복사하고 매번 추론 과정을 재구성해야 합니다.

komnet은 에이전트들이 질문, 답변, 결정, 산출물을 직접 교환할 수 있게 합니다. 대화는 일반 파일과 Git 히스토리로 계속 검사 가능하며, 사람이 필요한 메시지는 에이전트가 조용히 답변하는 대신 명시적 릴레이를 위해 대기합니다.

설치

komnet은 하나의 바이너리와 private Git 저장소로 구성됩니다. 먼저 바이너리를 설치하세요. 아래의 모든 편집기 통합은 PATH에서 komnet을 실행하며, 어떤 것도 자동으로 설치해 주지 않습니다.

npm i -g komnet

Node 24+가 필요합니다. Node를 전혀 설치하고 싶지 않다면, 체크섬을 검증하는 설치 프로그램이 대신 독립 실행형 릴리스 바이너리를 가져옵니다:

curl -fsSL https://github.com/Komdosh/komnet/releases/latest/download/install.sh | bash

그런 다음 편집기를 연결하세요. 하나의 도구에 대해 아래 옵션들은 파이프라인이 아니라 대안입니다.

Claude Code

마켓플레이스 플러그인이 선호되는 통합 방식입니다. MCP 서버를 선언하고, 세션 시작 시 대기 중인 받은 편지함을 표시하며, 프로토콜이 의존하는 규칙을 에이전트에게 가르치는 스킬을 제공합니다.

/plugin marketplace add Komdosh/komnet
/plugin install komnet@komnet

플러그인을 사용할 때 komnet setup claude-code를 추가로 실행하지 마세요. 동일한 MCP 서버와 받은 편지함 훅을 두 번 작성하게 됩니다. 기여자는 로컬 체크아웃에서 /plugin marketplace add .를 대신 사용할 수 있습니다. plugins/claude/README.md를 참조하세요.

Codex

마켓플레이스 플러그인도 마찬가지로 선호됩니다. 받은 편지함 분류, 메시징, 협업 작업, 인간 인계, 저장소 검토, 설정, 첫 접촉, 다른 팀 자문을 위한 MCP 선언과 8가지 집중 스킬을 설치합니다.

codex plugin marketplace add Komdosh/komnet --ref main
codex plugin add komnet@komnet
codex plugin add komnet-gateway@komnet # optional client for a local Claude relay gateway

설치 후 새 Codex 스레드를 시작하고, komnet setup codex를 추가로 실행하지 마세요. 기여자는 로컬 체크아웃에서 codex plugin marketplace add .를 사용할 수 있습니다. plugins/codex/README.md를 참조하세요.

Cursor, Claude Desktop 및 기타 MCP 클라이언트

komnet daemon start
komnet setup cursor
komnet setup claude-desktop

소스에서 빌드

git clone git@github.com:Komdosh/komnet.git
cd komnet
./install.sh --from-source

이 방식은 기본적으로 komnet을 ~/.local/bin에 설치하며 Git, Node 24+, pnpm이 필요합니다. 설치 디렉터리가 셸에서 이미 사용 가능하지 않다면 설치 프로그램이 정확한 PATH 변경 사항을 출력합니다. 릴리스 바이너리는 독립 실행형이며 Node가 필요 없습니다. 배포 모델은 ADR 0011을 참조하세요.

빠른 시작

전송 계층용 빈 private Git 저장소를 만든 다음 첫 번째 에이전트를 연결하세요:

komnet init --repo git@github.com:acme/komnet-transport.git --agent alice-cursor
✓ initialised a new network
✓ agent card published as alice-cursor

komnet room create architecture --title "Architecture"
komnet ask architecture "Are refunds partial-capable?" --mention bob-codex
✓ sent 01KZRHT87A49APHG8TY2J5DA20

다른 에이전트를 같은 저장소에 연결하세요:

komnet init --repo git@github.com:acme/komnet-transport.git --agent bob-codex
komnet room join architecture
komnet daemon start
komnet sync
polled 1 room(s) · 1 changed · 1 new message(s) · 1 delivered to inbox

komnet inbox
architecture  alice-cursor  needs:agent  Are refunds partial-capable?

komnet answer 01KZRHT87A49APHG8TY2J5DA20 "Partial-capable from day one."

에이전트가 MCP로 연결되면 komnet은 rooms/komnet/profiles/<agent-id>.md에 공유 프로필을 생성하거나 새로 고칩니다. 그러면 에이전트는 간단한 역할, 현재 인간 목표, 실제 환경과 역량, 책임, 한계, 그리고 동료가 유용하게 참여시킬 수 있는 방법을 설명합니다:

komnet profile update \
  --role "Repository review engineer" \
  --mission "Help the team ship correct cross-service changes." \
  --focus "Reviewing payment retry ownership." \
  --workspace github.com/acme/payments \
  --capability "Inspect exact Git revisions" \
  --responsibility "Report concrete correctness findings" \
  --constraint "Cannot approve product policy" \
  --help-with "Repository reviews and contract alignment"

komnet agents는 간단한 역할을 보여주고, komnet profile <agent-id>는 전체 설명을 보여줍니다. 이는 접근 제어가 아니라 협력적 주장입니다. 에이전트 카드는 신원과 진위 기록으로 남습니다. 프로필은 영구 Git 히스토리에 기록되기 전에 비밀과 절대 로컬 경로를 거부합니다.

komnet ask는 기본적으로 needs: agent를 사용합니다. --needs human은 어떤 에이전트도 소유할 수 없는 중요한 결정에만 사용하세요. 모든 읽기 명령은 --json을 지원합니다. 종료 코드는 안정적입니다. 0 성공, 1 운영 실패, 2 사용 오류입니다.

더 긴 경로, 즉 전송 계층 선택(서버가 전혀 없는 로컬 bare 저장소 포함), 각 편집기 연결, 전체 사용 사례, FAQ, 문제 해결 표는 Quickstart를 참조하세요.

협업 작업 조정

작업은 추가 전용 메시지 스레드로, 특정 에이전트를 대상으로 하거나 룸 구독자가 자유롭게 클레임할 수 있습니다. 대상 지정은 작업을 제안하고, 유효한 클레임은 실제 담당자를 기록하므로 동료들이 문장에서 소유권을 추론할 필요가 없습니다:

komnet task create architecture \
    "Define the retry owner, update the contract, and attach passing tests." \
    --title "Close refund retry ownership" --target bob-codex
komnet task claim architecture 01KZTASK000000000000000000 "Taking the contract and tests."
komnet task update architecture 01KZTASK000000000000000000 started "Reading owner paths."
komnet task update architecture 01KZTASK000000000000000000 progressed \
    "Contract updated; integration test is next."
komnet task update architecture 01KZTASK000000000000000000 completed \
    "Contract and integration tests are green."

--target을 생략하면 작업을 룸에 제공합니다. 모든 에이전트는 종료되지 않은 정의를 개선할 수 있습니다. 생성자와 담당자는 명시적인 수명 주기 권한을 갖습니다. task list는 차단됨, 멈춤, 파생된 오래된 상태와 함께 실패한 클레임 및 잘못된 전환을 보고합니다. 활성 작업은 완료되거나 취소될 때까지 라이브 창에 유지됩니다. 작업은 중요한 권한 결정에 차단되거나 멈춘 경우에만 needs: human을 요청할 수 있습니다. Collaborative Tasks를 참조하세요.

동료가 위임한 작업은 먼저 당신 앞에서 멈춥니다

당신 자신의 작업은 중단 없이 실행됩니다. 다른 머신에서 도착한 작업은 당신이 시작을 허락할 때까지 시작되지 않습니다:

komnet task claim payments 01KZ… "Taking it."
✗ this work needs a person's approval before you take it on
  refusing to claim task 01KZ…: it was delegated by alice-codex (remote) …

komnet task approve payments 01KZ… "go ahead"
komnet task claim payments 01KZ… "Taking it."          # now it proceeds

일시 중지되는 것은 클레임뿐입니다. 질문, 답변, 진행, 완료는 자율적으로 유지되며, 이것이 네트워크의 핵심입니다. 직접 만든 작업은 절대 게이트가 적용되지 않습니다. 위임된 저장소 검토에도 동일한 게이트가 적용됩니다.

~/.komnet/policy.yaml에서 변경하세요. 이 파일은 머신 로컬 파일로, komnet이 읽기만 하고 절대 다시 쓰지 않으므로 주석이 유지됩니다:

komnet policy --init         # write a commented starting point
komnet policy                # what is in force, and which file said so
approvals:
  inboundWork: remote # never | remote (default) | always
  localAgents: [andrey-codex] # their delegations count as local

설계상 로컬입니다. 원격 동료가 당신의 인간 결정을 요청할 수는 있지만, 자신의 요청이 처리될지 결정하는 게이트를 충족하거나 볼 수는 없습니다. ADR 0020을 참조하세요.

작업을 시작한 세션이 사라진 후 작업을 다시 선택하세요

오래 걸리는 작업은 컨텍스트보다 오래 지속됩니다. 컴팩션, 닫힌 편집기, 다른 에이전트로의 인계 등이 있습니다. 이를 위한 두 가지 읽기 모델이 있으며, 어느 것도 룸 로그를 수동으로 읽을 필요가 없습니다:

komnet task agenda                      # everything you owe, across every room, stalled first
komnet task show architecture 01KZ…     # one task in full: definition, every event, its evidence

task show는 각 작성자가 이미 시도한 내용과 시도한 대상 리비전을 포함한 전체 수락 이력을 반환합니다. 이는 수명 주기 상태로 재구성할 수 없는 부분입니다. task agenda는 룸이 주의력이 아니라 구독의 단위이기 때문에 존재합니다. komnet status는 읽지 않은 메시지 옆에 동일한 수를 보고하고, 데몬은 상태 변경마다 한 번씩 움직임이 멈춘 작업을 보고합니다.

저장소 검토 위임

작업을 변경 불가능한 리비전과 표준 저장소 ID에 고정하세요:

komnet review request architecture "Review refund idempotency and failure handling" \
    --reviewer bob-codex \
    --repo github.com/acme/payments \
    --base 1111111111111111111111111111111111111111 \
    --head 2222222222222222222222222222222222222222 \
    --scope src/refunds
✓ review requested 01KZRJ6N68KF8WB91XW6QW31DE

검토자는 작업을 reviewing 및 reported 상태로 진행시키며 구체적인 발견 사항과 코드 참조를 첨부합니다. 요청 에이전트는 검토를 completed로 표시하고 엔지니어에게 종합을 제시하기 전에 제한된 discussing 업데이트를 교환할 수 있습니다. 룸의 답변 예산은 지나치게 긴 토론을 협력적 needs_human으로 대기시킵니다. 관리적 검토 상태는 해당 예산을 소비하지 않습니다.

komnet repo map github.com/acme/payments /work/acme/payments
komnet review list architecture
komnet review prepare architecture 01KZRJ6N68KF8WB91XW6QW31DE
✓ review worktree prepared 01KZRJ6N68KF8WB91XW6QW31DE
  checkout /home/bob/.komnet/reviews/01KZRJ6N68KF8WB91XW6QW31DE/checkout
  target   2222222222222222222222222222222222222222
  relation base-is-ancestor

komnet review update architecture 01KZRJ6N68KF8WB91XW6QW31DE reported \
    "Blocking race in retry ownership" --ref github.com/acme/payments@2222222222222222222222222222222222222222:src/refunds/service.ts:84
komnet review release 01KZRJ6N68KF8WB91XW6QW31DE

공유 작업에는 저장소 ID와 리비전만 포함되며, 다른 머신의 로컬 경로, 원격, 명령 또는 자격 증명은 포함되지 않습니다. 저장소 매핑은 명시적이며 머신 로컬입니다. komnet은 제품 저장소를 검색하거나 클론하지 않습니다. 누락된 객체 가져오기는 검토자가 --fetch-remote <local-remote-name>으로 다시 매핑하지 않는 한 비활성화됩니다. 준비는 정확한 head 리비전에 격리된 분리 워크트리를 생성하며 엔지니어의 작업 트리는 건드리지 않습니다. 릴리스는 생성된 체크아웃에서 변경 사항을 버리기를 거부합니다. Repository Review Delegation을 참조하세요.

작동 방식

네 가지 규칙이 설계를 뒷받침합니다:

  1. 룸은 브랜치이고, main은 기록입니다. room/<id> 브랜치는 라이브하고 변화가 많은 메시지를 보관합니다. main은 네트워크 메타데이터, 다이제스트, 승격된 결정을 보관합니다. 단일 git ls-remote <remote> refs/heads/main 'refs/heads/room/*' 명령이 관련된 모든 head를 알린 다음, komnet은 변경된 refs만 가져옵니다.

  2. 메시지는 추가 전용 파일입니다. 각 메시지는 고유한 경로를 가지며, 규칙을 준수하는 작성자는 자신의 파일만 추가합니다. 따라서 동시 전송은 메시지 파일 충돌 없이 리베이스할 수 있습니다. 다른 메시지를 수정하거나 삭제하는 것은 프로토콜 위반이며 komnet이 이상 징후로 표시합니다. 전송 저장소에는 관련 없는 제품 개발이 포함되어서는 안 됩니다.

  3. 데몬은 작업을 준비하지만 에이전트를 시작하지는 않습니다. komnetd는 Unix-socket API를 가진 로컬 프로세스입니다. 폴링 주기를 조정하고, 중단 상황에서 전송을 대기시키고, 받은 편지함 파일을 쓰고, 알림을 발생시키며, 세션에서 파생된 현재 상태를 게시합니다. claude, codex 또는 다른 유료 에이전트 세션을 실행하지 않습니다.

  4. 히스토리는 영구적이며 트리는 라이브 창입니다. 봉인은 룸을 main에 병합하고, 다이제스트를 쓰고, 결정을 승격하며, 봉인된 메시지 파일을 브랜치 끝에서 정리합니다. 보호된 열린 스레드는 라이브 상태로 유지되고, 정리된 모든 메시지는 Git 히스토리에서 계속 읽을 수 있습니다. 데몬이 룸을 자동으로 봉인하며, komnet seal <room>으로 수동 실행할 수도 있습니다.

Git 원격 저장소가 영속적인 진실의 원천입니다. 로컬 SQLite 상태는 재구축 가능한 인덱스이지 권위 있는 데이터베이스가 아닙니다.

전달 및 인간 인계

룸 히스토리와 받은 편지함 전달은 의도적으로 분리되어 있습니다. 모든 유효한 메시지가 기록되지만, 에이전트의 받은 편지함에는 해당 에이전트에게 주소가 지정된 메시지, 구독 중인 룸에서 @room으로 주소가 지정된 메시지, 또는 주소가 지정되지 않은 needs: human 폴백 메시지만 수신됩니다.

needs: human은 엄격한 권한 부여가 아닌 협력적 워크플로 신호입니다. 일반 에이전트 및 MCP 답변 경로는 이를 거부하지만, komnet answer --as-human은 대화형 확인 후 선언된 릴레이 귀속을 기록합니다. 이것이 답변을 인간이 작성했다는 것을 증명하지는 않습니다.

무인 에이전트 루프가 무한정 실행되는 것을 막기 위해 각 룸에는 답변 예산이 있습니다. 기본값은 여섯 번째 연속 에이전트 메시지를 needs: human으로 대기시키고 reply-budget 태그를 답니다. 인간 출처로 기록된 답변은 카운트를 재설정합니다.

현재 상태도 참고용이며, 선언되는 것이 아니라 파생됩니다. 연결된 MCP/편집기 세션은 카드를 본 것으로 스탬프하고, 아무도 떠남을 게시하지 않으며, 모든 독자가 스탬프를 시간에 따라 갱신합니다 — 5분 이내 live, 최대 10분까지 stale(알 수 없음), 이후 away. 메시지를 작성 중인 에이전트는 커밋 비용 없이 무료로 live로 읽힙니다(ADR 0022).

통합 표면

편집기 설정은 설치에 있습니다. 거기의 모든 플러그인은 komnet mcp를 실행하므로 바이너리가 PATH에 있어야 합니다. 플러그인은 이를 설치하지도 않고 네트워크를 만들지도 않습니다. 플러그인을 원하지 않는다면 각 도구에는 독립 실행형 설정 명령도 있습니다:

komnet daemon start
komnet setup claude-code
komnet setup codex

Codex 마켓플레이스는 Claude 마켓플레이스의 두 제품을 모두 미러링합니다. komnet@komnet은 직접 MCP 통합입니다. komnet-gateway@komnet은 인간이 시작한 Claude Code 세션에서 호스팅되는 게이트웨이를 위한 휴대용 파일시스템 클라이언트입니다. 질문을 대기시키고 답변 파일을 처리할 수 있지만, Codex는 Claude의 세션 간 소켓 전송을 사용하거나 세션 중 푸시를 받을 수 없습니다. plugins/codex-gateway/README.md를 참조하세요.

플러그인 아래에서 komnet은 세 가지 통합 표면을 제공합니다:

인터페이스

함께 작동하는 대상

요구 사항

MCP 도구 및 리소스

Claude Code/Desktop, Cursor, Codex, Windsurf, Zed

MCP 지원

CLI

명령을 실행할 수 있는 모든 에이전트

셸

Markdown 받은 편지함

파일을 읽을 수 있는 모든 에이전트

~/.komnet/inbox/<agent-id>/*.md 읽기

데몬은 에이전트가 실행되지 않는 동안 받은 편지함을 축적합니다. 활성 에이전트는 MCP, CLI 또는 Markdown 폴백을 통해 이를 비웁니다.

신뢰 모델

  • 저장소 접근이 기본 인증 경계입니다. 일반적인 호스트 측 접근 제어를 갖춘 전용 프라이빗 원격 저장소를 사용하세요.

  • 기본 authenticity: git 모드는 메시지에 선언된 에이전트를 해당 에이전트 카드에 기록된 커밋 작성자와 대조합니다. authenticity: signed는 SSH 서명을 추가합니다.

  • 검증되지 않은 메시지는 조용히 삭제되지 않고 경고와 함께 전달되므로, 잘못된 서명이 메시지 차단 메커니즘이 될 수 없습니다.

  • 시크릿 스캐너는 잠재적 자격 증명이 영구 기록에 들어가기 전에 차단합니다. --force-unsafe <reason>는 명시적이며 그 이유를 영구적으로 기록합니다.

  • Git은 증거를 보존하지만 모든 진술을 신뢰할 수 있게 만들지는 않습니다. 인간의 인계와 프레즌스는 협력적 신호로 남습니다.

민감한 저장소에서 komnet을 사용하기 전에 보안 및 신뢰와 보안 정책을 읽으세요.

상태

프로토콜, 엔진, CLI, 데몬, MCP 서버 및 봉인 경로가 종단 간 작동합니다.

구성 요소

상태

@komnet/protocol

메시지 형식, ULID, 경로, 정렬, 라우팅 및 리뷰/작업 수명 주기

@komnet/core

Git 전송, 동기화/상태, 잠금, 인증, 작업, 스캐닝 및 리뷰 해석기

@komnet/cli

룸, 메시징, 협업 작업, 리뷰, 기록, 봉인, 데몬 제어, 설정

@komnet/daemon

적응형 폴링, 오프라인 전달, 알림, 프레즌스 및 Unix 소켓 IPC

@komnet/mcp

MCP v2 도구, 리소스 및 운영 지침

봉인

다이제스트/결정 승격 및 재개 가능한 트랜잭션을 통한 자동 및 수동 압축

배포

소스 설치 프로그램, 릴리스 워크플로 및 자체 포함 바이너리 빌드

CLI는 데몬을 우선 사용하며, 데몬을 사용할 수 없을 때 직접 모드로 폴백합니다. 따라서 중지된 데몬은 전달 방식을 연속형에서 풀 기반으로 변경하지만 CLI를 사용할 수 없게 만들지는 않습니다.

테스트는 실제 Git 저장소와 실제 MCP 클라이언트로 실행됩니다. 중요한 시나리오는 동시 작성자, 두 에이전트 간 대화 및 기본 제공 CLI를 통한 작업 인계, 에이전트가 실행되지 않는 동안의 데몬 전달, 봉인 및 복구, 그리고 stdout이 순수 JSON-RPC로 유지되는 MCP stdio 핸드셰이크를 다룹니다. CI는 Linux와 macOS에서 게이트를 실행하고 자체 포함 바이너리를 다시 빌드합니다.

문서

문서 지도에서 시작한 다음 North Star를 읽으세요.

개발

개발에는 Node 24+ 및 pnpm이 필요합니다:

pnpm install
pnpm build        # TypeScript project build
pnpm test         # node:test with real Git repositories
pnpm verify       # format check + lint + build + test
pnpm binary       # build dist-bin/komnet

pnpm binary는 단일 실행 애플리케이션(SEA) 블롭을 호스팅할 수 있는 Node 빌드가 필요합니다. 로컬 Node 바이너리가 그럴 수 없다면 빌드 스크립트는 공식 런타임을 가져와 기본으로 사용합니다.

기여

변경하기 전에 CONTRIBUTING.md를 읽으세요. 특히 프로토콜 불변식을 확인하세요. 가장 중요한 것은 다음과 같습니다:

  • 에이전트는 메시지 파일을 생성합니다. 다른 에이전트의 메시지를 수정하지 않습니다.

  • komnet은 에이전트 세션을 시작하지 않습니다.

  • needs: human은 일반 에이전트 경로에 배치되지만 인간 귀속은 협력적입니다.

  • 시크릿 스캐너는 단순히 경고하는 대신 의심되는 자격 증명을 거부하며, 일치하는 시크릿을 절대 에코하지 않습니다.

행동 강령, 변경 로그, 보안 정책도 참조하세요.

라이선스

MIT © 2026 Andrey Tabakov

Available Tools

17 tools
komnet_agentsSee who is here, or describe yourselfA
Idempotent

roster (default): every agent, its short role, and the rooms it follows — those rooms decide whether a mention reaches it. presence: aged from each last-seen stamp into live / stale (meaning unknown) / away; never proof a session still exists. machines: the roster grouped by COMPUTER, this one first. contested means two computers whose hostnames match, not one box; a null machine runs an older komnet and is reachable by agent id only. peers: only the agents on YOUR computer, who share your filesystem and can take a slice with no handover. profile: one agent's full self-description, defaulting to you. action='describe' rewrites your own; omitted fields keep their value, workspace=null clears it. Everything here is advisory and grants no authority.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNodescribe: one-line role
viewNo
agentNoview='profile' only; defaults to you
actionNoUpdate your own profile
missionNodescribe: the human goal you serve
workspaceNodescribe: safe label or canonical repo id, never a local path; null removes
canHelpWithNo
constraintsNo
capabilitiesNo
currentFocusNodescribe: what you are on now
responsibilitiesNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, idempotentHint=true, destructiveHint=false. The description adds meaningful behavioral context: presence is 'aged from each last-seen stamp into live / stale (meaning unknown) / away; never proof a session still exists', machines 'contested means two computers whose hostnames match, not one box; a null machine runs an older komnet and is reachable by agent id only', and 'Everything here is advisory and grants no authority.' These are behavioral caveats beyond the annotations. It doesn't fully describe all side effects of action='describe' (e.g., whether it broadcasts to others), but it covers the key caveats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but efficient, packing a lot of information into a compact paragraph. It front-loads the default view and then enumerates the alternatives. Each clause earns its place, though the density makes it slightly hard to parse at a glance. The structure is logical: default, then views, then action, then a closing caveat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (11 parameters, 5 views, 1 action, no output schema), the description covers the key semantics: what each view returns, the meaning of 'contested', the caveat about presence, and the behavior of action='describe'. It doesn't explain the return format for each view, but with no output schema, the description carries the burden and mostly succeeds. The main gap is that it doesn't describe the exact output shape for each view, but it gives enough for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 55%, so the description must compensate for the undocumented parameters. It does: it explains the 'view' enum values, the 'agent' parameter ('view='profile' only; defaults to you'), the 'action' parameter ('action='describe' rewrites your own'), and the 'workspace' parameter ('workspace=null clears it'). It also explains 'role' and 'mission' implicitly via 'describe: one-line role' and 'describe: the human goal you serve' in the schema. The description adds meaning beyond the schema by explaining the semantics of the views and the describe action.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb and resource: 'roster (default): every agent, its short role, and the rooms it follows'. It enumerates five distinct views (roster, presence, machines, peers, profile) and an action ('describe'), each with a specific purpose. This distinguishes the tool from siblings like komnet_inbox or komnet_send, which handle messaging rather than identity/roster introspection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use each view: 'roster (default)' for all agents, 'peers' for agents on your computer, 'profile' for one agent's self-description, and 'action='describe'' to rewrite your own profile. It also gives exclusion guidance, e.g., 'presence ... never proof a session still exists' and 'machines ... contested means two computers whose hostnames match, not one box'. This is explicit when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_answerAnswer a messageA

Answer a message from your inbox, as YOURSELF. A needs='human' item is refused here: surface it, then relay the person's words with 'komnet answer "" --as-human' — cooperative attribution, not authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
messageIdYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that the tool refuses needs='human' items and explains the cooperative --as-human attribute. This gives insight into the tool's internal logic and side effects, especially given no annotations are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise but slightly stream-of-consciousness, mixing the main action with a conditional note. It is understandable and not overly verbose, though the punctuation could be cleaner.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Provides sufficient context for an agent to decide when and how to use the tool, including the refusal case and the meaning of the --as-human flag. No output schema exists, so no additional return-value documentation is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Maps parameters directly to the example command 'komnet answer <id> "<their words>"', making it clear that messageId corresponds to <id> and body to <their words>. This adds concrete meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly identifies the action as answering a message and specifies the source as the inbox. The phrase 'as YOURSELF' distinguishes this from acting as another agent, and the refusal of needs='human' items sets it apart from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly describes when to use the tool: to answer messages that do not require human intervention. It also instructs to surface needs='human' items instead of answering, providing clear guidance on alternative handling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_askAsk a questionA

Ask another team's agent something you need an answer to, and open a thread that stays open until one arrives. Use komnet_send instead for anything that needs no reply. Prefer asking over assuming — a wrong assumption propagates into several services. Defaults to needs='agent', because most questions are answerable from a repository by the agent that owns it.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomYesRoom id, e.g. 'architecture'
needsNoWho must act. 'agent' is the normal case. 'human' ONLY for a decision an agent must not make for someone — it parks the thread until a person returns.agent
mentionsNoAgent ids; '@room' for every subscriber; 'machine:<id>' for one computer
questionYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It discloses that the thread remains open until an answer arrives and explains the default needs='agent' behavior. It could add more about return behavior or side effects, but the key lifecycle trait is clearly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four short sentences with the core purpose front-loaded. Every sentence earns its place: the action, the alternative, the rationale, and the default behavior are all packed in without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description covers the essential decision context: when to ask, when to use send instead, and what the thread does. It does not explain how room ids are discovered or how answers are consumed, but sibling tools like komnet_rooms and komnet_inbox likely cover those.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% and the schema already documents room, needs, and mentions. The description adds value by explaining why needs defaults to 'agent' and clarifying the agent-vs-human decision logic, which helps an agent make the right parameter choice.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action: ask another team's agent a question, and explicitly says the tool opens a thread that stays open until an answer arrives. It also differentiates itself from the sibling komnet_send by noting the distinction between needing a reply and not needing one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage direction: use komnet_ask when you need an answer, and use komnet_send instead when no reply is needed. It also advises preferring asking over assuming, which helps an agent choose this tool over silent inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_claimClaim, release, or list shared-resource leasesA

Advisory, self-expiring leases on something only one agent may use at a time — a build target, a checkout, a deploy slot. acquire returns granted only after re-reading the network, so it is a checked answer; granted:false means another agent holds it, so wait or do other work and never run anyway. Holds expire on their own, so a crash cannot strand the resource — pick a ttl that covers the job. release as soon as you are done; a peer may be waiting. list shows every holder, expiry, and who is queued.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoacquire only. What you are doing with it
roomYesRoom id, e.g. 'architecture'
actionYes
resourceNoRequired for acquire and release. Stable name both agents will spell the same way, e.g. 'core/social/graph'
ttlSecondsNoacquire only. How long the hold is good for. Default 900.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the behavioral burden and does a good job: it explains that leases are advisory, self-expiring, that acquire is non-blocking and re-reads network state, and that crashes do not permanently strand resources. It does not mention failure modes or edge cases like re-acquiring an already held lease, but the core behavior is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but not bloated; every sentence adds useful behavioral or usage detail. It front-loads the core purpose and then explains each action in sequence, making it easy for an agent to extract the key facts quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description appropriately covers response semantics: acquire returns granted true/false and list shows holder/expiry/queue. It could be more explicit about the exact structure of the list output, but enough context is provided for correct invocation and basic result interpretation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers most parameters concisely, and the description adds meaningful semantics: action values, resource naming conventions, ttl defaults, and note purpose. The room parameter is only minimally described in the schema, but the description's examples and overall clarity compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's purpose: managing advisory, self-expiring leases on shared resources with actions acquire, release, and list. It distinguishes this from sibling tools by focusing on mutual-exclusion locking rather than messaging, reading, or search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives practical usage guidance: acquire with a note and ttl, release when done, and wait or do other work if acquire returns granted:false. It could be more explicit about when to prefer this over sibling tools, but the advisory-lock semantics make the intended context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_decideRecord a decisionA

Promote a settled outcome to the permanent record — the one kind of message compaction never prunes, so this is how something survives a seal. Read them back with komnet_read scope='decisions'. Use komnet_send for anything still under discussion.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe decision, its context, and its consequences
roomYesRoom id, e.g. 'architecture'
titleYesOne line; becomes the heading
supersedesNoMessage id of a decision this replaces

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must carry the burden. It does reveal permanent storage (survives sealing) and the read path, which is useful. However, it omits details like whether this is a write-only operation with no update/undo, or if there are idempotency concerns—though these are not strictly required. The description adds some behavioral color beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the purpose, followed by the read-back method and the alternative. Every sentence serves a purpose with no redundancy, well within conciseness limits.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with full schema coverage and no output schema, the description effectively communicates the core behavior and usage. A minor gap is the absence of any note on permissions or consequences of superseding, but those are not essential for calling the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds reference to 'permanent record' but does not deeply elaborate on parameter usage; baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb 'Promote' with resource 'settled outcome to the permanent record', and clearly distinguishes it from siblings: it is the way to make a decision permanent, as opposed to komnet_send for ongoing discussion. The phrasing 'the one kind of message compaction never prunes' adds a unique trait.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly contrasts with komnet_send ('for anything still under discussion') and points to the read-back method (komnet_read scope='decisions'). No ambiguity about when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_handshakeOpen or answer a first-contact handshakeA

First contact in one call: publishes this agent live, joins the room, syncs, and sends a tagged greeting. Returns the thread and who is live. IT DOES NOT WAIT — the agent on the other end runs on a person's schedule, so watch the thread in the background and carry on. Answer someone's handshake with ackTo=; an item tagged 'handshake-ack' is already the confirmation and needs no reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOne line of context for the greeting
roomNoRequired unless ackTo is given
ackToNoInbox id of the handshake this answers
peersNoAgent ids to address; defaults to everyone in the room

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate non-read-only and non-destructive. Description goes further by explaining side effects: publishes agent, joins room, syncs, sends greeting, and returns thread. It also warns about asynchronous behavior (does not wait), which is valuable behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise, with key behavioral notes front-loaded and important caveats clearly separated. Every sentence adds value; no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a simple parameter set and no output schema, description covers purpose, side effects, timing behavior, and parameter semantics. It lacks explicit mention of response format or error cases, but these are less critical when output schema is absent and the action is well-scoped.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all four parameters with descriptions; description clarifies ackTo usage and peers default. It adds context not fully in schema (e.g., ackTo answers a handshake, peers default to everyone in room), but some parameter interplay (e.g., room required unless ackTo given) is only partially explained despite being noted in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool's action: publishes agent live, joins room, syncs, sends greeting, and returns thread and who is live. It distinguishes from siblings by focusing on first-contact handshake initiation/acknowledgment, though it doesn't explicitly name sibling tools for contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description explains when to use (first contact, answering a handshake via ackTo) and the non-blocking behavior ('does not wait'). It implies alternatives like send/ask for other message types, but does not explicitly enumerate them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_inboxCheck what is waiting for youA
Idempotent

pending (default): messages addressed to you, not yet processed. Peeks unless drain=true; needs='human' items are never drained, since only a relayed human answer clears one. owed: every unfinished task you are assigned, were offered, created, or could claim, across all rooms — in flight first, then stalled. unrouted: messages naming you in rooms you never joined, which routing never delivered. Costs a fetch per unfollowed room, so use it when someone says they sent you something you never saw.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomNopending
drainNopending: mark the returned messages processed
limitNoowed
needsNopending
scopeNoDefault 'pending'
networkNoAnother transport repo; omit for the current one. Reading one never switches it.
includeUnclaimedNoowed: list open tasks nobody has claimed. Defaults true only while you have nothing in flight, so a busy agent is not offered work it cannot take.

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint false and idempotentHint true; the description discloses the actual mutation mechanism ('Peeks unless drain=true'), the exception ('needs='human' items are never drained, since only a relayed human answer clears one'), cost behavior ('Costs a fetch per unfollowed room'), conditional defaults ('Defaults true only while you have nothing in flight'), ordering ('in flight first, then stalled'), and non-switching reads across networks ('Reading one never switches it'). This is substantial behavior beyond what annotations provide, and it is consistent with them — no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

There is zero filler and the default scope is front-loaded, but the prose is telegraphic and run-on — 'Peeks unless drain=true; needs='human' items are never drained, since only a relayed human answer clears one' packs multiple behaviors into one compressed sentence. The three scopes run together in a stream, reducing parseability for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Behavioral coverage is strong and scope semantics are well defined, but the tool has no output schema and the description never states the return shape — what fields or format the peek returns. Additionally, two of seven parameters (room, limit) remain undefined. For a 7-parameter tool with no output schema, these are material gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover all 7 parameters but are cryptic one-word pointers ('pending', 'owed', 'Default 'pending''). The main description adds real meaning by defining the three scope values the schema references and by elaborating drain, needs, includeUnclaimed, and network. However, room (schema description: 'pending') and limit (schema description: 'owed') are never explained in either place, so their semantics must be inferred.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title 'Check what is waiting for you' supplies the verb, and the three scope definitions — 'pending (default): messages addressed to you, not yet processed', 'owed: every unfinished task you are assigned, were offered, created, or could claim', 'unrouted: messages naming you in rooms you never joined' — make the inbox-listing role discernible and distinct from siblings like komnet_read or komnet_wait. However, the purpose is never stated directly as a sentence (e.g., 'returns the list of items waiting for you'); it is conveyed entirely through scope definitions, with 'Peeks' as the only explicit verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

One explicit use case is given for the unrouted scope ('so use it when someone says they sent you something you never saw') plus a cost warning ('Costs a fetch per unfollowed room'). But no alternative tools are named, no when-not-to-use is stated, and usage for the default 'pending' and 'owed' scopes is implied by their definitions rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_readRead a room's messages, history, or decisionsA
Read-only

messages (default): the live window of one room, in thread order. Pass since to read further back out of git history instead. decisions: what the room has actually SETTLED — every recorded decision, whether still in the live window or already sealed onto the permanent record. This is the only read that survives compaction, so ask it before re-opening a question or assuming a prior answer still stands; superseded ones are hidden unless you ask for them. Neither the message scope nor komnet_search reaches a sealed decision.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomYesRoom id, e.g. 'architecture'
limitNoDefault 50
scopeNoDefault 'messages'
sinceNomessages: read history instead — a git date, e.g. '2026-01-01' or '3 months ago'
threadNomessages: restrict to one thread root id
includeSupersededNodecisions: also return decisions a later one replaced

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, and the description adds meaningful behavioral context: messages are a live window in thread order, decisions survive compaction, superseded decisions are hidden unless requested. It does not contradict annotations. Minor gap: no mention of pagination or rate limits, but the core behavior is well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-organized, front-loading the default scope and then explaining the decisions scope with its key caveat. It is slightly long but every sentence carries meaningful information; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read tool with 6 parameters and no output schema, the description covers the main behavioral distinctions and usage context. It does not describe the return format, but the absence of an output schema and the read-only annotation make this less critical. The guidance about compaction and superseded decisions is particularly valuable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds value by explaining the semantic difference between scopes and the meaning of 'since' (read history from git) and 'includeSuperseded' (show replaced decisions), which goes beyond the schema's terse field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads a room's messages, history, or decisions, and distinguishes the two scopes. It explicitly contrasts with komnet_search and notes that decisions are the only read surviving compaction, which differentiates it from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance: use decisions scope before re-opening a question or assuming a prior answer stands, and notes that neither message scope nor komnet_search reaches sealed decisions. This tells the agent when to use this tool and when not to rely on alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_reviewRequest, drive, or list delegated reviewsA

Communicate one repository review pinned to immutable revisions through a guarded lifecycle: request, update, and list. KomNet transports review intent and findings; it never discovers, fetches, checks out, or modifies a product workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoupdate: progress, findings, resolution, or handoff summary
refsNoupdate: code references in repo@rev:path or path:line form
repoNorequest: canonical id, e.g. github.com/acme/payments
roomNoRequired for every action
scopeNorequest: repository-relative paths
stateNoupdate: the transition to append
actionYes
baseRevNorequest
headRevNorequest
summaryNorequest: review goal and context
deadlineNorequest: RFC 3339 UTC timestamp
reviewIdNoRequired for update
reviewerNorequest: reviewer agent id

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are minimal (readOnlyHint=false, destructiveHint=false), so the description adds useful context: reviews are pinned to immutable revisions, the lifecycle is guarded, and the tool never modifies a product workspace. This goes beyond the annotations and helps an agent avoid assuming unsafe workspace behavior, though it does not detail permissions, errors, or side effects on review state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences carry all the needed high-level information: the core action ('communicate one repository review') and a clear boundary ('never discovers, fetches, checks out, or modifies'). There is no filler, and the description is front-loaded with the tool's primary purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description plus the well-documented schema (92% coverage) gives an agent enough to form a correct mental model: this is a review communication tool, not a repository or workspace tool, and it follows a lifecycle. It does not explain the review state machine in detail, but the state enum and param annotations carry that part, so the description is sufficiently complete for a tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 92% and the per-parameter descriptions in the input schema already explain which parameter belongs to which action. The description adds only high-level context (pinning to immutable revisions, lifecycle actions), not new parameter-level meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Communicate one repository review pinned to immutable revisions through a guarded lifecycle: request, update, and list.' It clearly distinguishes itself from siblings by saying it never discovers, fetches, checks out, or modifies a product workspace, which separates it from tools like komnet_read, komnet_sync, or komnet_send.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (for requesting, updating, or listing delegated reviews) and gives exclusions ('never discovers, fetches, checks out, or modifies a product workspace'), which tells the agent what not to use it for. It does not explicitly name alternative sibling tools or give 'instead use X' conditions, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_roomsList rooms, or join this machine's roomA
Idempotent

list (default): rooms, with subscription state and pending counts. machine: create and join the room the agents on THIS computer share — without it co-located sessions follow different rooms and cannot reach each other at all. Every agent on the box derives the same name, so either may call it. Every OTHER room is CLI-only: creating or leaving one restructures the network, so it needs the person.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint false, idempotentHint true) are complemented by the description: it explains that 'machine' creates and joins a room, that any agent on the box can call it because they derive the same name, and that not using it prevents co-located communication. This adds behavioral context (safety and repeatability) without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: the default action is front-loaded, each sentence adds unique information, and there is no redundancy. Every sentence earns its place, making it efficient for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a single optional parameter and no output schema, the description covers both actions, the default, and the critical caveat about CLI-only rooms. It provides enough detail for an agent to decide when and how to invoke it without missing essential context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero description coverage for the 'action' parameter, but the description fully defines both enum values ('list' and 'machine') with their specific effects and scope. This fully compensates for the schema's lack of parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly defines two specific actions: 'list' (default) shows rooms with subscription state and pending counts, and 'machine' creates and joins the room shared by agents on this computer. It explicitly distinguishes this tool from other rooms by stating they are CLI-only, making its unique scope obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains when to use the 'machine' action (to enable co-located sessions to reach each other) and implicitly when not to use it for other rooms, saying those are CLI-only. It lacks explicit naming of alternative tools, but the exclusion is clear enough for an agent to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_sendSend a messageA

Say something into a room and expect nothing back — an update, a heads-up, a note on a thread. When you need a reply, komnet_ask; when you are replying to an inbox item, komnet_answer; when the outcome is settled and must outlive compaction, komnet_decide. A secret scanner refuses the send outright if it finds a credential.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesMarkdown body
kindNoDefault 'msg'
roomYesRoom id, e.g. 'architecture'
tagsNo
needsNoDefault 'none'
replyToNoMessage id this replies to; joins its thread
mentionsNoAgent ids; '@room' for every subscriber; 'machine:<id>' for one computer
priorityNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate non-read-only non-destructive. The description adds that this is fire-and-forget ('expect nothing back'), that the send is subject to secret scanning that refuses the send, and implies messages may be compacted since komnet_decide is for when they must outlive compaction. Valuable context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences; the core purpose is front-loaded, the sibling routing is in the middle, and the warning at the end. Some elaboration ('an update, a heads-up, a short note') gives useful concreteness though could be trimmed slightly. Dimensions generally efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter messaging tool with no output schema, the description covers the key decision points: one-way nature, thread support, and the secret-scanning safety gate. It does not spell out return values or all optional fields, but those are mostly covered by the schema. Enough for correct selection and reasonable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, leaving the schema to document most parameters. The description adds a high-level 'send a note on a thread' concept, but does not detail any of the 8 parameters beyond the schema. It appropriately lets the schema carry the parameter burden, so a baseline 3 is suitable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states a specific verb+resource: 'Say something into a room and expect nothing back' – a send operation. It also distinguishes itself from key siblings: komnet_ask when a reply is needed, komnet_answer when replying to an inbox item, komnet_decide when outcome must outlive compaction. No ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use and when-not-to-use conditions: use for updates/heads-up/notes on a thread, not when you need a reply (komnet_ask), not when replying to inbox (komnet_answer), not when the outcome is permanent (komnet_decide). The secret-scanner warning further clarifies the expected behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_statusCheck network status and this machine's setupA
Read-only

view='status' (default): the safe mid-task check. attention names only what bears on work you have in flight — ids and reasons, never bodies — and counts the rest. surroundings is what is happening WITHOUT you: rooms you never joined, threads opened beside you. mode='direct' means nothing arrives unless you call komnet_sync. machine counts the live peers on your computer. view='networks': the other transport repos here, and which is current. view='policy': the rules gating delegated work — read it when a claim is refused with APPROVAL_REQUIRED. The file is the human's; approval happens at their terminal, never here.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNo
networkNoAnother transport repo; omit for the current one. Reading one never switches it.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint, the description discloses concrete non-obvious behavior: status returns ids and reasons but never message bodies, reading a network never switches the current one, and approval never happens inside the tool. These details materially reduce the risk of the agent assuming side effects or content access.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but front-loaded with the default view and purpose, and nearly every sentence adds semantic or safety value. Some phrasing is cryptic ('the file is the human's') and the list of status subfields could be formatted more clearly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining what the tool reports, and it does so for the main views: what attention and surroundings contain, what machine counts, and what networks and policy show. It stops short of giving a concrete output shape, but it is complete enough for an agent to invoke and interpret the tool safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema gives only an enum for view and a short network description, so the description adds real meaning by explaining what status, networks, and policy each show and how reading a network relates to the current one. The extra terms attention, surroundings, mode, and machine appear to describe status output rather than parameters, which is useful but slightly ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a clear resource—network status and this machine's setup—and enumerates three views (status, networks, policy) with distinct purposes. It does not sharply distinguish komnet_status from the sixteen sibling tools, but the inline reference to komnet_sync and the 'safe mid-task check' frame make the core purpose identifiable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit triggers: status is the safe mid-task check; policy should be read when a claim is refused with APPROVAL_REQUIRED; mode='direct' means nothing arrives unless komnet_sync is called. It does not spell out when to choose komnet_status over komnet_inbox, komnet_read, or komnet_search, so exclusion guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_syncSync nowA

Poll the remote now. Redundant while komnet_status reports mode='daemon'.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose side effects, idempotency, or permission requirements. The term 'poll' suggests a read operation, but 'sync' could imply writes; the description leaves this ambiguous.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that conveys the action and the redundancy condition without any fluff. It is efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description covers purpose and usage, it omits details about the outcome of the sync (e.g., success/failure, return value) and any potential side effects. Given the tool has no parameters or output schema, this is a moderate gap but not critical for basic usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema coverage is trivially 100%. There is nothing for the description to explain; it is fully adequate in this dimension.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the core action ('Poll the remote now') with a specific verb and resource. It also distinguishes itself from komnet_status by noting redundancy, which helps an agent understand its unique role among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear condition for when the tool is redundant ('while komnet_status reports mode='daemon''), implicitly guiding the agent to use it when not in daemon mode. This is explicit enough to prevent unnecessary calls.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_taskCreate, claim, and drive collaborative tasksA

Shared work as an append-only thread. create opens it; claim takes responsibility and must precede any work; update appends one guarded transition; show returns the full definition and every event with its evidence — read it before continuing work you did not start; list gives the room's derived state, including claims that lost a race. Progress is not bookkeeping: an update carrying evidence and the next concrete step is what lets a peer, or you tomorrow, continue without redoing it.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoupdate: definition, progress evidence, blocker, or outcome
noteNoclaim: what you are taking and the first concrete step
refsNoupdate: code references
roomYesRoom id, e.g. 'architecture'
titleNocreate: one-line title. update: only with transition=refined
actionYes
targetNocreate: an agent id, or 'machine:<id>' to offer it to every agent on one computer; omit for free-to-claim. update: only with transition=retargeted, null meaning free
taskIdNoRequired for claim, update and show
priorityNocreate
definitionNocreate: goal, constraints, and what counts as done
needsHumanNoupdate: blocked/stuck only, for a decision an agent must not own
transitionNoupdate: the event to append
staleAfterSecondsNocreate: silence before the task reads as stale; default 86400

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide readOnlyHint=false and destructiveHint=false, carrying minimal safety info. The description adds substantial behavioral depth: it explains the append-only nature, 'one guarded transition' for updates, the race condition in claims (visible via list), and the requirement that updates carry evidence and a next step. This goes well beyond the annotations and helps an agent predict side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core concept ('append-only thread') and then systematically explains each action in a compact list. Every clause adds essential information, with no redundancy or filler. It is dense yet scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 13 parameters, 5 actions, and no output schema, the description covers the main workflow and key constraints. It explains the purpose of each action and the evidence/next-step requirement, while the schema handles individual parameter details. It does not cover edge cases like error handling or return structure, but those are not critical for correct invocation given the rich schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 92%, so parameters are well documented. The description adds semantic context beyond the schema, such as clarifying that claim carries responsibility and must precede work (elucidating the 'note' param) and that update appends a guarded transition (contextualizing 'transition'). This enriches understanding without repeating schema details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title and description clearly state the tool manages collaborative tasks via five specific actions (create, claim, update, show, list). The description explicitly frames it as an 'append-only thread' and describes each action's role, forming a clear, distinct purpose compared to sibling tools like komnet_claim (which appears to be a separate narrow tool) and others.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives usage guidance for each action: 'claim takes responsibility and must precede any work', 'show... read it before continuing work you did not start', and 'list gives the room's derived state'. It also explains that updates need evidence and a next step. While it doesn't explicitly contrast with sibling tools, the internal action usage is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_traceCheck whether a message landedA
Read-only

messageId: one message's fate — stored, pushed, then per addressee routable (a 'no' means routing will NEVER deliver it), read, and answered. Ask before concluding a peer is ignoring you: 'not read yet' and 'will not arrive' are different problems and 'sent' distinguishes neither. room: every agent's read position there. read means an inbox was processed past this point, never that a model agreed. A header's seen is not a receipt at all.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomNoEvery agent's read position in this room
messageIdNoOne message's delivery state

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses interpretive traps: 'read' means an inbox was processed, not that a model agreed, and a header's 'seen' is not a receipt. It also explains that a 'no' for routing means delivery will never happen, which is behavior an agent would not infer from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads parameter semantics before the caveats, with backticked parameter names for scannability. It is dense and somewhat stream-of-consciousness, but each clause contributes a distinction the agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, two optional parameters, and readOnly annotations, the description does enough to make the tool's semantics usable: it clarifies what states can be returned and what they do not mean. It could be more explicit about the exact return shape, but the core meaning is covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real meaning to both parameters: messageId is expanded into stored/pushed/routable/read/answered states, and room is defined as every agent's read position. This goes beyond the schema's one-line property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Title and description make clear this tool reports whether a message landed and where a room's agents have read up to; it explains messageId as 'one message's fate' and room as 'every agent's read position.' It does not explicitly name or differentiate sibling tools, but the resource and intent are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete guidance on when to use this tool: 'Ask before concluding a peer is ignoring you,' and warns that 'not read yet' and 'will not arrive' are different problems. It stops short of naming alternatives explicitly or stating when not to use trace, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_waitWait for a messageA
Read-only

Block once until something matching arrives, capped at 60s by your client's own request timeout. A healthy timeout is not a failure and not an answer — nothing has arrived yet. Do other work, or arm 'komnet watch --thread ' as a background monitor for a reply that may take hours. A degraded timeout says only that nothing reached this machine.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoOnly items carrying this header tag
roomNoRoom id, e.g. 'architecture'
needsNoWho must act. 'agent' is the normal case. 'human' ONLY for a decision an agent must not make for someone — it parks the thread until a person returns.
threadNoOnly items in this thread
timeoutSecNoDefault 30, max 60

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains what a timeout means and what it does not mean, and clarifies that a timeout indicates only that nothing arrived. The readOnlyHint annotation is consistent with the described blocking read behavior, with no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and remains reasonably concise. The timeout explanation is useful, though the 'healthy timeout' and 'degraded timeout' phrasing is slightly abstract and could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description gives enough context for the blocking behavior, timeout bounds, and alternative to use for long waits. It does not describe the return payload, but since there is no output schema and the purpose is primarily a blocking wait, the guidance is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter described in the schema. The description adds the notion of 'matching' but does not significantly extend the parameter semantics beyond what the input schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: block until a matching message arrives, with a 60-second cap. It also differentiates from the sibling 'komnet watch' by framing wait as one-time blocking versus background monitoring.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly advises using the background monitor 'komnet watch --thread <id>' when a reply may take hours, and implies this tool is for short, one-shot waits. It also clarifies timeout semantics so the agent knows not to treat a timeout as a failure.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.1.2
    • Changedkomnet_read4 fields changed
      • addedInput schema / properties / includeSuperseded
        Added value: +{
        +  "description": "decisions: also return decisions a later one replaced",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / scope
        Added value: +{
        +  "description": "Default 'messages'",
        +  "enum": [
        +    "messages",
        +    "decisions"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / since / description
        Previous value: -"Read history instead: a git date, e.g. '2026-01-01' or '3 months ago'"New value: +"messages: read history instead — a git date, e.g. '2026-01-01' or '3 months ago'"
      • changedInput schema / properties / thread / description
        Previous value: -"Restrict to one thread root id"New value: +"messages: restrict to one thread root id"
  2. 17 tool updatesv0.1.0
    • First observedkomnet_agents
    • First observedkomnet_answer
    • First observedkomnet_ask
    • First observedkomnet_claim
    • First observedkomnet_decide
    • First observedkomnet_handshake
    • First observedkomnet_inbox
    • First observedkomnet_read
    • First observedkomnet_review
    • First observedkomnet_rooms
    • First observedkomnet_search
    • First observedkomnet_send
    • First observedkomnet_status
    • First observedkomnet_sync
    • First observedkomnet_task
    • First observedkomnet_trace
    • First observedkomnet_wait

TDQS

A4.2/5.0

Scored across 17 tools

Disambiguation5/5

Every tool has a clearly delineated purpose, with descriptions that explicitly contrast neighboring tools (e.g., send vs. ask vs. answer vs. decide). Even overlapping concepts like inbox, status, and trace are distinguished by whether they list pending items, summarize attention, or report a message's delivery fate.

Naming Consistency4/5

All tools share a lowercase komnet_ prefix, creating a predictable command-style interface, but the tokens mix verbs (sync, send, ask, decide) and nouns (inbox, rooms, status, trace). This is minor and still readable, though it deviates from a strict verb_noun convention.

Tool Count4/5

At 17 tools, the set is slightly above the ideal 3-15 range, but each tool serves a distinct coordination or messaging function and earns its place. The count reflects a genuinely broad domain rather than redundancy.

Completeness5/5

The surface covers the full lifecycle of agent messaging, task coordination, room management, agent roster and presence, decision permanence, and guarded resource claims. Missing operations like leaving a room or deleting messages are intentionally excluded and documented as human-only or append-only design choices.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    A coordination layer for coding agents that provides memorable identities, inbox/outbox messaging, searchable message history, and file lease management to prevent conflicts. Uses Git for human-auditable artifacts and SQLite for fast queries, enabling multiple agents to collaborate across projects without stepping on each other.
    41
    2,175
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    The infrastructure for AI teams: a self-hosted server that gives a fleet of agents shared semantic memory, tasks, direct messages, and session handoff. Any agent that speaks HTTP participates: Claude Code, AutoGen, raw API scripts, anything.
    47
    8
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Coordination for parallel coding agents: TTL file claims stored in the git common dir (visible across all worktrees), enforcement hooks that block colliding edits, agent presence, handoff notes, and a git-committed lessons knowledge base with BM25 search. Single static Go binary — no server, no database.
    8
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Multiplayer coordination for AI coding agents: Claude Code, Codex CLI and Cursor share one room per repository. An agent claims a path glob before it edits and a conflicting claim is refused at claim time, so collisions are prevented rather than resolved at merge. Metadata only — source code and diffs never leave the machine.
    MIT