Nexa Beep 아이콘

Nexa Beep 사용 설명서

v0.9.0 기준 최종 수정 2026-11-07

개요

Nexa Beep은 서버 주소·계정 가입·상대 등록 없이 쓰는 로컬 네트워크(LAN) 메신저입니다. 앱을 실행하면 같은 네트워크에서 Nexa Beep을 실행 중인 사용자가 목록에 자동으로 나타나고, 한 명을 고르면 바로 암호화된 대화가 시작됩니다. Windows · macOS · Linux에서 같은 화면으로 동작하며, 제작은 SosomLab입니다.

이 설명서는 v0.9.0(2026-11-07 배포)을 기준으로 합니다. 앱 소개는 제품 페이지를 참고하세요.

주요 기능:

  • 실행 = 참여 — 같은 LAN의 사용자가 자동으로 목록에 뜹니다. 첫 대화까지 입력할 값이 없습니다.
  • 종단 암호화 — 모든 대화와 파일은 두 기기 사이에서 Noise_XX(X25519 · ChaCha20-Poly1305 · BLAKE2s)로 암호화됩니다. 릴레이 서버를 거쳐도 내용을 읽을 수 있는 것은 두 기기뿐입니다.
  • 키 지문 기반 신원 — 상대를 이름이 아니라 기기 키 지문으로 구별하고, 필요하면 지문을 다른 경로로 대조해 “대조 완료”로 표시합니다.
  • 안전한 파일 받기 — 받은 파일은 격리 → 검사 → 사람의 승인을 거쳐야 꺼낼 수 있으며, 앱은 받은 파일을 실행하지 않습니다.
  • 대용량 전송과 이어받기 — 10GB급 파일도 메모리에 올리지 않고 보내고, 끊기면 받은 곳부터 이어받습니다.
  • 그룹 대화 — 여러 상대를 묶어 한 방에서 대화하고 파일을 보냅니다.
  • 답장과 글자 복사 — 말풍선에 인용을 붙여 답장하고, 말풍선 글자를 골라 복사합니다(v0.7.0).
  • 꺼진 상대와의 대화 · 내 상태 — 상대가 꺼져 있어도 대화창이 열리고 대기 메시지는 상대가 나타나는 순간 전달됩니다. 내 상태를 오프라인으로 둘 수 있습니다(v0.6.0).
  • 수신 제한 — 받지 않을 상대를 기간을 정해 차단하고, 폭주를 자동으로 막으며, 처음 보는 상대의 메시지를 보류할 수 있습니다(v0.8.0).
  • 내 기기 묶기(다중 기기 신원) — 같은 핸들·페어링 암호를 넣은 내 PC들이 서로를 “내 기기”로 인식하고, 대화를 이어 보고, 꺼져 있던 기기도 놓친 대화를 따라잡습니다(v0.4.0~v0.5.0).
  • 다른 네트워크의 상대와 연결 — 선택 기능인 릴레이 서버(기본 beepd.sosomlab.com)로 집↔회사처럼 다른 망의 상대와도 대화합니다. 서버는 내용을 볼 수 없고 저장하지 않습니다.
  • 트레이 상주 · 알림 · 자동 실행, 4개 언어 UI(한국어 · English · 中文 · 日本語), 터미널용 CLI 단말.

목록 화면(라이트 테마)

참고 이 설명서의 화면 캡처는 v0.2.14 시기에 찍은 것입니다. 기본 구성은 같지만 설정 화면은 v0.3.0에서 새로 바뀌었으므로, 설정 화면은 글로만 설명합니다.

참고 비상업적 사용은 무료이며 어떤 기능도 잠겨 있지 않습니다. 상업적 사용에는 별도 라이선스가 필요합니다(아래 라이선스 참고 · PolyForm Noncommercial 1.0.0).

시스템 요구사항

항목요구사항
WindowsWindows 10 / 11 — x64 · ARM64. Visual C++ 재배포 패키지나 .NET이 필요 없습니다(v0.2.16부터)
macOSmacOS 11(Big Sur) 이상 — Apple Silicon(arm64) · Intel(x64) 각각 네이티브 자산
Linuxx64 전용. .deb(Ubuntu 22.04+ · Debian 12+) · .rpm(Fedora · RHEL 계열, v0.3.0부터) · 포터블 tar.gz
권한관리자 권한 불필요(Windows 설치본도 사용자 단위 설치)
네트워크같은 LAN 안에서는 인터넷이 필요 없습니다. 발견에 UDP 47100, 대화 세션에 TCP 47200(기본)을 씁니다
다른 망과 연결릴레이 서버를 켤 때만 인터넷 연결 필요(기본 서버 beepd.sosomlab.com:47300, TCP+UDP)
메모리유휴 상주 약 25MB 이하를 목표로 관리합니다(저장소 성능 문서 기준)

참고 코드 서명·공증이 아직 되어 있지 않습니다. Windows에서는 SmartScreen 경고(“알 수 없는 게시자”)가, macOS에서는 Gatekeeper 차단이 나타날 수 있습니다. 아래 설치 절차의 안내를 따르세요.

설치와 제거

모든 설치 채널은 GitHub의 태그 릴리스에서 나옵니다. 배포 형태는 설치본과 포터블 두 가지입니다.

  • 설치본 — Windows NSIS 설치 파일, macOS .dmg, Linux .deb/.rpm.
  • 포터블 — 압축을 풀고 바로 실행. 설정·신원·기록이 실행 파일 옆 data/ 폴더에 생겨서 폴더째 옮겨 다닐 수 있습니다.

릴리스 페이지: github.com/SosomLab/nexa-beep/releases

배포 채널 현황

최신 릴리스는 v0.9.0(2026-11-07)입니다. 패키지 매니저마다 게시 시점이 다릅니다(각 채널을 2026-11-07에 직접 확인한 값입니다).

채널OS게시 버전상태
GitHub Releases전체0.9.0최신
Homebrew (kiros33/tap)macOS0.9.0릴리스와 함께 자동 갱신
APT / DNF (pkg.sosomlab.com)Linux0.9.0릴리스 직후 자동 갱신
ChocolateyWindows0.6.0설치본·포터블 모두 2026-11-02 승인
wingetWindows설치본 0.8.0 · 포터블 0.6.1설치본 0.8.0은 2026-11-06 병합 · 0.9.0은 설치본·포터블 모두 심사 중

참고 Windows에서 최신 버전이 필요하면 GitHub Releases의 파일을 직접 받으세요. winget·Chocolatey는 검수가 끝나는 대로 같은 명령으로 새 버전이 설치됩니다.

Windows — 설치본(권장)

  1. 릴리스 페이지에서 nexa-beep-<버전>-windows-x64-setup.exe를 받습니다. ARM64 PC는 windows-arm64 파일을 받습니다.
  2. 실행하면 사용자 단위로 설치됩니다. 관리자 권한(UAC)을 묻지 않으며, 설치 위치는 %LOCALAPPDATA%\Programs\NexaBeep입니다.
  3. 완료 화면에서 바로 실행하거나 시작 메뉴의 Nexa Beep을 엽니다.

무인 설치가 필요하면 /S 옵션을 씁니다.

.\nexa-beep-0.9.0-windows-x64-setup.exe /S

Windows — 포터블

  1. nexa-beep-<버전>-windows-x64-portable.zip을 받아 원하는 폴더에 풉니다.
  2. nexa-beep.exe를 더블클릭합니다.

주의 같은 폴더의 nbeep-imgdec.exe를 지우지 마세요. 이미지를 별도 격리 프로세스에서 해석하는 보조 프로그램입니다. 없으면 사진 대신 이니셜 아바타가 표시되고 이미지 미리보기가 되지 않습니다.

Windows — 패키지 매니저

# Chocolatey (게시 버전: 0.6.0)
choco install nexa-beep              # 설치본
choco install nexa-beep-portable     # 포터블

# winget (게시 버전: 설치본 0.8.0 · 포터블 0.6.1)
winget install SosomLab.NexaBeep            # 설치본
winget install SosomLab.NexaBeep.Portable   # 포터블

Windows — 첫 실행 시

  • Windows 방화벽이 네트워크 허용 여부를 물으면 허용하세요. 발견(UDP 47100)과 대화(TCP 47200)에 필요합니다.
  • SmartScreen이 “Windows의 PC 보호” 창을 띄우면 추가 정보 → 실행으로 진행합니다(코드 서명 전이라 나타나는 경고입니다).

macOS — Homebrew(권장)

brew install --cask kiros33/tap/nexa-beep
  • 서명·공증 전인 앱에 macOS 격리 표식이 붙으면 실행이 강제 종료됩니다. Homebrew Cask는 설치할 때 이 표식을 제거하므로 macOS에서는 이 방법을 권장합니다.
  • 업데이트: brew upgrade --cask nexa-beep

터미널 전용(CLI) 포터블이 필요하면 다음을 씁니다.

brew install kiros33/tap/nexa-beep-portable

macOS — 수동 설치

  1. 릴리스 페이지에서 nexa-beep-<버전>-macos-arm64.dmg(Apple Silicon) 또는 macos-x64.dmg(Intel)를 받습니다.
  2. .dmg를 열고 Nexa Beep.app을 응용 프로그램 폴더로 끌어 놓습니다.
  3. 처음 열 때 Gatekeeper가 막으면 터미널에서 격리 표식을 제거합니다.
xattr -dr com.apple.quarantine "/Applications/Nexa Beep.app"

참고 첫 실행 시 macOS가 로컬 네트워크 접근과 알림 허용을 물을 수 있습니다. 둘 다 허용해야 상대 발견과 데스크톱 알림이 동작합니다.

Linux — APT 저장소(Ubuntu · Debian)

pkg.sosomlab.com 저장소를 한 번 등록하면 apt upgrade로 업데이트를 받을 수 있습니다.

저장소 등록 (최초 1회) — 다른 SosomLab 앱으로 이미 등록했다면 건너뜁니다.

sudo curl -fsSLo /usr/share/keyrings/sosomlab-archive-keyring.gpg https://pkg.sosomlab.com/sosomlab-archive-keyring.gpg
sudo curl -fsSLo /etc/apt/sources.list.d/sosomlab.sources https://pkg.sosomlab.com/apt/sosomlab.sources

설치

sudo apt update && sudo apt install nexa-beep

Linux — DNF 저장소(Fedora · RHEL 계열)

저장소 등록 (최초 1회) — 다른 SosomLab 앱으로 이미 등록했다면 건너뜁니다.

sudo curl -fsSLo /etc/yum.repos.d/sosomlab.repo https://pkg.sosomlab.com/rpm/sosomlab.repo

설치

sudo dnf install nexa-beep

Linux — 패키지 파일 직접 설치 · 포터블

# deb (Ubuntu 22.04+ · Debian 12+)
sudo dpkg -i nexa-beep-0.9.0-linux-x64.deb

# rpm (Fedora · RHEL 계열)
sudo dnf install ./nexa-beep-0.9.0-linux-x64.rpm

# 포터블
tar xzf nexa-beep-0.9.0-linux-x64-portable.tar.gz && ./nexa-beep

주의 v0.2.17 이하의 .deb는 Ubuntu 22.04 · Debian 12에서 실행되지 않는 문제가 있었습니다(필요한 glibc 버전 표기 오류). v0.3.0 이상을 쓰세요.

참고 GNOME 데스크톱에서 트레이 아이콘을 쓰려면 AppIndicator 확장이 필요합니다.

내려받은 파일 확인(선택)

릴리스마다 SHA256SUMS.txt가 함께 올라갑니다. 받은 파일의 해시를 이 목록과 대조할 수 있습니다.

# Windows
(Get-FileHash .\nexa-beep-0.9.0-windows-x64-portable.zip -Algorithm SHA256).Hash
# macOS · Linux
shasum -a 256 nexa-beep-0.9.0-linux-x64-portable.tar.gz

업데이트

  • Homebrew · APT · DNF · Chocolatey · winget: 각 패키지 매니저의 업그레이드 명령을 씁니다.
  • 설치본: 새 버전의 설치 파일을 그대로 실행하면 덮어씁니다. 신원·설정·기록은 유지됩니다.
  • 포터블: 새 버전의 실행 파일로 교체하되 data/ 폴더는 그대로 둡니다.

참고 macOS .app이나 Homebrew처럼 업그레이드 때 폴더째 교체되는 자리에서는 데이터를 앱 안이 아니라 사용자 폴더(~/Library/Application Support/nexa-beep)에 둡니다(v0.2.9부터). 그래서 업그레이드해도 신원이 사라지지 않습니다.

제거

설치 방법제거 방법
Windows 설치본설정 › 앱 › 설치된 앱에서 Nexa Beep 제거(또는 설치 폴더의 uninstall.exe)
Chocolateychoco uninstall nexa-beep
wingetwinget uninstall SosomLab.NexaBeep.Portable
Homebrewbrew uninstall --cask nexa-beep (데이터까지 지우려면 brew uninstall --zap --cask nexa-beep)
APT / debsudo apt remove nexa-beep
DNF / rpmsudo dnf remove nexa-beep
포터블압축을 푼 폴더를 삭제(그 안의 data/까지 지워집니다)

