AI 뉴스

Show GN: Klorn – 중요한 것만 빼고 다 조용히 시키는 오픈소스 이메일 방화벽

노동1호 2026. 6. 21. 22:01

2026년 6월 현재, 인박스에 새로운 카드가 더해지는 일은 거의 매일 일어난다. “AI가 답장하라고 추천합니다”, “초안을 작성했습니다”, “이 메일은 중요할 수 있어요” 같은 배지와 초안 카드가 기존 메일 위에 또 하나의 표면을 얹으면서, 정작 사용자는 메일 그 자체를 판단하기보다 메일+AI-제안 묶음을 판단하게 됐다. Klorn은 이 패턴을 정면으로 거부한다. 메일 위에 무엇을 더 얹는 도구가 아니라, 이메일에서 “조용히 시키는 게 무엇인지”만 결정하는 방화벽을 지향한다. 솔로 빌더가 6주차 POC를 공개한 이 프로젝트는 단순한 메일 분류기가 아니라, 결정의 불변성실행의 위험성을 코드 레벨에서 통제하는 attention firewall이다.

Klorn email firewall attention AI inbox classification

Klorn이 노리는 단 하나의 출력

대부분의 AI 메일 도구는 “제안 카드”나 “자동 초안” 같은 새 표면을 더한다. Klorn은 반대로, 각 메일을 단 하나의 분류 결과로만 떨어뜨린다. 그 결과는 다음 네 가지 tier 중 하나다.

| Tier | 의미 | 알림 |

|------|------|------|

| SILENT | 저장만 하고 화면에 띄우지 않음 (마케팅, 영수증 등) | 없음 |

| QUEUE | 큐에는 쌓지만 알림은 없음 | 없음 |

| PUSH | 지금 봐야 하는 메일 (알림 / 텔레그램 / 선택적 전화) | 있음 |

| AUTO | 분류만 (실행은 일부러 차단) | 없음 |

핵심은 “모든 메일이 반드시 이 중 하나로만 정리된다는 점”이다. 애매하게 여러 상태를 동시에 갖지 않는다. 인박스가 시끄러워지지 않게, 출력 자체를 4-tier로 끝낸다.

LLM은 “결정”을 하지 않는다

Klorn에서 LLM의 역할은 의도적으로 축소돼 있다. LLM은 “이 메일을 PUSH로 분류한다” 같은 결정을 내리지 않는다. 대신, 메일을 보고 4개의 숫자만 뽑는다.

  • 얼마나 확신하는지 (confidence)
  • 발신자를 얼마나 신뢰할 수 있는지 (sender trust)
  • 되돌릴 수 있는 일인지 (reversibility)
  • 얼마나 급한지 (urgency)

최종 tier는 이 숫자를 가지고 고정된 규칙(deterministic floor)으로 계산한다. 이렇게 한 이유는 단순하다. 모델이 바뀌어도 결과가 흔들리지 않게 하려는 것이다. LLM이 죽거나 rate limit에 걸려도, 키워드 기반 fallback이 같은 4개 값을 만들어서 급한 메일이 빠지지 않게 해둔 상태다. 즉, “LLM이 결정한다 → 그래서 책임은 LLM에 있다”가 아니라, “LLM은 점수만 뽑는다 → 결정과 책임은 시스템이 진다”가 Klorn의 핵심 도덕이다.

분류 결과는 나중에 못 바꾼다

Klorn의 분류 결과는 불변(immutable)이다. 분류할 때 사용한 입력(from, subject, snippet 등)을 그대로 sha256으로 해싱해서 저장한다. 나중에 다시 읽을 때도 동일하게 해싱해 비교한다. 값이 다르면 AttentionHashMismatchError로 즉시 실패한다. 이렇게 해두면 나중에 누군가 데이터를 덧붙이거나 바꿔도, 예전에 내렸던 tier가 “조용히 바뀌는 일”이 없다. PR #468이 이 메커니즘의 구현 사례다. 결정의 신뢰는 미래의 enrichment 작업으로 무효화될 수 없다.

위험한 액션은 일부러 불편하게

메일에서 위험한 행동은 몇 개 되지 않는다. 메일 보내기, 영구 삭제, 외부로 전달. 이 세 가지는 실수 한 번이면 끝이다. Klorn은 이 액션들을 deterministic floor 뒤에 둔다. 실행은 /approve 시점에 발행된 ActionReceipt에 페이로드를 고정하고, 실제 실행 시점에 다시 검증해 조금이라도 다르면 그냥 실패한다. 자율 에이전트의 직접 호출 경로는 기본적으로 닫혀 있다(self-host 배포 기준). 안 되는 쪽을 선택한 것이고, 그게 이 도구의 도덕적 기둥이다.

셀프호스트가 표준 경로

