TL;DR

  • EtherPK는 일반 Markdown, 일지와 페이지, 위키링크 기반 지식 그래프를 제공하는 개인 지식 베이스이며, Obsidian·Logseq 대안으로 제시됨.
  • 편집기인 Client는 SvelteKit 앱으로, 컴퓨터의 폴더에 있는 그래프나 종단 간 암호화를 적용한 Sync Server의 그래프를 엶.
  • Headless Client는 편집기 없이 그래프를 AI 에이전트에 제공하는 MCP 서버이며, @appsoftwareltd/etherpk-mcp로 npm에 배포됨.
  • 데모는 etherpk.com에서 계정 없이 브라우저로 실행되며, 작성 내용은 해당 브라우저에만 저장됨.
  • 소프트웨어는 Elastic License 2.0으로 제공되며, 사용·복사·수정·자체 호스팅은 허용하지만 호스팅 또는 관리형 서비스로 타인에게 제공하는 것은 허용하지 않음.

EtherPK Client

  • EtherPK Client와 Headless Client의 소스 코드 저장소이며, Elastic License 2.0으로 제공됨.
  • etherpk.com에서 데모를 실행할 수 있으며, 계정이 필요 없고 작성 내용은 실행한 브라우저에만 저장됨.
  • EtherPK는 일반 Markdown을 사용하는 개인 지식 베이스임. 일지 항목은 일일 생각을 담고, 페이지는 하루를 넘어 유지되는 내용을 담으며, [[wikilinks]]가 항목을 지식 그래프로 연결함.
  • Client는 편집기 역할을 하는 SvelteKit 앱으로, 컴퓨터의 폴더에 있는 그래프 또는 Sync Server에 저장된 그래프를 엶. Sync Server의 그래프는 종단 간 암호화되며 서버는 내용을 읽을 수 없음.
  • Headless Client는 같은 엔진에서 편집기를 제외한 구성으로, AI 에이전트에 그래프 하나를 제공하는 MCP 서버임.
  • 사용자 문서는 https://docs.etherpk.com 에서 확인할 수 있음.

라이선스

  • Elastic License 2.0은 소프트웨어의 사용, 복사, 수정 및 자체 호스팅을 허용함.
  • 소프트웨어를 호스팅 또는 관리형 서비스로 다른 사람에게 제공하는 것은 허용하지 않음. 이는 소스 공개 라이선스이며 오픈소스 라이선스는 아님.

저장소 구성

  • apps/client: Client
  • apps/mcp: Headless Client / MCP Server. npm 패키지 이름은 @appsoftwareltd/etherpk-mcp이며, README는 apps/mcp/README.md임.
  • packages/shared: Client와 Sync Server가 공유하는 동기화 프로토콜, UI 컴포넌트 및 인증 페이지 코드
  • packages/themes: 배포자가 번들에 포함하는 사이트 테마

실행 방법

Docker 이미지

  • Docker 이미지 ghcr.io/appsoftwareltd/etherpk-client:latest를 포트 3000에 연결해 실행할 수 있음.
  • 이미지의 모든 태그는 이미지 패키지 페이지에 나열됨.
  • http://localhost:3000 에 접속하면 Client를 사용할 수 있음. 설정이 없으면 컴퓨터의 그래프 폴더를 사용하며, Sync Server 주소를 입력하는 Custom server 양식을 제공함.
  • Client가 읽는 설정값과 기본값은 apps/client/.env.example에 있으며, --env-file로 전달함.

Node.js 번들

  • 각 릴리스에는 Windows, macOS, Linux에서 실행 가능한 etherpk-client-<version>.tar.gz가 포함됨. Node.js 22 이상이 필요하며 별도 설치 항목은 없음.
  • 번들을 압축 해제하고 etherpk-client 디렉터리로 이동한 뒤, HOST=127.0.0.1 PORT=3000 node build 명령으로 실행함.
  • Windows 명령을 포함한 전체 안내는 Running EtherPK On Your Own Computer 문서에 있음.

Headless Client / MCP 서버

  • @appsoftwareltd/etherpk-mcp 이름으로 npm에 배포됨.
  • npx @appsoftwareltd/etherpk-mcp --help 명령으로 도움말을 확인함.
  • 그래프 종류별 설정 안내는 apps/mcp/README.md에 있음.

소스에서 빌드

  • Node.js 22 이상과 pnpm이 필요함. corepack enable을 실행하면 package.json에 지정된 pnpm 버전을 사용할 수 있음.
  • pnpm install --frozen-lockfile로 의존성을 설치하고, pnpm dev로 http://localhost:5174에서 Client를 실행함.
  • pnpm check는 타입 검사, pnpm lint는 린트, pnpm test는 Vitest 단위 테스트 실행에 사용됨.
  • pnpm build는 Client와 Headless Client를 빌드하며, docker build -f apps/client/Dockerfile -t etherpk-client .로 Docker 이미지를 빌드함.
  • 개발 설정을 변경하려면 apps/client/.env.example을 apps/client/.env로 복사함.

버전 및 릴리스

  • main 브랜치의 모든 커밋은 edge와 sha-<commit> 태그가 붙은 이미지를 게시함.
  • 릴리스는 v<version> 태그로 생성됨. 릴리스는 <version>, <major>.<minor>, latest 태그의 이미지, Node 번들이 첨부된 GitHub Release, 같은 버전의 @appsoftwareltd/etherpk-mcp npm 패키지를 게시함.
  • Client와 Headless Client는 EtherPK Sync Server와 버전 번호를 공유하며, 버전이 일치하는 조합만 함께 테스트됨.
  • Client와 Sync Server의 동기화 프로토콜 버전이 다르면 동기화를 거부하고, Client가 어느 쪽을 업그레이드해야 하는지 표시함.

저장소 관리 방식

  • 이 저장소는 App Software의 비공개 EtherPK 저장소를 한 방향으로 복사한 것으로, 비공개 저장소의 변경 때마다 내보내기됨.
  • 이 저장소의 각 커밋은 하나의 내보내기에 해당하며, GitOrigin-RevId 트레일러가 원본 비공개 커밋을 가리킴.
  • 코드 주석은 비공개 저장소에 있으며 여기에는 공개되지 않은 설계 기록(ADR 0072)과 용어집 항목([[Knowledge Graph]])을 참조함.
  • 이슈 제보는 환영하지만 이 저장소에서 풀 리퀘스트를 병합하지 않음. 그 이유와 이후 처리 방식은 CONTRIBUTING.md에 설명되어 있으며, 보안 문제는 SECURITY.md의 안내에 따라 제보함.