주의 Windows 제거기는 설치한 파일만 지우고 사용자가 만든 데이터(신원 키·대화 기록 등)는 남겨 둡니다. 완전히 지우려면 아래 데이터와 개인정보의 데이터 폴더를 직접 삭제하세요. 지우기 전에 다른 기기로 옮길 계획이라면 신원 키를 먼저 백업하세요.

참고 시스템 시작 시 자동 실행이 기본으로 켜져 있습니다. 제거하기 전에 설정에서 자동 실행을 끄면 운영체제의 자동 실행 등록이 깔끔하게 정리됩니다.

시작하기

첫 실행

  1. 설치본을 열거나 포터블 nexa-beep을 더블클릭합니다.
  2. 바로 목록 화면이 뜹니다. 서버 주소·계정·상대 등록을 묻지 않습니다.
  3. 같은 LAN에서 Nexa Beep을 실행 중인 상대가 자동으로 목록에 나타납니다.
  4. 상대를 더블클릭하거나 선택 후 Enter를 누르면 대화가 열립니다. 처음이면 1초 안쪽으로 암호화 세션을 맺습니다.

내 표시 이름의 기본값은 컴퓨터 이름에서 실명으로 보이는 부분을 걷어낸 값입니다. 판별이 어려우면 beep-지문8자리 형식이 됩니다. 툴바 오른쪽 끝의 내 아바타를 눌러 프로필에서 바꿀 수 있습니다.

상대가 보이지 않을 때 먼저 할 일

  • 같은 네트워크(같은 공유기·같은 사내망)에 있는지 확인합니다. 게스트 Wi-Fi나 분리된 VLAN은 발견 신호를 막을 수 있습니다.
  • 툴바의 재발견 버튼을 누릅니다.
  • 그래도 없으면 ⌘/Ctrl+K로 상대 IP를 직접 입력합니다(주소로 직접 연결 참고).
  • 다른 네트워크의 상대라면 릴레이 서버 연결을 씁니다.

실행 방법(터미널)

더블클릭 실행이 기본이며, 터미널에서는 다음 옵션을 쓸 수 있습니다.

명령동작
nexa-beep창 모드 + 실제 네트워크 발견(더블클릭과 같음)
nexa-beep --port 47210이번 실행만 세션 수신 포트 지정(점유 시 임의 포트로 대체)
nexa-beep --chat-live [이름]터미널 전용 CLI 단말(CLI 단말 참고)
nexa-beep --whoami내 지문 · 이름 · 실행 경로 · 데이터 경로 출력
nexa-beep --license status라이선스 상태 확인(라이선스 참고)
nexa-beep --version버전 출력
nexa-beep --help전체 옵션 안내

참고 표기 ⌘/Ctrl은 macOS에서는 ⌘(Command), Windows·Linux에서는 Ctrl을 뜻합니다.

화면 구성

목록 화면

위치내용
툴바 왼쪽재발견(목록 새로 고침) · 주소로 추가(⌘/Ctrl+K) · 격리함(받은 파일 보관·승인) · 보관함(격리 해제된 파일) · 대화함(저장된 대화 목록·공지)
툴바 오른쪽서버 연결 표시(릴레이를 켰을 때) · 내 아바타(누르면 내 프로필)
필터 바Via(경로: 전체 · 로컬 · 서버 · 인터넷 · 그룹) · On(접속: 전체 · 온라인 · 오프라인) · Who(신뢰: 전체 · 대조 완료 · 핀 · 처음 본 상대). 여러 칩은 AND로 겹치며, 선택은 재시작 후에도 유지됩니다
목록 행아바타 · 이름 · 상태 점 · 신뢰 배지 · 읽지 않은 메시지 수
상태바마지막 사건 한 줄과 수신 :포트(이번 실행에서 실제로 듣고 있는 세션 포트)
라이트다크
목록 · 라이트목록 · 다크

상태 점과 배지 읽는 법

표시뜻
초록 점온라인 — 지금 연결할 수 있음
회색 점오프라인
빨간 점(−)방금 연결이 끊김
체크 배지핀(TOFU) — 처음 만났을 때의 키를 기억하고 있음
파란 실선 배지대조 완료 — 지문을 다른 경로로 대조해 확인한 상대
보라색 배지내 기기 — 같은 핸들·페어링 암호로 묶인 내 다른 PC
⚠ 표식이름 충돌 — 같은 이름(또는 같은 핸들)을 다른 키가 쓰고 있음
숫자 배지읽지 않은 메시지 수

대화 기록이 있거나, 수동 주소를 등록했거나, 목록 위에 고정했거나, 내 기기인 상대는 오프라인이어도 목록에 남습니다(v0.8.0부터 대화한 적 없는 상대는 쌓이지 않습니다). 이름을 공개하지 않은 상대나 아직 프로필을 받지 못한 상대의 오프라인 행은 beep-지문8자리로 보입니다.

오프라인 행 유지

메뉴

메뉴항목
메뉴내 상태(온라인/오프라인) · 설정 · 격리함 · 대화함 · 로그 · 공지 보내기… · 종료
도움말라이선스… · About

목록 행 우클릭 메뉴

항목동작
프로필 보기상대의 프로필 카드 열기
목록 상단에 고정 / 고정 해제정렬과 무관하게 맨 위에 고정(재시작 후에도 유지)
그룹 만들기 (N명)선택한 상대들로 그룹 방 만들기
차단1시간 · 24시간 · 7일 · 영구 중에서 골라 이 상대를 차단(v0.8.0 · 수신 제한 참고)
목록에서 삭제이 상대를 잊음 — 핀·이력·수동 주소를 지우고, 대화 기록의 데이터 키를 폐기해 복구할 수 없게 됩니다

목록 우클릭 메뉴

목록 빠른 찾기

목록 화면에서 이름의 첫 글자들을 바로 타이핑하면 해당 상대로 이동합니다. 프로필의 표시 이름(예: kiros33@mac)으로도 찾습니다.

  • ↑ / ↓ 로 이동하며, 끝에서 처음으로 되돌아갑니다.
  • 한글 이름도 찾을 수 있습니다. Linux에서는 한/영 키로 한글 모드를 켜고 자모를 입력합니다(v0.3.1). 한/영 키가 동작하지 않는 환경에서는 오른쪽 Alt 단독 또는 Shift+Space로 전환합니다. 현재 입력 모드는 상태바에 표시됩니다.
  • 설정 › 모양 › 목록에서 빠른 찾기를 끄거나 입력 유지 시간(0.2~60초)을 바꿀 수 있습니다.

대화

대화 열기와 창 모드

목록에서 상대를 더블클릭하거나 Enter를 누릅니다. 대화 창은 두 가지 모드 중 하나로 열립니다. 설정 › 대화 › 대화 창 모드에서 고르며, 다음 대화부터 적용됩니다.

모드동작
단일 창목록 자리에서 대화가 열리고 Esc로 목록에 돌아옵니다
별도 창상대마다 별도의 창이 열려 여러 대화를 동시에 볼 수 있습니다
별도 창단일 창(다크)
별도 창단일 창

대화 창 위쪽(헤더)에는 상대 아바타와 이름, 그리고 연결 경로 배지가 표시됩니다.

경로 배지뜻
(배지 없음 또는 로컬)같은 LAN에서 직접 연결
서버 경유(파랑)릴레이 서버를 통해 만난 연결
인터넷 경유(주황)IP·도메인으로 직접 등록해 인터넷을 건너 연결

메시지 보내기

  1. 아래 입력란에 내용을 씁니다.
  2. Enter로 전송합니다. 줄을 바꾸려면 Shift+Enter를 누릅니다.
  3. 오른쪽 아래의 등급 버튼(일반)을 누르면 이 메시지의 등급을 일반 / 알림 / 긴급 중에서 바꿀 수 있습니다. 상대 쪽에서 알림이 얼마나 강하게 뜰지는 상대의 설정이 정합니다.

내 말풍선 옆의 점은 전달 상태를 뜻합니다.

  • 점 하나 = 상대 기기에 전달됨
  • 점 둘 = 상대가 읽음

참고 전달·읽음 확인을 보낼지는 각자 설정 › 대화에서 정합니다. 점이 없다고 해서 상대가 받지 못한 것은 아닙니다(상대가 확인 보내기를 꺼 두었거나, 오프라인이거나, 검증 조건을 통과하지 못한 경우를 구분할 수 없습니다).

상대가 꺼져 있을 때 — 오프라인 큐

상대가 꺼져 있거나 접속에 실패해도 목록에서 행을 누르면 대화창이 열려 지난 기록을 볼 수 있습니다(v0.6.0). 거기서 보낸 메시지는 오프라인 큐(최대 200건, 재시작 후에도 유지)에 보관되었다가 상대가 나타나는 순간 전달됩니다.

입력한 시각과 실제 전송된 시각이 다르면 말풍선에 13:06 ▸ 13:40처럼 두 시각이 함께 표시됩니다(같은 분이면 하나만).

주의 오프라인 큐는 내 PC가 켜져 있을 때만 전달합니다. 양쪽이 모두 꺼져 있던 동안의 메시지를 서버가 대신 보관해 주지는 않습니다.

내 상태 — 온라인 / 오프라인

메뉴 › 내 상태 또는 설정 › 일반 › 시스템 › 내 상태에서 바꿉니다(v0.6.0).

  • 오프라인: 광고를 멈춰 상대 목록에서 내가 사라지고, 열린 대화는 끊기며, 새 연결과 서버 접속도 하지 않습니다. 상대에게는 네트워크에 없는 것처럼 보입니다.
  • 오프라인 동안 보낸 메시지는 대기했다가 온라인으로 돌아와 상대가 나타나면 전달됩니다.
  • 오프라인 동안 트레이 아이콘이 흐려지고 회색 점이 붙으며, 툴팁과 주 창 제목에 “오프라인”이 표시됩니다(v0.6.1). 이 상태로 앱을 다시 켜도 오프라인으로 시작합니다.

답장

  1. 답장할 말풍선을 우클릭해 답장을 고릅니다(v0.7.0). 내가 쓴 글과 예전 글에도 답장할 수 있습니다.
  2. 입력창 위에 “답장 중” 띠가 나타납니다. 취소하려면 Esc 또는 **×**를 누릅니다.
  3. 내용을 쓰고 보내면 말풍선 위에 인용 블록(발신자와 원문 발췌, 최대 120자)이 붙습니다.
  4. 인용을 누르면 원본으로 스크롤해 잠시 강조합니다. 원본이 이 대화에 없으면 상태바에 안내만 표시합니다.

1:1 대화와 그룹 대화에서 모두 쓸 수 있습니다.

참고 v0.6.1 이하이거나 버전을 아직 모르는 상대·구성원에게는 인용을 본문 앞 한 줄로 붙인 일반 메시지로 자동 전환됩니다(v0.8.0). 내용은 그대로 닿고 원본으로 이동하는 기능만 없습니다.

말풍선 글자 선택과 복사

  • 한 말풍선 안에서 드래그하거나 더블클릭(단어)해 글자를 고릅니다(v0.7.0). 선택은 반전 표시되고, 창이 비활성이면 흐려집니다.
  • ⌘/Ctrl+C 또는 우클릭 › 복사로 복사합니다. 말풍선 전체는 우클릭 › 메시지 복사로 복사합니다.
  • 복사하면 상태바에 “N자 복사됨”이, 대화 위에 “복사됨” 순간 메시지가 잠시 나타납니다. 표시 방법은 고속 스크롤과 순간 메시지에서 바꿉니다.

대화 입력창 명령

입력란에서 /로 시작하는 줄은 메시지가 아니라 명령입니다. 명령은 내 기기 안에서만 처리되며 상대에게 전송되지 않습니다.

명령별칭동작
/help/? · /명령명령 목록 보기
/fingerprint/fp · /지문값내 지문과 상대 지문 출력(대조용)
/verify/sas · /지문 · /대조이 상대를 대조 완료로 표시
/unverify/대조취소대조 완료 취소(핀 상태로 되돌림)
/trust/신뢰현재 신뢰 상태 한 줄 출력
/notice—이 메시지를 알림 등급으로
/urgent—이 메시지를 긴급 등급으로
/close/quit · /q · /닫기대화 창 닫기(대화 기록은 유지)

명령인지 아닌지는 첫 글자로 정해집니다.

  • 앞에 공백을 넣으면(예: /help) 일반 메시지로 보내집니다.
  • /로 시작하는 문장을 보내려면 //로 시작합니다(//안녕 → /안녕 메시지).
  • 명령 줄 뒤에 Shift+Enter로 둘째 줄을 쓰면 전체가 메시지로 보내집니다.
  • 오타 명령(예: /verifed)은 보내지도 실행하지도 않고 안내만 표시합니다.

공지 보내기

메뉴 › 공지 보내기… 로 지금 발견된 모든 상대에게 한 번에 공지를 보낼 수 있습니다. 공지는 3초에 한 번으로 제한됩니다. 공지를 받고 싶지 않으면 설정 › 대화 › 알림에서 공지 받지 않기를 켭니다.

대화함 — 저장된 대화 관리

툴바의 대화함(또는 메뉴 › 대화함)에서 저장된 대화 기록을 관리합니다.

  • 목록 · 미리보기 · 필터 · 클릭해서 열기
  • 대화 삭제(두 단계 확인) — 삭제하면 그 대화의 데이터 키가 폐기되어 복구할 수 없습니다.
  • 대화 기록 백업과 복원(봉인된 상태 그대로) — 파일 고르기·저장하기 참고

