브라우저에서 암호화한 메모를 1회성으로 공유하는 도구입니다. 메모는 클라이언트에서 암호화되어 Cloudflare Durable Object에 저장되며, 읽거나 만료되면 자동으로 삭제됩니다. 요즘 핫한 OpenClaw처럼 VM/VPS나 로컬에서 돌리는 오픈 에이전트 플랫폼을 셋업할 때, 민감한 설정값을 1회성으로 공유하기에 딱 좋습니다.
- 클라이언트 측 암호화(PBKDF2 + AES-GCM), 키는 URL 해시에만 존재
- 1회 열람 후 즉시 파기(burn after GET)
- TTL 만료(기본 30분)
- 공유 상태 폴링
- 클라이언트 2000자 제한, 서버는 암호문 크기로 제한
- Vite + React + Tailwind CSS
- Cloudflare Workers + Durable Objects(SQLite 기반)
src/- React 앱worker/- Cloudflare Worker + Durable Objectpublic/- 정적 에셋wrangler.jsonc- Worker 설정 및 라우트
pnpm install
# 프론트만 실행(Vite)
pnpm dev
# 워커만 실행(Wrangler)
pnpm dev:worker
# 둘 다 실행
pnpm dev:allVite가 /api/*를 워커로 프록시합니다. 필요 시 VITE_API_PROXY_TARGET로 변경하세요.
pnpm buildpnpm deploydeploy는 vite build 이후 wrangler deploy를 실행합니다.
- 커스텀 도메인 라우트는
wrangler.jsonc에서 설정합니다(예:memo.example.com/*). - 커스텀 라우트 사용 시
workers_dev는 비활성화됩니다. - 무료 플랜 호환을 위해 Durable Object 마이그레이션은
new_sqlite_classes를 사용합니다.
- 공유 링크 형식:
/{id}#{key}(키는 서버로 전송되지 않음) - 읽기 링크를 새로고침하면 파기 처리 및 파기 메시지 표시
- 만료된 링크는 만료 상태로 표시
MIT
