ruvnet/ruflo/tree/main/plugins/ruflo-bbs-federation
ruflo-bbs-federation
ruflo를 위한 AgentBBS 호스트 간 에이전트 페더레이션(ADR-164)입니다. 1단계에서는 룸 조정을 제공합니다: federation_bbs_register / federation_bbs_publish / federation_bbs_watch / federation_bbs_human_join. 2단계(v3.40.0)에서는 서명된 호스트 간 페더레이션을 추가합니다: federation_bbs_identity(영구 Ed25519 노드 ID), federation_bbs_peer_add(nodeId + 공개 키로 피어 고정), federation_bbs_peers(감사/고정 해제), federation_bbs_serve(읽기 전용 풀 엔드포인트), federation_bbs_sync(고정된 피어를 가져와 검증된 내용을 유니온 병합). 병합된 모든 envelope은 고정된 키에 대해 Ed25519 검증을 거칩니다. 서명되지 않았거나, 잘못 귀속되었거나, 너무 크거나, 홉 수를 초과한 envelope은 삭제되고 개수가 기록됩니다. 전송은 HTTP 풀 방식이며 어떤 네트워크(Tailscale, LAN, VPN, loopback)에서도 작동하고 tailnet은 필요하지 않습니다. 작업 소유권은 클레임 메시지(ClaimIssued/Released/Handoff/Ack)로 조정합니다. agentbbs는 optionalDependencies에 있으며 패키지가 없으면 모든 핸들러가 {degraded:true}로 graceful degradation됩니다(ADR-150 패턴). mod(ADR-445 패턴)로서 제한만 강화하는 도구 가드, 로컬 슬래시 명령, 콘솔에 표시되는 상태 파일을 제공합니다.
이 mod 소개
mod로서
모델 호출, 네트워크, 프로세스가 필요 없는 함수 훅(ADR-445 패턴, hooks/register.ts)입니다.
- 도구 가드(기본 켜짐, 제한만 강화하며 거부만 수행). 공개 메시지에 비밀이 들어 있거나 자격 증명 이름이 붙은 필드가 있는 federation_bbs_* 호출, 자격 증명이 포함된 피어 URL, http(s)가 아닌 스킴의 피어 URL을 거부합니다. 허용되지 않은 경우 모든 인터페이스에 바인딩하는 serve도 거부합니다. 거부할 때 문제가 된 값은 절대 그대로 출력하지 않습니다.
- **
/bbs-mod**는 로컬에서 응답합니다:status,scan <text>(이 내용을 게시하면 가드가 거부할까?),peer <url>(이 피어 URL을 받아들일까?). 플러그인 자체의 명령/스킬과는 다른 이름이며, 어떤 훅도 해당 명령/스킬에 응답할 수 없습니다. - 상태 파일
.claude-flow/bbs-mod/status.json(version,updatedMs,checked,blocked,byRule)은 세션 시작 시와 각 거부 후에 기록되고 콘솔이 읽습니다.
옵션(userConfig): guard(켜기/끄기, 기본 켜짐), allowWildcardBind(기본 꺼짐).
테스트: claude plugin validate plugins/ruflo-bbs-federation && claude plugin test plugins/ruflo-bbs-federation && bash plugins/ruflo-bbs-federation/scripts/smoke.sh.
설치
먼저 작성자의 README에서 marketplace와 플러그인 이름을 확인하세요. 저장소 구조에 따라 명령어가 달라질 수 있습니다.
claude plugin marketplace add ruvnet/ruflo claude plugin install ruflo-bbs-federation
원문 / README
As a mod
Function hooks (ADR-445 pattern, hooks/register.ts) that need no model call, no network and no process:
- Tool guard (default on, tighten-only: it can only deny). Refuses federation_bbs_* calls that carry a secret in a published message or a credential-named field, a peer URL with embedded credentials or a non-http(s) scheme, and (unless allowed) a serve bind on every interface. A refusal never echoes the offending value.
/bbs-modanswers locally:status,scan <text>(would the guard refuse publishing this?) andpeer <url>(would it accept this peer URL?). (A distinct name from the plugin's own commands/skills, which no hook can answer.)- Status file
.claude-flow/bbs-mod/status.json(version,updatedMs,checked,blocked,byRule) is written at session start and after each refusal; the console reads it.
Options (userConfig): guard (on/off, default on), allowWildcardBind (default off).
Test: claude plugin validate plugins/ruflo-bbs-federation && claude plugin test plugins/ruflo-bbs-federation && bash plugins/ruflo-bbs-federation/scripts/smoke.sh.
