Show HN: Ledge.sh, 마크다운 노트에서 셸·SQL·AI 프롬프트를 실행하는 노트북
- Ledge.sh는 마크다운 노트의 코드 블록에 커서를 두고 ⌘↩를 누르면 출력이 블록 아래로 스트리밍되는 데스크톱 앱임. 노트마다 지속 셸이 하나씩 있어 cd, export, virtualenv 활성화가 다음 실행까지 이어지고, Apache-2.0 무료 오픈소스로 macOS 애플 실리콘, Linux, Windows 11 WSL, iOS, 안드로이드 베타를 지원함.
- frontmatter의 cwd:와 env:로 노트 셸의 시작 위치와 환경 변수를 정하고, host:를 적으면 그 노트의 모든 실행이 ssh로 해당 호스트에서 돌아감. confirm은 실행 전에 코드와 대상 머신을 보여주고 확인을 받으며, norun은 인용한 명령에서 Run 버튼을 없앰.
- ssh로 서버를 지정하면 노트 파일과 셸이 서버에서 돌아 노트북을 닫아도 계속 실행되고 출력이 남아 있음. 계정이나 열어둔 포트가 필요 없고 ssh 키나 키체인 비밀번호로 로그인하며 호스트 키를 고정하고, ledge backup이 매시간 노트를 S3 호환 버킷에 암호화해 백업함.
- iOS·iPad 앱은 서버를 보는 창으로 동작하고 노트를 기기에 저장하지 않음. ledge pair가 출력한 페어링 코드를 스캔하면 Secure Enclave에서 만들어 기기를 떠나지 않는 키로 로그인하고, 이 키는 Ledge 외에는 아무것도 말할 수 없음.
- HN에서는 org-babel, Jupyter, RMarkdown, xc 같은 선례가 계속 언급됐고, 비슷한 제품인 Atuin Desktop 저장소가 이 글이 올라온 날 아카이브된 점이 눈에 띔. 작성자는 Ledge에 AI가 내장돼 있지 않고 원하는 사람만 BYOAI라고 답함.
Hacker News 의견들
예전엔 Jupyter에 bash 백엔드 물려서 비슷하게 썼음.
Jupyter는 좋은데 bash 커널이 진짜 터미널 세션이 아니라서 sudo 프롬프트나 top 같은 게 좀 이상하게 돌아가더라. 나는 .ipynb보다 마크다운이 더 좋음.
나도 비슷한 걸 만들어서 런칭했음. 코딩 에이전트랑의 대화를 편집하고 실행할 수 있는 문서로 다루는 작업 문서인데, 사람과 에이전트가 같은 페이지에 씀. 실수를 후속 프롬프트로 고치는 대신 지우거나 이전 프롬프트를 고쳐서 다시 실행할 수 있고 파일은 항상 읽히는 마크다운임. piary.dev에서 볼 수 있음.
오, 한번 볼게.
Org-mode 같은 거랑 비교하면 뭐가 다른가?
Emacs 안 쓰는 사람도 쓸 수 있고, Org 문법 대신 마크다운이고, 셸이 기본으로 대화형이며, 모바일 앱에서도 셸이나 코드를 돌릴 수 있는 게 다름.
데이터 분석 쪽 Observable Framework 같은 것과 달리 독립 앱이라는 틈새에 맞는 것 같음. Notion이 이런 걸 통합해줬으면 좋겠고 누가 Obsidian 플러그인을 만들었으면 함.
ctrl-r fzf로 히스토리 뒤지거나 탭으로 파드 이름 자동완성하는 근육 기억이 있어서 kubectl 명령을 손으로 다 쓰진 않음. 셸 완성이나 alias, 함수랑 명령 생성 연동 계획 있나?
터미널 드로어에서는 ctrl-r, fzf, 탭 완성이 됨. 에디터에서 완성은 아직 없는데 좋은 아이디어라 살펴보겠음.
Emacs를 10년 넘게 썼는데 org-babel을 팀에서 못 쓰게 만들던 문제를 이게 풀어줌. Emacs의 org-babel 같은 건데 일반인용임. 익숙한 UI와 흔한 포맷이 크게 작용함.
고맙다, 계속 발전시킬 동기가 생김.
Atuin Desktop이라는 비슷한 게 있는데 Tauri GUI라 성능이 끔찍함. 실행하고 돌아다니면 팬이 미친 듯이 돌아서 GUI가 더 나은 걸 찾고 있었음. 이건 해볼 거임.
Atuin Desktop 저장소를 보러 갔는데 이 글이 올라온 날 아카이브됐더라. 신기함.
Atuin이랑 아무 관계 없음. 우연이라 좀 이상하긴 함.
Claude Code나 Codex가 판을 다 먹은 걸 보면 놀랍지도 않음.
왜 이런 게 주류가 안 됐을까? org-babel, Jupyter, Atuin Desktop 다 비슷한 걸 했는데. 오래 쓴 사람들은 뭐가 걸림돌이었나? UX나 접근성 문제인지, 아니면 문서와 실제 작업을 분리해두는 걸 더 좋아하는 건지 궁금함.
이거 보니 죽은 프로젝트 xiki가 생각남.
오랜만에 AI 얘기 없는 프로젝트인가 했는데 'Built to be worked by agents'가 나옴.
참고로 Ledge에 AI는 내장돼 있지 않음. 원하는 사람만 BYOAI임.
literate programming은 Knuth 최고 아이디어 중 하나임. 나는 xc를 오래 썼는데 꽤 탄탄함. Go 템플릿 엔진을 그대로 쓰고 단일 바이너리라 런타임 의존성이 없고, 블록 간 의존성 시스템이 있어서 각 블록이 한 번만 실행되게 보장함. 홈 인프라 설정 관리 시스템을 이걸로 만듦.
우리 팀이 로컬 툴링 문서화에 쓸 것 같음. 로그인 토큰을 저장해서 인증 요청을 하고 세일즈 핸드오버를 만들 수도 있나?