파일과 이미지 보내기

보내는 방법

세 가지 방법 모두 같은 안전 절차를 거칩니다.

  1. 대화 창에 파일을 끌어다 놓기
  2. 클립보드의 이미지를 대화 창에서 ⌘/Ctrl+V — PNG 파일로 전송됩니다(스크린샷을 찍고 바로 붙여넣기). v0.2.14부터 세 OS 모두 외부 도구 없이 동작합니다.
  3. CLI 단말에서 /send <파일…>

한 번의 요청에 파일을 최대 5개까지 보낼 수 있습니다(설정에서 1~5로 조정).

보내는 쪽 화면

진행률은 받는 쪽이 받았다고 알려 온 만큼만 올라갑니다(v0.8.0).

말풍선이 다음 순서로 바뀝니다.

승인 대기 → 진행률(⏸ 일시정지 · ▶ 재개 · ✕ 취소) → 완료 — 평균 속도

  • 10GB급 파일도 메모리에 올리지 않고 흘려보냅니다. 파일 무결성 해시는 전송하면서 계산해 완료 시 검증합니다.
  • 연결이 끊기면 받은 부분이 봉인 보관되고, 다시 연결해 같은 파일을 보내면 받은 곳부터 이어받습니다.
  • 일시정지한 채 오래 두면 자동으로 취소됩니다(기본 2분, 설정 › 파일).
  • 보내기 전에 상대의 수신 용량 상한을 먼저 확인하므로, 너무 큰 파일은 전송을 시작하기 전에 알려 줍니다.

받는 쪽 화면 — 승인 창

파일 요청이 오면 승인 창이 뜹니다. 보낸 사람 · 경로 배지 · 파일 수 · 이름 · 크기를 확인하고 승인 또는 취소를 누릅니다(단축키: 승인 ⌘/Ctrl+Y · 거절 ⌘/Ctrl+N).

파일 수신 요청 창

표시뜻
경로 배지요청이 들어온 경로 — 로컬(같은 망) / 서버 경유 / 인터넷
”서로 주고받은 메시지가 아직 없습니다”아직 메시지를 주고받은 적 없는 상대의 파일은 자동 승인 설정이어도 수동 승인으로 바뀝니다. 처음 보는 상대가 파일부터 보내는 것을 막는 규칙입니다
1시간 ▾ + 자동 승인이 상대를 정해진 기간 동안 자동 승인으로 둠
취소 (N초)응답이 없으면 시간 초과로 자동 취소(기본 60초)

여러 파일을 한 번에 보낸 요청은 승인 한 번 = 전체 승인, 거절 한 번 = 전체 거절입니다.

받은 파일 꺼내기 — 격리함과 보관함

승인해도 파일은 바로 다운로드 폴더에 생기지 않습니다. 보낸 사람이 누구든 다음 4단계를 거칩니다.

  1. 협상 — 수신 정책·용량·속도를 맞춥니다.
  2. 격리 — 원본을 풀지 않고 암호화된 .beepq 봉인 상태로 격리함(툴바 방패 아이콘)에 둡니다.
  3. 검사 — 확장자와 파일 내용(매직 바이트)으로 위험 등급을 판정합니다. zip은 풀지 않고 구조만 점검합니다. Windows에서는 PC에 설치된 백신의 AMSI 검사도 거칩니다.
  4. 승인 후 꺼내기 — 격리함에서 한 번 더 승인해야 보관함(다운로드 폴더)으로 나옵니다. 이때 해시를 다시 확인하고, 실행 권한을 제거하며, OS 격리 표식(Windows MotW · macOS quarantine)을 붙입니다.
  • 받는 쪽 말풍선에는 완료 — 격리됨 · 위험 Data처럼 검사 등급이 붙습니다.
  • 이미지는 격리된 상태에서도 미리보기만 볼 수 있습니다(SVG는 지원하지 않음).
  • 앱은 받은 파일을 실행하지 않고, 링크를 자동으로 열지 않으며, 압축 파일을 자동으로 풀지 않습니다.

주의 “검사됨(탐지 없음)“은 설치된 백신의 판정일 뿐 안전을 보증하지 않습니다. 꺼낸 파일을 실행할지는 사용자 판단이며, 이후는 운영체제의 보호 기능(SmartScreen · Gatekeeper)이 이어받습니다.

다른 네트워크 상대와 파일 주고받기

  • 서버 경유·인터넷 경유 상대에게 파일을 보내는 것은 기본으로 꺼져 있습니다. 설정 › 네트워크 › 서버의 “via server 상대에게 파일 전송”, “via internet 상대에게 파일 전송” 을 켜야 합니다. 인터넷 직결 상대는 지문 대조(/verify)를 마쳐도 보내기가 열립니다.
  • 받는 것은 경로와 관계없이 제한하지 않습니다. 대신 승인 창에 경로 배지가 표시되므로 보고 결정하세요.
  • 내 기기(같은 사용자) 사이에는 이 제약이 없습니다.

그룹 대화

그룹 만들기

  1. 목록에서 ⌘/Ctrl+클릭으로 상대를 여러 명 선택합니다(⌘/Ctrl+Space로도 선택을 토글할 수 있습니다).
  2. 우클릭 → 그룹 만들기 (N명) 을 누릅니다.
  3. 방이 만들어지고 구성원 전원에게 초대가 갑니다. 초대는 받는 사람이 수락해야 그 사람 화면에 방이 생깁니다.

그룹 대화

그룹 초대 받기와 다시 초대하기

  • 초대 카드에서 [나중에] · [거절] · [수락] 을 고릅니다(v0.8.0). 이 그룹 초대 다시 받지 않기를 체크하면 이후 초대를 받지 않으며, 수신 제한 목록에서 풀 수 있습니다.
  • 거절은 잠시(기본 5초) 되돌릴 수 있습니다.
  • 소유자는 구성원 목록에서 초대 상태를 보고 재초대합니다(기본 24시간 간격). 초대는 기본 7일 뒤 만료됩니다. 값은 설정 › 고급 › 그룹 초대에서 바꿉니다.

그룹에서 할 수 있는 일

  • 그룹 행을 열면 한 방에서 대화합니다. 말풍선에는 보낸 사람 이름이 붙습니다.
  • 파일도 방 단위로 보냅니다. 구성원별로 각자 승인하며, 보내는 쪽에는 합산 배너와 진행 카운터가 표시됩니다. 아직 왕래가 없는 구성원은 자동 승인이 아니라 수동 승인입니다. 전송이 끊기면 그 구성원이 다시 붙을 때 같은 그룹 경로로 이어서 보냅니다(v0.8.0).
  • 그룹 기록도 1:1 대화와 똑같이 암호화되어 저장되고 재시작 후 복원됩니다.
  • 그룹 행 우클릭 메뉴에서: 이름 변경 · 선택한 사람 초대 · 선택한 사람 제외 · 초대 정책 전환(소유자만 초대 / 구성원 초대 허용) · 그룹 해산(소유자) · 그룹 나가기.

참고 그룹 대화도 종단 암호화입니다. 별도의 그룹 키 없이 각 구성원과의 1:1 암호화 세션으로 나눠 보내는 방식이라, 구성원 수만큼 전송량이 늘어납니다.

상대 확인 — 신원과 지문 대조

신원은 이름이 아니라 키 지문

Nexa Beep에서 상대를 구별하는 기준은 기기 키 지문입니다. 이름과 IP 주소는 근거가 아닙니다.

  • 처음 연결할 때 상대의 키를 기억(핀, TOFU)하고, 이후 같은 키만 같은 상대로 인정합니다.
  • 이름이 같아도 키가 다르면 다른 사람으로 취급하며, 이름 충돌 표식(⚠)이 붙습니다.
  • 핀 정보는 암호화되어 저장되므로 재시작해도 유지됩니다.

지문 대조로 “대조 완료” 만들기

처음 대화할 때는 회색 안내 “이 상대는 아직 지문 대조 전입니다” 가 붙습니다. 대조 없이도 대화는 항상 암호화되지만, 상대가 정말 그 사람인지 확신하려면 다음 순서로 확인합니다.

  1. 대화 창에서 /fingerprint를 입력해 내 지문과 상대 지문을 봅니다(또는 상대 프로필 카드에서 확인).
  2. 전화·대면 등 다른 경로로 상대와 지문을 맞춰 봅니다.
  3. 일치하면 /verify를 입력하거나 프로필 카드의 일치 확인 — 대조 완료로 표시를 누릅니다.

목록 배지가 파란 실선 배지로 바뀝니다. 대조 완료 상대는 알림이 정식 알림으로 올라오고(미검증 상대는 소리 없음), 인터넷 경유 파일 보내기 제한도 풀립니다.

주의 /verify는 대조를 대신해 주지 않습니다. 같은 대화 안에서 “확인했어?”라고 묻고 승격하면, 중간에서 가로채는 사람이 그 대답까지 대신할 수 있습니다. 반드시 다른 경로로 맞춰 보세요.

프로필 카드

목록 행 우클릭 → 프로필 보기로 엽니다.

프로필 카드

  • 이메일·전화 등은 상대가 공개한 항목만 보입니다.
  • 오른쪽 위 지문 복사 버튼: [64] = 전체 지문(⌘/Ctrl+K 직접 연결과 릴레이 연결에 쓰는 값), [8] = 짧은 지문.
  • 다중 기기 신원을 쓰는 상대는 사용자 줄(핸들)이 표시됩니다.

내 프로필

툴바 오른쪽 내 아바타를 누르면 내 프로필이 열립니다.

  • 사진 · 표시 이름 · 이메일 · 전화 · 소개글을 편집합니다. 사진은 고른 뒤 [적용] 을 눌러야 반영됩니다.
  • 항목마다 공개 여부를 켭니다(기본 전부 비공개). 공개한 항목만 연결된 상대에게 암호화 세션으로 전달됩니다. 이름·연락처는 LAN 발견 신호에 실리지 않습니다.
  • 같은 LAN의 상대와는 발견 즉시 프로필이 자동으로 동기화되어 변경이 바로 반영됩니다.

내 기기 묶기 — 다중 기기 신원

내 PC가 둘 이상일 때(예: 회사 PC와 노트북) 켜는 기능입니다. 기본은 꺼져 있습니다.

켜는 방법

  1. 설정 › 일반 › 사용자에서 다중 기기 신원 스위치를 켭니다. 핸들(짧은 공개 이름)과 페어링 암호가 기본값으로 채워지고 바로 인증됩니다.
  2. 다른 PC에서도 같은 스위치를 켜고 같은 핸들 · 같은 페어링 암호를 입력합니다.
  3. 두 PC가 서로를 “내 기기” 로 인식합니다. 목록 행에 보라색 배지가, 프로필 카드에 “내 기기 — 같은 사용자 키로 인증됨”이 표시됩니다.
  • 같은 LAN이면 서버 없이 바로 됩니다. 다른 네트워크라면 양쪽 모두 릴레이 서버를 켜 둔 상태에서 만납니다(서버는 만남 지점 역할만 하고 내용과 키는 보지 못합니다).
  • 처음 만나면 두 PC의 사용자 ID가 먼저 만든 쪽으로 자동으로 합쳐집니다(30초 안팎).
  • 페어링 암호는 내 기기끼리만 아는 비밀입니다. 서버로 가지 않고 각 PC에 암호화되어 저장됩니다. 생성 아이콘(🔄)은 한 번 누르면 빨간색으로 바뀌고 5초 안에 한 번 더 눌러야 새 암호로 바뀝니다. 눈 아이콘은 가림/보임 전환입니다.

내 기기끼리 달라지는 점

기능내용버전
승인·지문 대조 생략내 기기끼리는 승인 창과 지문 대조 없이 신뢰합니다. 파일도 승인 없이 받습니다(격리·검사 단계는 그대로)v0.2.15
발신 사본내 다른 기기에서 보낸 메시지가 이 기기의 같은 대화에도 보입니다v0.4.0
상대 기기 접기상대가 여러 기기를 쓰면 한 줄 · 한 대화로 접혀 보이고, 내 메시지는 상대의 켜져 있는 기기 전부에 전달됩니다v0.4.0
따라잡기꺼져 있던 기기를 켜면 그동안 다른 기기에서 주고받은 대화가 형제 기기에게서 자동으로 들어옵니다(기본 대화당 최근 200줄 · 연결당 1MiB · 설정 › 사용자에서 50500줄, 116MiB로 변경 — v0.6.0). 시간 순서대로 제자리에 놓입니다. 답장 참조도 함께 옵니다(v0.8.0)v0.5.0
읽음 동기한 기기에서 읽은 대화는 다른 기기에서도 안 읽음 배지가 사라집니다v0.5.0
꺼져 있는 내 기기오프라인인 내 기기도 마지막 서명 기기 목록을 근거로 내 기기로 봅니다. 설정 › 고급 › 신뢰 판정 › 오프라인 시 마지막 서명 사용(기본 켬)에서 끌 수 있습니다v0.6.0

참고 따라잡기는 텍스트 대화만 옮깁니다. 파일 본문은 받은 기기에만 있습니다.

내 기기 목록과 잃어버린 기기