Klorn은 AGPLv3 오픈소스로 배포되며, OpenAI 호환 API면 무엇이든 붙일 수 있다. Ollama / LM Studio / vLLM 모두 사용 가능하고, 메일 데이터를 외부로 보내지 않는 구성도 가능하다. 클라우드 API 키는 선택적으로만 사용한다. 알림도 웹푸시 없이 텔레그램으로 받는 게 더 단순할 수 있다. README의 “quick start” 섹션은 단일 명령으로 로컬에서 Klorn을 띄울 수 있도록 docker compose를 제공하며, Google OAuth 테스트 모드를 거치지 않고도 바로 자기 Gmail 계정으로 로그인해 동작시킬 수 있다. 클라우드 호스팅(klorn.ai)은 Google OAuth testing mode라 100명 제한이 있지만, 풀 기능 셀프호스트가 정식 경로다.

기술 스택 한눈에

README가 공개한 스택은 단순 명료하다.

Klorn email firewall attention AI inbox classification

| Layer | Stack |

| --- | --- |

| Web | Next.js 15, React 19, TypeScript, Tailwind CSS |

| API | Fastify, TypeScript, Prisma |

| DB | PostgreSQL |

| Auth | JWT, bcrypt, Google OAuth |

| AI | OpenRouter, Gemini fallback |

| Realtime | WebSocket, Web Push |

| Monorepo | pnpm workspaces |


packages/
  api/   Fastify API, Prisma schema, agent/tool orchestration
  web/   Next.js app: decision queue, mail, calendar, briefing, settings
  core/  shared utilities and CLI-facing primitives
docs/    screenshots and operational notes

API와 Web, Core가 모노레포로 분리돼 있고, 결정 큐(decision queue)가 첫 화면이라는 점이 일반적인 인박스 UI와 다르다. 채팅 화면이 아니라 “다음 행동 카드”가 첫 진입점이다.

“더 조용한 인박스”를 위한 운영 원칙

Klorn이 README에 명시한 다섯 가지 원칙을 그대로 옮기면 다음과 같다.

  • 승인이 있어야 실행 – 메일 전송, 캘린더 변경, 외부 푸시는 모두 명확한 확인 단계를 거친다.
  • 증거 기반 자동화 – 모든 제안은 신호·추론·단계화된 행동을 함께 보여준다.
  • 점진적 신뢰 – Klorn은 처음엔 observe-and-suggest 모드로 시작해, 사용자 피드백을 통해 자율 범위를 넓힌다.
  • 빈 상태가 곧 제품 – 어떤 연결도 없기 전에도 다음 단계가 명확해야 한다.
  • 하나의 명확한 신호 – 이름 Klorn은 게르만어 klar(맑은)와 고대 영어 horn(대답할 만한 신호)에서 왔다.

이 원칙들은 단순한 카피가 아니라, deterministic floor와 content-hash binding 같은 코드 메커니즘으로 구현돼 있다. “AI가 잘하겠지”라는 신앙이 아니라, “모델이 바뀌어도, 누군가 코드를 바꿔도, 같은 입력에 같은 결정을 보장하는가”라는 엔지니어링 질문에 답하는 방식이다.

솔로 빌더가 밝힌 현재 상태와 한계

리포지토리 자체가 솔직하다. POC 스프린트 Day 14에 막 들어섰고, ICP retention 측정도 이제부터 시작이다. AUTO 실행은 의도적으로 꺼둔 상태이며, UI는 정리 중이다. 클라우드 호스팅(클라우드 에디션)이 출시돼도 방화벽 doctrine과 본 코드는 그대로 오픈소스에 남는다. 클라우드 측이 추가로 파는 것은 관리형 호스팅, 검증된 Gmail 스코프, 팀 워크스페이스뿐이라는 게 README에 명시돼 있다. 이 한계 인식이 오히려 이 프로젝트의 신뢰를 높인다.

정리

2026년 6월 기준으로 인박스를 더 조용하게 만드는 도구는 거의 없다. 대부분은 AI 제안 카드를 더해 일시적으로 조용해 보이게 만들 뿐, 본질은 더 시끄러워진다. Klorn은 다르게 접근한다. 메일 위에 무엇을 얹지 않고, 무엇을 조용히 시킬지만 결정하는 방화벽을 만든다. LLM은 점수만 뽑고, 결정은 코드가 내리며, 그 결정은 sha256으로 굳어져 바뀌지 않는다. 위험한 액션은 deterministic floor 뒤에 있고, 셀프호스트가 정식 경로다. “AI가 답장 추천” 같은 배지가 정말로 필요하다면, 그건 AI 메일 도구가 아니라 알림 도구의 실패다. Klorn은 그 실패를 인정한 곳에서 출발한다. 다음에 인박스가 너무 시끄럽다고 느낀다면, 추천 카드를 더 얹는 도구가 아니라 한 가지만 결정하는 방화벽을 검토해볼 만하다.