설정 › 사용자 › 내 기기 목록 [열기…] (v0.3.1)에서 묶인 기기를 표로 봅니다 — 이름 · 짧은 지문 · 상태(이 기기 / 접속 중 / 오프라인) · 마지막 접속.

  • 기기 하나만 빼기: 그 행의 [폐기] 를 5초 안에 두 번 누릅니다. 사용자 키가 새로 발급되고, 지목한 기기만 빠지며 나머지 기기는 새 키를 자동으로 받습니다.
  • 사용자 키 교체(전부 정리): 설정 › 사용자의 사용자 키 교체 버튼(빨간색 → 5초 안 재클릭). 이 PC만 남기고 다른 기기는 모두 폐기됩니다. 이어서 페어링 암호를 바꾸고, 아직 가진 기기마다 새 암호를 넣어 다시 묶습니다. 대화 상대 쪽에서는 옛 ID가 새 ID로 자동으로 이어집니다.

참고 핸들은 라벨일 뿐 신원이 아닙니다. 같은 핸들을 다른 사용자 키가 쓰면 목록에 ⚠ 표식이 붙습니다. 핸들이나 암호 값을 바꾸면 인증이 풀리고 다시 인증할 때까지 기능이 멈춥니다(암호를 바꿔도 사용자 ID는 그대로입니다).

수신 제한

받지 않을 상대를 고르는 기능입니다(v0.8.0). 받는 쪽에서 조용히 버리므로 차단한 상대는 목록에서 사라지고, 상대는 차단 사실을 알 수 없습니다.

상대 차단하기

목록에서 상대를 우클릭해 차단을 누르고 1시간 · 24시간 · 7일 · 영구 중에서 고릅니다. 이름이 아니라 기기 키 기준으로 판정합니다.

수신 제한 목록

설정 › 고급 › 수신 제한에서 다룹니다.

항목동작
수신 제한 목록…상대 · IP · 이름 · 그룹 초대 차단을 모아 보고, 행을 눌러 해제
IP·대역 차단 추가…이 주소의 연결·발견을 핸드셰이크 전에 끊음(기본 24시간)
표시 이름 차단 추가…정규화 후 정확히 같은 이름의 광고를 무시

주의 DHCP 재할당이나 NAT 공유로 다른 사람이 같은 IP를 쓸 수 있습니다. 표시 이름 차단은 가장 약한 방법으로, 상대가 이름을 바꾸면 풀립니다.

자동 임시 차단

한 상대가 10초 안에 메시지를 50건 넘게 보내거나, 한 IP가 1분에 30회 넘게 연결해 오면 기본 10분간 자동으로 차단합니다. 기준(메시지 20·50·100 · 연결 10·30·60 · 끄기)과 기간(5·10·30·60분)은 설정에서 바꿉니다. 내 기기는 세지 않으며, 영구 차단은 항상 사람이 정합니다.

처음 보는 상대의 메시지 보류

설정 › 고급 › 수신 제한 › 처음 보는 상대의 메시지는 승인 후 받기(기본 끔)를 켜면 대화한 적 없는 상대의 첫 메시지가 수신 요청 카드(수락 · 무시 · 이 상대 차단)로 옵니다. 수락 전에는 대화창·알림·기록에 닿지 않습니다. 내 기기 · 목록 고정 · 수동 주소 상대는 예외입니다.

주소로 직접 연결

발견 신호가 닿지 않는 상대(다른 서브넷, 멀티캐스트가 막힌 망 등)는 주소로 직접 등록할 수 있습니다.

  1. 툴바의 주소로 추가 버튼 또는 ⌘/Ctrl+K 를 누릅니다.
  2. 상대의 주소를 입력합니다.
    • IPv4: 10.0.0.5 또는 10.0.0.5:47200 (포트를 생략하면 47200)
    • IPv6: [fe80::1]:47200
    • 도메인(DDNS 등)
    • 릴레이 서버를 켠 상태라면 상대의 64자리 지문
  3. 연결되면 목록에 추가되고, 대화 창을 닫아도 목록에 남아 기억한 주소로 다시 연결합니다.
  • 연결이 끊기면 5초 → 15초 → 60초 → 5분 간격으로 자동 재연결을 시도하고, 상한에 도달하면 멈춥니다(행을 클릭하면 재개).
  • 전원 차단·망 단절처럼 조용히 끊긴 연결도 약 22초 안에 감지해 빨간 점으로 표시합니다.

릴레이 서버로 다른 네트워크의 상대와 연결

같은 LAN이 아닌 상대(집 ↔ 회사 등)와는 릴레이 서버를 거칩니다. 이 기능은 선택 사항이며 켜지 않으면 앱은 인터넷으로 아무것도 보내지 않습니다.

서버가 하는 일과 못 하는 일

하는 일하지 못하는 일
상대가 접속해 있는지 알려 주기(매일 바뀌는 식별자 사용)대화 내용 읽기 — 모든 대화는 두 기기 사이 종단 암호화
두 기기가 서로의 공인 주소를 알도록 중개사용자 명부 만들기 — 상대 지문을 이미 아는 사람만 찾을 수 있음
직접 연결(UDP 홀펀칭) 조율 — 성공하면 서버는 경로에서 빠짐메시지·파일 저장 — 아무것도 저장하지 않음
직접 연결이 안 되면 암호문을 대신 전달(연결당 기본 1MiB/s)몰래 서버 키 바꾸기 — 키가 바뀌면 앱이 접속을 멈추고 경고

참고 서버는 내용을 모르더라도 “어떤 식별자가 언제 누구와 연결했는가”라는 메타데이터와 공인 IP 주소는 알게 됩니다.

연결 방법

  1. 설정 › 네트워크 › 서버에서 서버 모드를 관리형(Managed) 으로 바꿉니다. 주소·포트는 기본값이 이미 공식 서버(beepd.sosomlab.com, 포트 47300)입니다.
  2. [Test] 를 한 번 누릅니다. 모드를 바꾸거나 값을 바꾸는 것만으로는 접속하지 않으며, 테스트 성공만이 접속을 엽니다. 성공하면 저장되어 이후 부팅·재접속은 자동입니다.
  3. 상태 메시지가 ”✓ Server verified — beepd.sosomlab.com:47300 (key 5c5ee932)” (초록 배경)인지 확인합니다. 접속 중에는 툴바에 서버 연결 표시가 뜹니다(누르면 서버 설정).

공식 서버의 신원(핀) 값은 다음과 같습니다. 첫 접속 때 표시되는 값이 이와 다르면 접속하지 마세요.

5c5ee9321439f0292f90f6d7b949e5be3e8dc94cfc6a142208e957bf83c0cb5e

상대 찾기

  • 자동 목록 — 설정의 “서버 사용자에게 나를 표시”(관리형일 때 기본 켜짐)를 켠 사용자끼리는 서버에 붙는 순간 서로 목록에 나타납니다. 이때 프로필에서 공개로 둔 항목만(이름·이메일·소개) 연결 전에도 보입니다. 이 설정을 끄면 나도 보이지 않고 다른 사람 목록도 받지 않습니다.
  • 지문으로 직접 연결 — 상대의 64자리 지문을 ⌘/Ctrl+K 창에 붙여넣습니다. 내 지문은 프로필 오른쪽 위 [64] 복사 버튼이나 nexa-beep --whoami의 full = 줄에서 얻습니다.

연결되면 대화 헤더에 서버 경유(파랑) 배지가 붙습니다. 메시지는 바로 주고받을 수 있으며, 파일 보내기는 다른 네트워크 상대와 파일 주고받기를 참고하세요.

CLI에서 릴레이 사용

# 수신 대기 + 내 지문 출력
nexa-beep --chat-live 내이름 --server beepd.sosomlab.com:47300

# 지문으로 상대에게 연결
nexa-beep --chat-connect-via <상대지문64자리> --server beepd.sosomlab.com:47300

서버 직접 운영 (nexa-beepd)

공식 서버는 편의일 뿐 특별한 권한이 없습니다. 같은 프로그램 nexa-beepd로 누구나 자기 서버를 세울 수 있습니다. 서버는 클라이언트와 별도의 beepd-v* 릴리스로 배포되며, 현재 버전은 beepd-v0.2.6(2026-09-17)입니다.

설치

# macOS(Apple Silicon) · Linux — Homebrew
brew install kiros33/tap/nexa-beepd

# Windows — Chocolatey
choco install nexa-beepd
# Linux 릴리스 자산 직접(musl 정적 바이너리 — 배포판 무관)
curl -fsSLO https://github.com/SosomLab/nexa-beep/releases/download/beepd-v0.2.6/nexa-beepd-0.2.6-linux-x64.tar.gz
tar -xzf nexa-beepd-0.2.6-linux-x64.tar.gz
sudo install -D -m 0755 nexa-beepd-0.2.6-linux-x64/nexa-beepd /opt/beepd/nexa-beepd
자산대상
nexa-beepd-*-linux-x64.tar.gzLinux x86_64(정적 바이너리)
nexa-beepd-*-linux-arm64.tar.gzLinux aarch64(정적 바이너리)
nexa-beepd-*-windows-x64.zipWindows x64(콘솔 프로그램)
nexa-beepd-*-macos-arm64.tar.gzmacOS Apple Silicon 전용(Intel Mac 자산 없음)

참고 winget 패키지(SosomLab.NexaBeepd)는 검수 대기 중입니다(저장소 문서 기준, 2026-10-10). Chocolatey의 nexa-beepd는 0.2.6이 게시된 것으로 기록되어 있습니다.

실행과 옵션

sudo /opt/beepd/nexa-beepd --port 47300 --key /opt/beepd/beepd.key

첫 실행 때 서버 키를 만들고 서버 신원(핀) 64자리 값을 출력합니다. 이 값을 반드시 기록해 사용자에게 알려 주세요.

옵션기본값뜻
--port <N>47300TCP(제어·중계)와 UDP(주소 관측)가 같은 번호를 씁니다
--bind <IP>0.0.0.0바인드 주소
--key <경로>beepd.key(작업 폴더)서버 신원 키. 없으면 생성
--rate <값>1m연결당 릴레이 속도 상한(B/s) — auto · 100k · 1m · 0(무제한) 등
--verbose끔봉투 수준 로그(연결 번호 · 식별자 앞 4바이트 · 바이트 수만 — 이름·내용·키 없음)

Linux 상주 등록(systemd 예)

[Unit]
Description=nexa-beepd relay server
After=network-online.target
Wants=network-online.target

[Service]
User=beepd
WorkingDirectory=/opt/beepd
ExecStart=/opt/beepd/nexa-beepd --port 47300 --key /opt/beepd/beepd.key
Restart=on-failure
MemoryMax=128M

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now beepd
sudo journalctl -u beepd -f      # 로그(첫 블록에 핀 값)

방화벽 — TCP와 UDP 모두, 두 겹 모두

같은 포트 번호(기본 47300)로 TCP와 UDP를 둘 다 열어야 합니다. 클라우드의 보안 규칙과 OS 방화벽 양쪽 모두 열어야 합니다. UDP를 빠뜨리면 직접 연결(홀펀칭)이 조용히 실패하고 느린 릴레이 경로만 쓰게 됩니다.

# RHEL · Oracle Linux 계열(firewalld)
sudo firewall-cmd --permanent --add-port=47300/tcp --add-port=47300/udp
sudo firewall-cmd --reload

# Ubuntu(ufw)
sudo ufw allow 47300/tcp && sudo ufw allow 47300/udp
# Windows(관리자 PowerShell)
New-NetFirewallRule -DisplayName "beepd 47300 TCP" -Direction Inbound -Protocol TCP -LocalPort 47300 -Action Allow
New-NetFirewallRule -DisplayName "beepd 47300 UDP" -Direction Inbound -Protocol UDP -LocalPort 47300 -Action Allow

서버 키 관리

  • beepd.key가 서버의 정체입니다. 사용자 앱은 첫 접속 때 이 키를 기억하고, 이후 키가 다르면 접속을 멈추고 경고합니다.
  • 서버를 옮기거나 다시 만들 때는 beepd.key를 먼저 백업해 새 서버에 그대로 복원하세요. 키를 잃으면 모든 사용자에게 핀 불일치 경고가 뜹니다.
  • 사용자에게 알려 줄 값은 주소:포트와 핀 64자리 두 가지입니다. 사용자는 설정 › 서버의 주소에 그 값을 넣고 [Test]를 누르면 됩니다.

참고 서버는 아무것도 저장하지 않으므로 재시작해도 잃는 것은 진행 중이던 연결뿐이며, 클라이언트가 자동으로 다시 접속합니다. 저장소 기록상 1GB 메모리의 무료 클라우드 VM에서 상주 메모리 수 MB로 운영되고 있습니다.

트레이와 알림

트레이(메뉴바) 상주

앱은 Windows·Linux의 트레이, macOS의 메뉴바에 내 아바타 아이콘으로 상주합니다.

메뉴바 메뉴

  • 아이콘 메뉴(Windows·Linux = 우클릭 · macOS = 클릭): 맨 위에 프로그램 이름과 버전(v0.7.0), 이어서 열기 · 설정… · 종료
  • 열기(또는 Windows·Linux에서 아이콘 클릭)로 창을 다시 부릅니다.
  • 설정…(v0.3.0)은 창이 트레이로 내려가 있어도 설정 화면을 바로 엽니다.
  • 아이콘 귀퉁이 점으로 연결 상태를 보여 줍니다(v0.3.0): 초록 = 서버 연결 · 파랑 = LAN 직결 · 주황 = 전송 중. 내 상태가 오프라인이면 아이콘이 흐려지고 회색 점이 붙습니다(v0.6.1).
설정동작
닫기 버튼 = 트레이로켜면 X를 눌러도 종료하지 않고 트레이로 내려갑니다(기본 끔). 이때 종료는 트레이 메뉴나 메뉴 › 종료로 합니다
트레이에 있는 동안 작업표시줄/Dock에서 숨김트레이로 내려가면 작업표시줄·Dock에서 사라집니다(기본 켬). 끄면 최소화 상태로 남습니다
시스템 시작 시 자동 실행로그인할 때 함께 실행됩니다(기본 켬). 관리자 권한 없이 사용자 수준으로 등록됩니다. 설치본·포터블이 각자 별도로 등록되므로 서로 간섭하지 않습니다

알림

  • 앱이 뒤에 있을 때 새 메시지·파일 요청을 OS 데스크톱 알림으로 보여 줍니다. 알림을 클릭하면 해당 대화가 열립니다.
  • 지문 대조를 하지 않은 상대의 알림은 소리 없이 표시됩니다.
  • 알림에 메시지 내용 표시는 기본으로 꺼져 있습니다(화면 공유·녹화 중 노출 방지). 설정 › 대화 › 알림에서 켤 수 있습니다.
  • 읽지 않은 메시지가 있으면 주 창 제목에 “새 메시지 N”이 표시됩니다.

설정

여는 법

  • 메인 창 메뉴 › 설정
  • 단축키 ⌘/Ctrl+, (어느 창에서나)
  • 트레이(메뉴바) 아이콘 메뉴 › 설정…

툴바 오른쪽 끝 아바타는 설정이 아니라 내 프로필입니다. 설정은 바꾸는 즉시 적용되고 잠시 뒤 자동 저장됩니다.

화면 구성(v0.3.0 개편)

  • 왼쪽 그룹 트리 — 여섯 그룹과 그 아래 카테고리. 그룹을 누르면 그룹 전체가, 카테고리를 누르면 그것만 보입니다.
  • 위쪽 검색 — 여러 단어를 넣으면 모두 들어간 항목만 남습니다(AND). 제목·설명·키 이름·그룹 이름을 모두 찾습니다. 한글은 조합 중에도 찾습니다(“ㅌ”만 쳐도 “테마”). Enter로 검색어를 기록하고 **↑/↓**로 지난 검색어를 불러옵니다.
  • 카드 하나 = 설정 하나 — 제목과 설명, 키 이름(복사 버튼), 컨트롤과 [초기화](기본값과 다를 때만), “기본값: …” 표시.
  • 흐린 카드 — 다른 설정에 묶여 있어 지금은 쓸 수 없는 항목입니다. 무엇을 먼저 켜야 하는지 카드에 적혀 있습니다.
  • [고급 설정] 스위치(아래쪽, 기본 꺼짐) — 입력기 미세 조정·시간 상수처럼 거의 손대지 않는 값은 이 스위치를 켜야 보입니다.
  • [변경] 스위치(아래쪽 · v0.7.0) — 기본값과 다른 설정만 모든 카테고리에서 모아 보입니다. 바뀐 카드에는 왼쪽 강조 막대가 붙습니다.
  • 설정 창의 위치와 크기는 다음에 열 때 그대로입니다.

그룹별 주요 항목

그룹 › 카테고리주요 항목
일반 › 시스템내 상태(온라인/오프라인) · 언어(기본 = 시스템 언어 따름 · 한국어/English/中文/日本語, 그 외 언어는 영어) · 테마(시스템/라이트/다크 · 기본 시스템) · 크기 배율 · 자동 실행 · 트레이 관련 2종
일반 › 프로필표시 이름 · 사진 · 이메일 · 전화 · 소개 · 항목별 공개 토글 · 신원 키 백업/복원
일반 › 사용자다중 기기 신원(핸들 · 페어링 암호 · 사용자 키 교체 · 내 기기 목록) · 따라잡기 줄 수 · 세션당 전송량
대화 › 대화대화 창 모드(단일/별도) · 24시간 표기 · 날짜 형식 · 전달 확인 보내기 · 읽음 확인 보내기
대화 › 알림데스크톱 알림 · 알림에 내용 표시 · 공지 받지 않기
대화 › 그룹그룹 구성원 초대 관련 설정
모양 › 모양 · 색 · 글꼴 · 목록다크/라이트별 강조색·말풍선·배경·글자색 · 글꼴과 크기 · 목록 정렬 · 빠른 찾기 · 스크롤바 자동 숨김 · 툴팁 지연 · 고속 스크롤 · 순간 메시지
파일승인 정책(수동/자동/차단) · 자동 승인 기본 기간 · 송수신 속도 · 송신/수신 크기 상한(수신 기본 512MiB) · 요청당 파일 수(기본 5) · 응답 시간 초과(기본 60초) · 정지 방치 자동 취소(기본 2분)
네트워크 › 네트워크세션 포트(기본 47200)
네트워크 › 서버서버 모드(관리 안 함 = LAN만 / 관리형) · 주소 · 포트 · [Test] · 서버 사용자에게 나를 표시 · via server / via internet 상대에게 파일 전송
고급 › 고급설정 백업/복원/초기화 · 상태 로그(기본 끔) · 개발자 상세 로그(기본 끔) · 로그 창 · 신뢰 판정 · 수신 제한 · 그룹 초대(재초대 간격 · 초대 만료 · 거절 실행 취소) · 네트워크 점검 · 라이선스 정보
고급 › IME한글 입력기 미세 조정(고급 설정 스위치를 켜야 보임)

참고 언어·테마 목록의 “시스템” 항목은 지금 OS 값을 함께 보여 줍니다(예: “시스템 (한국어)”, “시스템 (다크)”). 테마를 시스템으로 두면 OS의 다크 모드 전환을 실시간으로 따라갑니다.

설정 백업 · 복원 · 초기화

설정 › 고급에서 설정 전체를 파일(*.cfg)로 백업하거나 복원할 수 있습니다. 초기화는 필터·창 크기까지 기본값으로 되돌리되 프로필 정보는 보존합니다.

내보내기 · 가져오기 · JSON 편집

설정 창 아래쪽 버튼입니다(v0.7.0).

버튼동작
내보내기…설정 전체를 고른 위치에 JSON 파일로 저장
가져오기…JSON 파일을 읽어 즉시 적용. 모르는 키는 지우지 않고 보존
JSON 편집…데이터 폴더에 settings.json을 만들어 기본 프로그램으로 열고, 저장할 때마다 바뀐 키만 바로 반영

주의 이 JSON은 평문이며 페어링 암호가 값 그대로 들어갑니다(이메일·전화는 들어가지 않습니다). 다른 사람과 공유하지 말고, 내보낸 파일은 안전한 곳에 두세요. settings.json은 편집이 끝나도 데이터 폴더에 남으므로 다 쓰면 지우는 것이 좋습니다.

고속 스크롤과 순간 메시지

  • 고속 스크롤(설정 › 모양 › 고속 스크롤 · 기본 켬 · v0.7.0) — 같은 방향으로 휠을 빠르게 이어 돌리면 이동량이 배수로 커집니다. 관성이 없어 멈추면 바로 멈춥니다. 대화·목록·설정 창에 공통입니다. 속도는 느림(×4) · 보통(×8) · 빠름(×16 · 기본) · 터보(×32)이고, ×N 배지의 표시·위치·시간도 바꿀 수 있습니다.
  • 순간 메시지(설정 › 모양 › 순간 메시지 · 기본 켬 · v0.7.0) — “복사됨” 같은 짧은 캡슐을 대화 위에 보였다가 서서히 지웁니다. 켜기·위치·유지/사라지는 시간·배경/글자 색·불투명도를 바꿀 수 있습니다.

파일 고르기와 저장하기

v0.3.0부터 파일이나 폴더를 고르는 모든 곳(신원 키·설정·대화 기록 백업/복원, 프로필 사진, 라이선스 파일)이 같은 대화상자를 씁니다. 세 OS에서 모양과 동작이 같습니다.

  • 왼쪽 장소 — 홈 · 바탕 화면 · 문서 · 다운로드 · 드라이브 · 최근 폴더
  • 위쪽 경로 줄 — ← → ↑(상위) · 홈 · 경로 직접 입력(~와 환경 변수 사용 가능, Enter = 이동)
  • 가운데 목록 — 열 제목 클릭 = 정렬 · 더블클릭/Enter = 폴더 들어가기·파일 확정 · Backspace = 상위 폴더 · 우클릭 = 열기·경로 복사·이름 복사·새로 고침
  • 아래쪽 — 파일 이름 · 형식 필터 · 숨김 파일 표시 · [새 폴더]
  • Esc · [취소] · 창 닫기 = 아무것도 바뀌지 않습니다. 다음에 열면 직전 폴더에서 시작합니다.
하는 일대화상자형식참고
신원 키 백업저장*.key기본 이름 nexa-beep-identity-<지문>.key. 같은 이름이 있으면 5초 안에 한 번 더 눌러야 덮어씀
신원 키 복원열기*.key—
설정 백업 / 복원저장 / 열기*.cfg백업은 신원 키 백업과 같은 방식
설정 내보내기 / 가져오기저장 / 열기*.jsonv0.7.0 · 위 내보내기 · 가져오기 · JSON 편집 참고
프로필 사진열기png · jpg · gif · bmp · webp · ico고른 뒤 [적용]
대화 기록 백업폴더 고르기—고른 폴더 안에 nexa-beep-history-<지문> 폴더를 만들어 담음
대화 기록 복원열기(여러 개)*.seg백업 폴더에서 ⌘/Ctrl+A로 전부 고르면 폴더째 복원
라이선스 파일열기*.license라이선스 참고

라이선스

비상업적 사용은 무료이며 라이선스 파일이 필요 없습니다(상태 = “무료 — 비상업적 사용”). 상업적으로 쓰려면 라이선스를 받습니다. 라이선스가 없어도 어떤 기능도 잠기지 않으며, 앱은 라이선스 확인을 위해 어디에도 접속하지 않습니다(파일과 서명만 확인).

라이선스 받기와 설치

  1. 도움말 › 라이선스… 를 엽니다.
  2. 이름 · 이메일을 입력하고 [요청 코드 복사] 를 누릅니다. 한 줄 코드가 클립보드에 들어갑니다(이 PC의 기기 코드는 해시 형태로만 담깁니다).
  3. 창에 적힌 이메일 주소로 그 코드를 보냅니다.
  4. 받은 nexa-beep.license 파일을 저장한 뒤 [라이선스 파일 열기…] 로 고릅니다.
  5. 검증을 통과하면 설치되고, 위쪽 상태 띠가 “정식 라이선스 — pro”처럼 바뀝니다.
  • 다른 PC용 · 다른 제품용 · 손상된 파일은 설치하지 않고 이유를 보여 줍니다(앱은 그대로 무료로 동작).
  • [제거] = 이 사용자의 라이선스 파일 삭제.
  • 설정 › 고급 › 라이선스에서 상태 · 라이선스 ID · 파일 위치 · 기기 코드를 볼 수 있습니다.

터미널 명령

nexa-beep --license status                  # 상태
nexa-beep --license request 이름 메일주소    # 요청 코드 출력
nexa-beep --license install nexa-beep.license
nexa-beep --license remove
nexa-beep --license path                    # 파일 위치

종료 코드: 0 = 성공 · 1 = 거부/실패 · 2 = 사용법 오류.

라이선스 파일 위치는 데이터 폴더의 license/이며(포터블 = 실행 파일 옆 data/license/), 없으면 기기 공용 위치를 봅니다 — Windows %ProgramData%\nexa\nexa-beep · macOS /Library/Application Support/nexa/nexa-beep · Linux /etc/nexa/nexa-beep.

CLI 단말

창 없이 터미널만으로 참여할 수 있습니다. 모든 상대에게서 메시지를 받되, 대화는 직접 연결한 한 명과 합니다.

nexa-beep --chat-live 내이름

대기 중 명령

명령동작
/peers (/list)발견된 상대 목록(번호)
/connect <번호>목록에서 골라 1:1 대화 시작
/connect <host[:port]>IP로 직접 연결(포트 생략 = 47200)
/quit종료

대화 중 명령

입력동작
한 줄 입력메시지 전송
/send <파일…>파일 전송(공백으로 여러 개 · 요청당 최대 5)
/accept · /reject받은 파일 요청 전체 승인/거절
/quit대화만 끝내고 목록으로 복귀

상대가 먼저 걸어온 연결은 받아서 유지하며, 메시지가 {지문}(수신 전용)> 형태로 표시됩니다. 대화로 전환하려면 /connect를 씁니다.

참고 Windows에서 cmd나 PowerShell로 --chat-live를 실행하면 앱이 자기 콘솔 창을 새로 엽니다. Git Bash나 파이프에서는 그 자리에서 실행됩니다.

단축키

표기 ⌘/Ctrl은 macOS에서는 ⌘, Windows·Linux에서는 Ctrl입니다. 한글 자판 상태에서도 물리 키 위치로 인식합니다.

전역

단축키동작
⌘/Ctrl+,설정 열기
⌘/Ctrl+K주소(또는 지문)로 직접 연결
⌘/Ctrl+Y받은 파일 요청 승인(요청이 떠 있을 때)
⌘/Ctrl+N받은 파일 요청 거절(요청이 떠 있을 때)

목록 화면

단축키동작
Enter · 더블클릭선택한 상대와 대화 열기
↑ / ↓선택 이동
문자 입력빠른 찾기(이름으로 이동)
⌘/Ctrl+클릭여러 명 선택
⌘/Ctrl+Space선택 토글
한/영 · 오른쪽 Alt · Shift+Space(Linux) 빠른 찾기 한글/영문 전환

대화 창

단축키동작
Enter전송
Shift+Enter줄바꿈
Esc답장 취소 → 글자 선택 해제 → 목록으로 돌아가기(단일 창 모드) 순으로 한 단계씩
⌘/Ctrl+C말풍선에서 고른 글자 복사(v0.7.0)
더블클릭(말풍선)단어 선택(v0.7.0)
⌘/Ctrl+V붙여넣기 — 클립보드에 이미지가 있으면 PNG 파일로 전송

텍스트 편집(모든 입력란)

단축키동작
⌘/Ctrl+A전체 선택
⌘/Ctrl+C · X · V복사 · 잘라내기 · 붙여넣기
⌘/Ctrl+Backspace줄 처음까지 삭제
Home · End줄 처음 · 끝
Ctrl+← / → (Windows·Linux) · Option+← / → (macOS)단어 단위 이동

설정 화면과 파일 대화상자

단축키동작
Enter (설정 검색란)검색어 기록
↑ / ↓ (설정 검색란)지난 검색어 불러오기
Backspace (파일 대화상자 목록)상위 폴더
Enter · 더블클릭 (파일 대화상자)폴더 들어가기 · 파일 확정
⌘/Ctrl+A (기록 복원 대화상자)폴더 안 파일 전부 선택
Esc취소

데이터와 개인정보

데이터가 저장되는 곳

설치 형태데이터 폴더
포터블실행 파일 옆 data/
Windows 설치본설치 폴더(%LOCALAPPDATA%\Programs\NexaBeep) 옆 data\ — 실행 파일 옆 폴더에 쓸 수 있으면 그곳을 씁니다
macOS (.app · Homebrew)~/Library/Application Support/nexa-beep
Linux (deb · rpm)~/.config/nexa-beep
위 위치에 쓸 수 없을 때홈 폴더의 .nexa-beep

참고 실제 위치는 nexa-beep --whoami로 확인하는 것이 가장 정확합니다. 지문·이름·실행 경로·데이터 경로를 함께 보여 줍니다.

저장되는 데이터와 보호 방식

항목보호 방식
설정(settings.cfg)평문(민감하지 않은 값만)
신원 키(identity.key)평문(다른 파일을 암호화하는 원료라 자신을 감쌀 수 없음) · 소유자만 읽기
사용자 키 · 페어링 암호(다중 기기 신원)암호화
신뢰 핀암호화
대화 기록(1:1 · 그룹) · 오프라인 큐암호화 · 대화 삭제 = 데이터 키 폐기(복구 불가)
격리된 수신 파일(.beepq)암호화
프로필 연락처 · 프로필 이미지 캐시암호화
수신 제한 목록(blocks.seg · v0.8.0~)암호화
상태 로그 · 개발자 상세 로그(선택 · 기본 끔)평문(켠 경우에만). 상세 로그는 지문 앞자리·길이·판정값 위주로 기록
crash.log(v0.6.1~)평문 · 소유자만 읽기. 앱이 오류로 꺼질 때 시각·버전·코드 위치·오류 메시지 기록
설정 JSON(settings.json · 내보낸 파일, v0.7.0~)평문 · 소유자만 읽기. 페어링 암호가 값 그대로 포함(사용자가 내보내기·JSON 편집을 쓸 때만 생김)
  • 비밀 파일은 v0.2.15부터 소유자만 읽고 쓸 수 있게(Unix 0600) 만들어집니다.
  • 앱에는 분석·텔레메트리·광고·추적 기능이 없고, 계정 가입도 없습니다.

네트워크로 나가는 것

  • LAN 발견 신호(암호화되지 않음): 기기 공개키 · 표시 이름 · 세션 포트 · 프로필 공개 여부 표시. 이메일·전화·실명·메시지는 실리지 않습니다.
  • 대화 세션: 모든 메시지·파일·프로필·확인 신호는 Noise_XX 암호화 세션으로만 오갑니다.
  • 릴레이 서버: 직접 켰을 때만 통신합니다. 서버가 받는 정보와 취급은 개인정보처리방침에 정리되어 있습니다.
  • 다중 기기 신원을 켜면 내 기기끼리 암호화 세션 안에서 사용자 키·기기 목록·대화 사본·따라잡기 기록·읽음 상태를 주고받습니다(v0.4.0~v0.5.0).
  • 답장에는 원문 발췌(최대 120자)가 함께 실려 대화 상대에게 전달됩니다(암호화 세션 · v0.7.0).
  • 앱 버전은 프로필 공개 설정과 무관하게 연결된 상대에게 암호화 세션으로 전달됩니다. 버전 문자열뿐이며 기기·OS 정보는 없습니다(v0.8.0).

신원 키 백업 — 기기를 바꾸거나 포맷하기 전에

identity.key가 곧 나의 신원입니다. 이 파일을 잃으면 다시 설치했을 때 상대에게 다른 사람으로 보이고, 기존 핀·격리 파일도 열 수 없습니다.

  1. 설정 › 일반 › 프로필 › 신원 키 백업을 누릅니다.
  2. 저장 대화상자에서 안전한 위치에 저장합니다.
  3. 새 기기에서는 같은 위치의 신원 키 복원으로 불러옵니다.

주의 대화 기록은 신원 키를 따라가지 않습니다. 기록을 옮기려면 대화함의 기록 백업/복원을 따로 사용하세요. 다중 기기 신원을 쓰면 꺼져 있던 기기가 형제 기기에게서 최근 대화(기본 대화당 200줄)를 받아오지만, 전체 이력의 이전 수단은 아닙니다.

주의 데이터 폴더를 OneDrive 같은 동기화 폴더 안에 두면 충돌이나 지운 대화가 되살아나는 문제가 생길 수 있습니다. 앱은 이를 감지하면 경고만 합니다.

데이터 삭제

  • 대화 하나: 대화함에서 삭제(데이터 키 폐기)
  • 상대 하나: 목록 우클릭 → 목록에서 삭제
  • 전부: 앱을 종료하고 데이터 폴더를 삭제

참고 SSD 특성이나 사용자가 만든 백업 사본 때문에 지운 바이트가 물리적으로 남을 수 있습니다. 데이터 키를 폐기하므로 읽을 수는 없게 되지만, 물리적 삭제를 보장하지는 않습니다.

자세한 내용은 개인정보처리방침과 이용약관을 참고하세요.

문제 해결

증상확인할 것
상대가 목록에 없다같은 LAN인지(게스트 Wi-Fi·VLAN은 멀티캐스트를 막음) → 툴바 재발견 → 필터 바 On이 “온라인”만 보고 있지 않은지 → ⌘/Ctrl+K로 IP 직접 추가(같은 망) 또는 릴레이 서버(다른 망)
내가 상대에게 안 보인다방화벽이 UDP 47100(발견) · TCP 47200(세션)을 막는지 · 상태바의 수신 :포트 확인 · 한 PC에서 두 개를 실행해 포트가 겹치지 않았는지(--port)
기업 무선망에서 발견이 안 된다클라이언트 격리·IGMP 스누핑이 걸린 망에서는 자동 발견이 전부 막힐 수 있습니다. 주소로 직접 연결을 쓰세요
파일이 승인 대기에서 멈춘다상대가 승인 창에 응답하기를 기다리는 중 — 60초가 지나면 자동 취소. 아직 메시지를 주고받지 않은 상대는 자동 승인이어도 수동 승인이 됩니다(메시지를 한 번 주고받으면 풀림)
서버/인터넷 경유 상대에게 파일이 안 간다설정 › 서버의 “via server / via internet 상대에게 파일 전송”이 꺼져 있는지(기본 끔)
서버 [Test]가 실패한다인터넷 연결 · 주소/포트 확인 · 회사 방화벽이 47300(TCP/UDP)을 막는지
서버 키 불일치 경고서버 운영자에게 키 변경 여부를 확인하세요. 공식 서버 핀은 위 연결 방법의 값과 대조합니다. 의심되면 접속하지 마세요
⌘/Ctrl+V로 이미지가 안 간다클립보드에 텍스트가 아니라 이미지가 있는지 확인(텍스트는 글자로 붙음). Linux Wayland에서는 창에 키보드 포커스가 있어야 합니다
재시작하니 상대가 나를 모른다identity.key가 바뀌었을 수 있습니다(지웠거나 임시 폴더에 있었음). --whoami의 지문이 전과 같은지 확인하고 백업에서 복원
앱이 갑자기 꺼졌다데이터 폴더의 crash.log(v0.6.1~)를 문제 보고에 붙이세요. macOS에서 화면 공유·원격 데스크톱 중 꺼지던 문제는 v0.6.1에서 수정되었습니다
상대에 “버전 불일치 — 한쪽을 업데이트해야 대화할 수 있습니다”가 보인다프로토콜 세대나 와이어 버전이 달라 대화할 수 없습니다. 한쪽을 업데이트하세요(v0.8.0)
상대가 목록에서 사라졌다수신 제한(자동 임시 차단 포함)에 걸렸는지 설정 › 고급 › 수신 제한 목록을 확인하세요
원격 데스크톱 재접속 뒤 창이 “응답 없음”으로 멈춘다(Windows)v0.8.0에서 수정되었습니다. 최신 버전으로 업데이트하세요
꺼진 내 기기의 대화창에 “지문 대조 전” 안내가 뜬다v0.6.0에서 수정되었습니다. 설정 › 고급 › 신뢰 판정 › 오프라인 시 마지막 서명 사용이 켜져 있는지 확인하세요
사진 대신 이니셜만 보인다실행 파일과 같은 폴더의 nbeep-imgdec가 있는지 확인
”내 기기” 보라 배지가 사라진다v0.2.17에서 오래 켜 둔 뒤 재연결 시 배지가 사라지던 문제가 수정되었습니다. 최신 버전으로 업데이트하세요
Windows에서 실행 즉시 종료된다(0xC0000135)v0.2.14 이하는 VC++ 런타임이 필요했습니다. v0.2.16 이상으로 업데이트하세요
Ubuntu 22.04 · Debian 12에서 실행되지 않는다v0.2.17 이하 .deb의 glibc 표기 문제입니다. v0.3.0 이상을 설치하세요
Linux에서 설정·대화 창이 메인 창 뒤에 숨는다v0.3.1에서 Wayland 환경의 창 포커스 문제가 수정되었습니다
Linux 트레이에서 “열기”를 눌러도 창이 안 뜬다GNOME은 AppIndicator 확장이 필요합니다. Wayland에서는 데스크톱에 따라 창을 앞으로 가져오지 못하고 Dock 강조만 될 수 있습니다
macOS에서 앱이 바로 꺼진다격리 표식 문제 — Homebrew Cask로 설치하거나 xattr -dr com.apple.quarantine "/Applications/Nexa Beep.app" 실행
보안 프로그램이 경고한다서명 전 실행 파일 · 자동 실행 · 고정 포트 수신 등의 조합 때문에 오탐이 날 수 있습니다. 릴리스의 SHA256SUMS.txt로 파일을 확인하세요

버전 변경 이력

버전 흐름 요약

시기버전핵심
2026-08-11 ~ 08-20v0.1.x첫 공개 · LAN 자동 발견과 암호화 대화 · 안전한 파일 전송 · 프로필 · 알림 · 대용량 전송과 이어받기
2026-08-20 ~ 08-30v0.2.0 ~ v0.2.14자동 실행 · CLI 단말 · 오프라인 큐 · 릴레이 서버(beepd) 와 다른 망 연결 · 그룹 파일 · 필터 바 · Linux 실기 다듬기 · 클립보드 자체 구현
2026-09-07 ~ 09-26v0.2.15 ~ v0.2.17다중 기기 신원(내 기기 묶기) · Windows 런타임 의존 제거 · 내 기기 연결 안정화
2026-10-09v0.3.0 · v0.3.1설정 화면 전면 개편 · 라이선스 · 새 파일 대화상자 · Linux rpm · APT/DNF 저장소 · 내 기기 목록
2026-10-10v0.4.0대화 창 체감 속도 개선 · 내 기기 간 대화 이어 보기(발신 사본 · 상대 기기 접기)
2026-10-10v0.5.0꺼져 있던 기기의 따라잡기 · 기기 간 읽음 동기
2026-10-20v0.6.0 · v0.6.1꺼진 상대와의 대화창 · 대기 메시지 즉시 전달 · 내 상태 · 개발자 상세 로그 · macOS 크래시 수정 · crash.log
2026-11-03v0.7.0답장 · 말풍선 글자 선택·복사 · 설정 창 변경 보기 · JSON 내보내기·가져오기·편집 · 고속 스크롤
2026-11-05v0.8.0수신 제한 · 처음 보는 상대 보류 · 메시지 왕복 지연 단축 · 그룹 초대 관리 · 원격 데스크톱 후 창 멈춤 수정
2026-11-07v0.9.0큰 파일 수신 메모리 절감 · 발견 광고 끄기(조용한 노드) · 키보드만으로 조작 · 창 투명도 · 방화벽 규칙 등록

v0.9.0 — 2026-11-07

추가

  • 발견 광고 끄기(설정 › 네트워크 · 기본 켜짐) — 끄면 조용한 노드가 되어 내 존재를 알리지 않고 남의 광고만 듣습니다. 상대가 직접 인사해 오면 답하므로 능동 탐지까지 막지는 못합니다.
  • 키보드만으로 조작 — 설정·프로필·모달 창 Tab/Shift+Tab 순회 · 메뉴 키 / Shift+F10으로 컨텍스트 메뉴 · 프로필 아바타·최근 사진 캐러셀 ←/→/Home/End/Enter · Delete로 최근 사진 삭제.
  • 창 투명도(설정 › 모양) — 포커스 있을 때/없을 때 불투명도를 따로 정합니다.
  • Windows 방화벽 허용 규칙 등록/제거(설정 › 고급 · 선택) — 누를 때만 관리자 승인(UAC)을 묻습니다.
  • 여러 기기를 쓰는 상대에게 보낸 파일이 접속 중인 기기 전부에 갑니다(종전 = 첫 기기 1대).

개선

  • 큰 파일 수신이 메모리에 쌓이지 않고 암호화된 격리 파일로 곧장 기록됩니다(256MiB 수신 메모리 피크 521MB → 7.8MB · 같은 PC 실측).
  • 멀티캐스트가 막힌 망에서 한쪽만 탐색해도 서로 보입니다. 탐색 주기를 상황에 맞춰 줄입니다.
  • 알림 강도를 상대 신뢰도로 판정(미검증 상대는 소리 없음) · 위험한 동작 확인 창의 기본 버튼 = 취소 · 보안이 느슨해지는 설정을 켤 때 확인 창.
  • 수동 IP로 등록한 내 다른 기기도 같은 사용자로 증명됩니다. 유휴 메모리 7.46 → 5.20MB.

수정

  • 이어받기 때 전송 속도가 비정상적으로 크게 표시되던 문제.

주의

  • 이번 버전이 받은 파일은 새 격리 형식(v2)입니다. 0.8.0 이하로 되돌리면 격리함에서 열리지 않으므로 먼저 꺼내 두세요.
  • 32MiB보다 큰 파일은 Windows 백신 검사(AMSI)를 건너뛰고 “검사 불가(크기)“로 표시합니다(64MiB보다 큰 zip은 내부 검사 생략).
  • 배포 채널: GitHub Releases · Homebrew · APT/DNF. winget은 설치본 0.8.0 게시 · 0.9.0 검토 중, Chocolatey는 0.6.0이 최신 승인판입니다. 릴레이 서버는 변경 없음(beepd-v0.2.6).

v0.8.0 — 2026-11-05

추가

  • 수신 제한 — 목록 우클릭으로 1시간 / 24시간 / 7일 / 영구 차단 · IP·CIDR 차단 · 표시 이름 차단. 메시지·연결 폭주 자동 임시 차단(기본 10분).
  • 처음 보는 상대의 메시지 보류(선택 · 기본 끔) — 수신 요청 카드(수락 / 무시 / 이 상대 차단).
  • 그룹 초대 관리 — 초대 카드 3택 · 다시 받지 않기 · 거절 실행 취소 · 재초대 · 초대 만료.
  • 버전 불일치 표시 · 프로필 카드의 앱 버전 행.
  • 그룹 파일 전송 이어받기 · 로그 창(메뉴 › 로그).

개선

  • 메시지 왕복 지연 — 같은 PC 실측 p95 210ms → 5ms.
  • 파일 전송 진행률이 받는 쪽 확인 기준이 되었습니다.
  • 구버전 상대에게 보내는 답장은 인용 한 줄을 붙인 일반 메시지로 전환됩니다. 따라잡기에 답장 참조가 함께 옵니다.
  • 대화 기록 저장이 증분 방식(NBH2)이 되었습니다. 옛 파일은 첫 저장 때 자동으로 바뀝니다.

수정

  • 원격 데스크톱 재접속이나 탐색기 재시작 뒤 창이 “응답 없음”으로 멈추던 결함.
  • 대화한 적 없는 상대가 오프라인 행으로 쌓이던 문제(이미 쌓인 행은 한 번 다시 켜면 사라집니다).

변경

  • 배포 채널: GitHub Releases · Homebrew · APT/DNF. winget은 제출 보류, Chocolatey는 0.6.0이 최신 승인판입니다. 릴레이 서버는 변경 없음(beepd-v0.2.6).

v0.7.0 — 2026-11-03

추가

  • 답장 — 말풍선 우클릭 › 답장 → 입력창 위 “답장 중” 띠(Esc·× 취소) → 보낸 말풍선 위에 인용 블록. 인용을 누르면 원본으로 스크롤해 잠시 강조합니다. 내 글·옛 글도 대상이고 1:1·그룹 공통입니다. v0.6.1 이하 상대에게는 답장 내용이 보이지 않았습니다(v0.8.0에서 해소).
  • 말풍선 글자 선택·복사 — 드래그·더블클릭으로 골라 ⌘/Ctrl+C 또는 우클릭으로 복사합니다. 상태바에 “N자 복사됨”과 순간 메시지가 나타납니다.
  • 순간 메시지 설정 · 고속 스크롤(모양 › 고속 스크롤).
  • 설정 창 — [변경] 보기와 바뀐 카드 강조 막대 · [내보내기…][가져오기…][JSON 편집…]. 이 JSON에는 페어링 암호가 값 그대로 들어갑니다.
  • 트레이 메뉴 맨 위에 프로그램 이름과 버전 표시.

수정

  • 한글 입력 2건(macOS) — 음절 뒤 Space가 0.4초 뒤 한 번 더 들어가던 것, “메뉴에서?”+Enter에서 ?가 Enter 뒤 빈 입력창에 들어가던 것.
  • 오프라인 대기로 보낸 내 글이 전송 뒤에도 답장·따라잡기 대상에서 빠지던 결함.
  • 설정 창 왼쪽 트리 위에서 휠을 굴리면 오른쪽 카드가 스크롤되던 결함.

변경

  • 종전 [설정 파일 열기…]는 [JSON 편집…]으로 바뀌었습니다. 개발 검수용 컨트롤 갤러리를 제거했습니다. 파일 대화상자에 이름 바꾸기·삭제·되돌리기가 생겼습니다.
  • 배포 채널: GitHub Releases · Homebrew · APT/DNF. winget·Chocolatey는 이번 버전을 제외했습니다. 릴레이 서버는 변경 없음(beepd-v0.2.6).

v0.6.1 — 2026-10-20

수정

  • macOS에서 앱이 갑자기 꺼지던 문제 — 화면 공유·원격 데스크톱처럼 시스템이 화면 버퍼를 오래 쥐고 있을 때 종료되던 결함입니다. v0.4.0~v0.6.0의 macOS 판에 있었습니다.
  • 오프라인으로 저장한 채 앱을 다시 켜면 창 제목에 ”— 오프라인”이 빠지던 것.

추가

  • 오프라인 한눈 표시 — 트레이 아이콘 흐림·회색 점, 툴팁과 주 창 제목의 “오프라인”.
  • crash.log — 앱이 오류로 꺼지면 데이터 폴더에 시각·버전·코드 위치·오류 메시지를 남깁니다.

개선

  • 설정 창 스크롤 프레임 약 29ms → 11ms(macOS 실측).

변경

  • 배포 채널: GitHub Releases · Homebrew · APT/DNF · winget 포터블(2026-11-03 병합). 릴레이 서버는 변경 없음(beepd-v0.2.6).

v0.6.0 — 2026-10-20

추가

  • 내 상태(온라인/오프라인) — 메뉴 › 내 상태 또는 설정 › 일반 › 시스템.
  • 따라잡기 상한 설정 — 대화당 줄 수(50·100·200·500) · 세션당 전송량(1·4·16MiB).
  • 개발자 상세 로그 — 설정 › 고급 › 로그(상태 로그를 켠 뒤). 환경 변수 NEXA_DEVLOG=*로도 켤 수 있습니다(stderr 출력).

개선

  • 꺼진 상대도 대화창이 열립니다 — 기록을 보고 메시지를 대기시킬 수 있습니다. 대화함에서도 핀이 없는 상대의 기록이 이름과 함께 열립니다.
  • 대기 메시지는 상대가 나타나는 순간 전달됩니다(종전엔 최대 5분 대기). 나중에 나간 줄은 입력·전송 시각을 함께 표시합니다.
  • 기록 파일 형식이 확장되었습니다. 이전 버전으로 되돌리면 그 줄에서 읽기를 멈추고 앞까지만 보입니다(손상 아님).

수정

  • 꺼져 있는 내 기기의 대화창에 “지문 대조 전” 안내가 잘못 뜨던 문제.
  • 긴 대화에서 따라잡기 응답이 형제 기기와의 연결을 끊던 문제.

변경

  • 배포 채널: GitHub Releases · Homebrew · APT/DNF · winget(설치본·포터블) · Chocolatey(2026-11-02 승인). 릴레이 서버는 변경 없음(beepd-v0.2.6).

v0.5.0 — 2026-10-10

추가

  • 따라잡기 — 같은 핸들·암호로 묶인 내 기기 하나가 꺼져 있는 동안 다른 기기에서 주고받은 대화가, 그 기기를 켜면 형제 기기에게서 자동으로 들어옵니다(대화당 최근 200줄 · 연결당 1MiB). 상대가 보낸 줄과 내가 다른 기기에서 보낸 줄이 시각순으로 제자리에 놓입니다. 파일 본문은 따라잡지 않습니다.
  • 읽음 동기 — 한 기기에서 읽은 대화는 다른 기기에서도 안 읽음 배지가 사라집니다(대화 창을 열어 둔 채 받은 것 포함).

개선

  • 재시작 후에도 같은 줄이 한 번만 보이도록 발신 번호가 재시작을 넘어 이어집니다. 기록 파일 형식이 확장되었습니다(이전 버전으로 되돌리면 새 형식 이후 줄만 화면에 안 보이고 기록은 남습니다).
  • 직접 연결한 적 없는 상대와의 기록(다른 기기에서 받아 온 것)도 재시작 후 목록·대화에 복원됩니다.

변경

  • 배포 채널: GitHub Releases · Homebrew · APT/DNF. Chocolatey·winget은 이번 버전 제출이 뒤따릅니다. 릴레이 서버는 변경 없음(beepd-v0.2.6).

v0.4.0 — 2026-10-10

개선

  • 대화 창이 가벼워졌습니다(macOS) — 스크롤·우클릭 메뉴·메뉴 위 마우스 이동이 느리던 문제를 고쳤습니다. 프레임 시간이 약 29ms → 8ms로 줄었고, 유휴 메모리는 예산 안(약 25MB)입니다. 마우스 휠 한 칸 이동량을 고해상도 화면에 맞게 보정했습니다.

추가

  • 내 기기 간 대화 이어 보기 — 내 다른 기기에서 보낸 메시지가 이 기기 대화 창에도 보이고(발신 사본), 상대의 여러 기기가 한 줄·한 대화로 접혀 보입니다. 메시지는 상대의 켜져 있는 기기 전부에 전달됩니다.
  • 개발용 디버그 빌드는 창 제목에 (Debug) 가 붙습니다(설치본은 그대로).

수정

  • 내 기기와의 대화에 “인터넷 경유 — 지문 대조 전 파일 차단” 안내가 붙던 것을 없앴고, 같은 안내가 재접속마다 반복되던 것도 한 번만 남깁니다.
  • 대화 수신 줄 위에 PeerId(…) 같은 내부 식별자가 보이던 문제(기기 이름으로 표시).
  • 내 기기 목록·라이선스 창이 macOS Retina에서 절반 높이로 열려 버튼이 겹치던 문제.

v0.3.1 — 2026-10-09

추가

  • 내 기기 목록 — 설정 › 사용자 › 내 기기 목록 [열기…]. 이름·짧은 지문·상태·마지막 접속을 표로 보고, 잃어버린 기기는 [폐기]를 5초 안에 두 번 눌러 뺍니다.
  • Linux 목록 빠른 찾기에서 한글 검색(한/영 키 · 오른쪽 Alt · Shift+Space 전환).
  • Linux 패키지 저장소 pkg.sosomlab.com 등록 — sudo apt install nexa-beep / sudo dnf install nexa-beep.

수정

  • Linux Wayland에서 트레이 › 설정…과 대화 창이 메인 창 뒤에 깔려 멈춘 것처럼 보이던 문제.
  • 설정의 테마 항목도 “시스템 (라이트)“처럼 현재 OS 값을 함께 표시.
  • 주소로 직접 연결 창의 예시 설명이 잘리던 문제 · 언어 변경 시 툴바 말풍선 설명이 바뀌지 않던 문제.

v0.3.0 — 2026-10-09

추가

  • 설정 화면 전면 개편 — 그룹 트리 · 검색(AND · 한글 조합 중 검색 · 검색 이력) · 항목별 카드 · [고급 설정] 스위치 · 창 위치·크기 기억.
  • 설정 여는 법 추가: 트레이(메뉴바) 아이콘 메뉴 › 설정….
  • 라이선스 — 도움말 › 라이선스…, CLI --license. 기능 제한 없음 · 확인을 위한 접속 없음.
  • 새 파일 대화상자 — 파일을 고르는 9곳이 같은 대화상자를 사용(3-OS 동일). 신원 키·설정 백업은 저장 대화상자로.
  • 트레이 아이콘 연결 상태 점(서버 연결 · LAN 직결 · 전송 중).
  • Linux .rpm 설치본.

개선

  • 언어 기본값 = 시스템 언어 따름. 언어·테마의 “시스템” 항목에 현재 OS 값 표시.
  • 목록 빠른 찾기가 표시 이름으로도 찾고, ↑가 끝에서 되돌아가며, 끄기·유지 시간 조정 가능.
  • 설정 검색란에 한글 조합 중 글자가 보임 · 알림 위치 설정이 미리보기 드롭다운으로.

수정

  • Linux .deb가 Ubuntu 22.04 · Debian 12에서 실행되지 않던 문제(glibc 하한 표기).

v0.2.17 — 2026-09-26

수정

  • 오래 켜 둔 뒤(절전 복귀 · 네트워크 순단 · 서버 재접속) “내 기기” 연결이 풀리고 보라 배지가 사라지던 문제. 서버 경유 재연결에서도 내 기기 관계가 다시 성립하고, 세션이 잠시 끊겨도 배지가 유지됩니다(승인 생략 같은 신뢰 판정은 살아 있는 연결에서만).
  • 한쪽만 “내 기기”로 남던 비대칭 · 기기 3대 중 하나가 판정을 놓치면 다시 찾지 않던 문제.

v0.2.16 — 2026-09-17

수정

  • Windows 실행 파일이 Visual C++ 재배포 패키지 없이 실행됩니다. 이전 버전은 그 런타임이 없는 PC에서 오류 0xC0000135로 바로 실패했습니다. 릴레이 서버도 같은 수정을 담아 beepd-v0.2.6으로 재배포되었습니다. 기능 변경은 없습니다.

v0.2.15 — 2026-09-07

추가

  • 다중 기기 신원 — 설정 › 사용자에서 핸들 + 페어링 암호가 같은 내 PC들이 승인·지문 대조 없이 서로를 “내 기기”로 인식(보라 배지). 사용자 키 자동 복제 · 잃어버린 기기용 사용자 키 교체.

수정

  • 접속이 안 돼도 이력이 있는 상대가 목록에서 사라지던 문제.
  • 글꼴에 없는 기호(✓ ⚠ →)가 □로 보이던 문제(OS 기호 글꼴로 대체).
  • 두 PC가 릴레이로 만날 때 페어링 등록이 되지 않던 문제.

보안

  • 신원 키·핀·기록·프로필·서버 핀 등 비밀 파일을 소유자만 읽고 쓰도록(0600) 정리.

v0.2.10 ~ v0.2.14 — 2026-08-29 ~ 08-30

  • v0.2.14 (08-30) — 클립보드를 3-OS 모두 자체 구현. ⌘/Ctrl+V 이미지 붙여넣기가 외부 도구 없이 동작(Linux Wayland·X11 포함).
  • v0.2.13 (08-29) — 설치본과 다른 빌드가 자동 실행 등록을 서로 지우던 문제 수정(실행 위치별로 등록 분리).
  • v0.2.12 (08-29) — Linux GNOME에서 트레이 “열기”가 창을 실제로 앞으로 가져옴.
  • v0.2.11 (08-29) — 테마가 OS 다크 모드를 실시간으로 따름(기본 = 시스템) · Linux Dock 아이콘 · 트레이 Wayland 대응 · 종료가 늦던 문제 수정.
  • v0.2.10 (08-29) — Linux .deb 앱 메뉴 실행 시 실제 네트워크가 아닌 데모 모드가 뜨던 문제 수정(v0.2.2~v0.2.9).

v0.2.6 ~ v0.2.9 — 2026-08-23 ~ 08-24

  • v0.2.9 (08-24) — macOS .app·Homebrew 업그레이드 때 데이터가 사라질 수 있던 문제 수정(데이터를 사용자 폴더에 보관 · 기존 데이터 1회 이관).
  • v0.2.8 (08-24) — OS에서 자동 실행 등록을 지우면 다시 등록하지 않고 설정을 끈 뒤 알림.
  • v0.2.7 (08-24) — 그룹 창 파일 송수신 통합(보내기 카운터 · 받기 합산 배너 · 자동 취소).
  • v0.2.6 (08-23) — 목록 필터 바(Via · On · Who) · 서버 공개 사용자의 공개 프로필 즉시 표시 · 원격 파일 정책 개편(서버/인터넷 경유 상대에게 보내기는 설정으로 허용, 받기는 승인 창에서 결정) · 서버 연결은 [Test] 성공 시에만 · 대화 헤더 경로 배지 · LAN 프로필 즉시 동기 · 창 최소 크기 · 지문 복사 버튼.

v0.2.3 ~ v0.2.5 — 2026-08-22

  • v0.2.5 — 서버 사용자 자동 목록(“서버 사용자에게 나를 표시”) · 프로필 지문 복사 버튼. 서버 beepd-v0.2.5 동시 배포.
  • v0.2.4 — 공식 기본 릴레이 서버(beepd.sosomlab.com) 탑재 · 서버 설정 화면 정비(주소 입력 · 연결 테스트 버튼 · 검증 상태 표시).
  • v0.2.3 — 릴레이 서버 접속 개통(서버 키 핀 · 자동 재접속 · 지문으로 연결 · CLI --server). 첫 서버 beepd-v0.2.3.

v0.2.0 ~ v0.2.2 — 2026-08-20 ~ 08-21

  • v0.2.2 (08-21) — 경로별 원격 정책(인터넷 경유는 지문 대조 전 파일 차단) · zip 구조 점검 확장(zip64 · 내용 목록) · 대화 삭제 = 키 폐기 · Windows AMSI 실검사. winget·Chocolatey 첫 제출.
  • v0.2.1 (08-21) — 1:1 오프라인 큐(재시작 유지 · 자동 전달) · 클립보드 이미지 전송 · 메시지 등급과 공지 · CLI 단말 확장(/peers · /connect · 요청 단위 승인 · 다중 /send).
  • v0.2.0 (08-20) — 시스템 시작 시 자동 실행(3-OS · 기본 켬) · Windows에서 검은 콘솔 창이 남던 문제 해결 · cmd/PowerShell에서 CLI 입력이 섞이던 문제 해결.

v0.1.6 ~ v0.1.8 — 2026-08-13 ~ 08-20

  • v0.1.8 (08-20) — 대용량 스트리밍 전송 · 송수신 용량 상한(수신 기본 512MiB) · 이어받기 · 말풍선 안 전송 제어(⏸▶✕) · 요청 단위 승인 · 대화함 · 그룹 기록 영속 · 지문 기반 검증(/fingerprint · /verify) · 격리물·연락처·프로필 캐시 암호화.
  • v0.1.7 (08-15) — OS 데스크톱 알림(클릭 = 해당 대화) · Windows 트레이 상주 · 신뢰 배지 개편(색 + 모양 이중 표시) · 대화창 / 명령.
  • v0.1.6 (08-13) — 읽지 않은 메시지 배지 · 상대가 연결해도 창을 뺏지 않음 · 자동 재연결 · 끊긴 연결 감지(약 22초) · 수동 등록 상대 목록 유지 · 텍스트 편집 기본기 · --port 옵션.

v0.1.0 ~ v0.1.5 — 2026-08-11 ~ 08-13

  • v0.1.5 (08-13) — 세션 기본 포트 47200(주소 입력에서 포트 생략 가능) · 큰 휴대폰 사진 미리보기 허용.
  • v0.1.4 (08-12) — 설정 영속 · 신원·신뢰 핀 영속과 신원 키 백업/복원 · 표시 이름 실명 정제 · 프로필(사진·이름·이메일·전화 · 항목별 공개) · 이미지 격리 해석.
  • v0.1.3 (08-11) — Windows 더블클릭 무반응 수정 · 파일 전송 완료를 받는 쪽 확인으로 확정 · 주소 직접 연결 창(⌘/Ctrl+K).
  • v0.1.2 (08-11) — macOS 앱 더블클릭 무반응 수정 · 클립보드(macOS/Linux) · 우클릭 메뉴.
  • v0.1.0 / v0.1.1 (08-11) — 첫 공개. Windows x64/ARM64 · macOS x64/ARM64 · Linux x64 · 설치본과 포터블 · Homebrew 탭.

릴레이 서버(nexa-beepd) 버전

버전날짜내용
beepd-v0.2.62026-09-17Windows 바이너리의 VC++ 런타임 의존 제거(정적 링크). 현재 공식 서버 버전
beepd-v0.2.52026-08-22서버 사용자 자동 목록(roster) 지원 · 패키지 매니저(brew · winget · Chocolatey) 첫 게시
beepd-v0.2.32026-08-22첫 서버 릴리스 — 랑데부 · UDP 홀펀칭 · 릴레이 폴백 · Linux 정적 바이너리

전체 릴리스 자산과 체크섬은 GitHub Releases에서 볼 수 있습니다.

알려진 제한

신원·신뢰

  • 첫 접촉 순간의 중간자 공격은 원리적으로 탐지할 수 없습니다. 확신이 필요하면 지문을 다른 경로로 대조하세요(/fingerprint → 대조 → /verify).
  • 표시 이름과 프로필은 상대의 주장입니다. 같은 이름의 새 키는 새 사람으로 취급되며, 이름 충돌 표식으로만 드러납니다.
  • 발견 신호에 고정 공개키가 주기적으로 실리므로, 같은 LAN의 관찰자가 기기를 오랫동안 식별할 수 있습니다.
  • 익명 제로 컨피그 특성상 차단은 우회 비용을 높일 뿐 완전히 막지는 못합니다. IP 차단은 DHCP·NAT로 다른 사람에게 걸릴 수 있습니다.

기록·저장

  • 대화 기록은 각 PC에만 있으며 기기를 바꿀 때 자동으로 따라가지 않습니다(대화함 백업/복원 또는 다중 기기 따라잡기 사용 — 따라잡기는 기본 대화당 최근 200줄 · 텍스트만).
  • 저장 암호화 키는 identity.key에서 파생됩니다. 같은 OS 계정에 로그인한 사람이나 키 파일 유출에는 보호가 되지 않습니다.
  • 삭제가 물리적 삭제를 보장하지 않습니다(데이터 키 폐기로 읽을 수 없게 할 뿐).
  • 설정 내보내기·JSON 편집이 만드는 JSON 파일은 평문이며 페어링 암호를 포함합니다.
  • 구버전 상대에게 보낸 답장은 일반 메시지로 전환되어 원본으로 이동할 수 없습니다.

전달·네트워크

  • 오프라인 큐는 내 PC가 켜져 있을 때만 전달합니다. 서버가 메시지를 보관해 주지 않습니다.
  • 발견은 네트워크 환경에 따라 실패할 수 있습니다(클라이언트 격리 · IGMP 스누핑). 주소로 직접 연결이 대안이지만 그래도 닿지 않는 망이 있습니다.
  • 내용은 암호화되지만 패킷 크기와 시각 패턴은 관찰될 수 있습니다.
  • 릴레이를 쓰면 “누가 누구와 언제” 연결했는지와 공인 IP는 서버가 알게 됩니다.

파일

  • 백신 검사(AMSI)는 Windows에서만 동작합니다. macOS·Linux에서는 “검사 안 됨”으로 표시됩니다.
  • 압축 파일 점검은 zip(zip64 포함)만 구조를 봅니다. 암호화 zip · 중첩 압축 · 다른 형식은 “판정 불가”입니다.
  • 그룹 파일은 구성원마다 따로 보내므로 구성원 수만큼 전송량이 늘어납니다.

플랫폼

  • 코드 서명·공증 전이라 SmartScreen · Gatekeeper 경고가 뜹니다. macOS는 Homebrew Cask 설치를 권장합니다.
  • 서명 전 실행 파일 · 기본 켜진 자동 실행 · 고정 포트 수신 등의 조합 때문에 일부 보안 프로그램이 오탐할 수 있습니다.
  • Linux Wayland: 앱이 자기 창을 숨기거나 앞으로 가져오는 데 제약이 있어, 데스크톱에 따라 트레이 “열기”·알림 클릭이 Dock 강조에 그칠 수 있습니다. 클립보드는 창에 키보드 포커스가 있을 때만 쓸 수 있는 환경이 있습니다(트레이 상주 중 붙여넣기 불가).
  • macOS용 릴레이 서버(nexa-beepd)는 Apple Silicon 전용입니다.
  • 한글 입력은 실측 기반으로 다듬었지만 새로운 OS·입력기 조합에서 문제가 생길 수 있습니다.
  • 이 설명서의 화면 캡처는 v0.2.14 기준이며, 이후 바뀐 화면(특히 설정)은 글로만 설명합니다.

↑ 맨 위로