데스크톱 앱 시험판
서버를 따로 두지 않고 맥 한 대에서 쓰는 방법이에요. 앱이 서버와 에이전트를 자식 프로세스로 띄우고, 앱을 끄면 같이 꺼요. 회의는 이 맥에만 저장돼요.
아직 시험판이에요
서명·패키징한 .app 이 없어요. 저장소를 받아 직접 빌드해서 띄워요. 화면·서버·에이전트를 한 번에 빌드하니 처음엔 1분 안팎 걸려요.
준비물
| 준비물 | 확인 |
|---|---|
| Go | go version |
| Node | node -v (yarn 은 corepack 으로 받아요) |
| 받아쓰기 엔진 | ~/.notype/WhisperLiveKit 이 있어야 해요. 시작하기의 설치 스크립트로 한 번 설치해요 |
| Claude Code 로그인 | AI 교정·요약을 쓸 때만 |
빌드하고 띄우기
git clone https://github.com/CreatiCoding/notype.creco.dev.git
cd notype.creco.dev
sh desktop/scripts/start.shstart.sh 는 네 단계를 거쳐요. 여러 번 실행해도 되고, 코드를 고쳤다면 다시 실행하면 돼요.
- 화면 빌드: 웹 화면을 빌드해 서버에 넣어요.
- 서버·에이전트 빌드:
desktop/bin/notype-server,desktop/bin/notype-agent를 만들어요. - Electron 준비: npm 으로 받은
Electron.app을 준비해요. - 실행: NoType 창을 열어요.
받아쓰기 엔진이 없으면 "받아쓰기 엔진이 아직 없어요"라고 알려 줘요.
왜 Electron 을 패키징하지 않나요?
npm 으로 받은 Electron.app 을 그대로 띄우면, 코드를 고쳐 다시 빌드해도 실행 파일 서명이 바뀌지 않아요. 그래서 한 번 허용한 마이크·화면 기록·시스템 오디오 권한이 그대로 유지돼요. Electron 판이 바뀌거나 폴더를 옮기면 다시 허용해야 해요.
처음 녹음할 때
처음 녹음하면 macOS 가 마이크, 화면 기록, 시스템 오디오 권한을 물어요. 권한은 Electron 이라는 이름으로 잡혀요. 자세한 건 macOS 권한에 있어요.
창 왼쪽 아래에 엔진 상태가 보여요.
| 표시 | 뜻 |
|---|---|
| 엔진 실행 중 · 0.3.1 | 앱 안의 에이전트가 붙었어요(버전) |
| 받아쓰기 준비됨 | WhisperLiveKit 이 떴어요. 녹음 버튼이 켜져요 |
| AI 교정·요약 켜짐 | 이 맥에 Claude Code 가 있고 로그인돼 있어요 |
엔진이 뜨는 동안에는 "받아쓰기 엔진(WhisperLiveKit)을 켜는 중이에요. 준비되면 녹음 버튼이 켜져요."가 보여요.
창을 닫아도 꺼지지 않아요
- 창을 닫으면 숨기기만 해요. 앱은 메뉴 막대에 남고 녹음과 엔진은 계속 돌아요.
- 끝내려면 ⌘Q 나 메뉴 막대의 NoType 끝내기를 눌러요.
- 이미 떠 있을 때 다시 띄우면 새로 뜨지 않고 기존 창이 앞으로 나와요.
녹음을 켜고 끄는 단축키와 메뉴 막대는 단축키와 메뉴 막대에 있어요.
터미널 에이전트와 함께 못 써요
데스크톱 앱의 에이전트는 웹용 에이전트와 같은 ~/.notype 을 써요. 잠금 파일(~/.notype/agent.lock)로 맥 한 대에 하나만 돌기 때문에, 터미널에서 웹용 에이전트를 켜 둔 채로는 데스크톱 앱의 엔진이 바로 끝나요. 이때 앱이 "받아쓰기 엔진(에이전트)이 멈췄어요" 창을 띄워요. 터미널의 notype-agent 를 끄고(Ctrl+C) NoType 을 다시 열어요.
Raycast·Spotlight 에서 찾기 선택
start.sh 는 .app 을 만들지 않아서 Raycast·Spotlight 에 NoType 이 나오지 않아요. 이미 한 번 빌드했다면, 빌드된 앱을 띄우기만 하는 작은 실행기를 ~/Applications 에 두면 검색돼요.
REPO="$PWD" # 저장소 루트에서 실행
APP="$HOME/Applications/NoType.app"
mkdir -p "$APP/Contents/MacOS"
cat > "$APP/Contents/Info.plist" <<PLIST
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
<key>CFBundleName</key><string>NoType</string>
<key>CFBundleIdentifier</key><string>dev.creco.notype.launcher</string>
<key>CFBundleExecutable</key><string>NoType</string>
<key>CFBundlePackageType</key><string>APPL</string>
<key>LSUIElement</key><true/>
</dict></plist>
PLIST
cat > "$APP/Contents/MacOS/NoType" <<SH
#!/bin/sh
exec open -n "$REPO/desktop/node_modules/electron/dist/Electron.app" --args "$REPO/desktop"
SH
chmod +x "$APP/Contents/MacOS/NoType"실행기는 다시 빌드하지 않아요. 코드를 고쳤다면 start.sh 를 다시 실행해요. 저장소 폴더를 옮기면 실행기도 다시 만들어야 해요.
기록 보기
앱의 기록은 ~/Library/Application Support/NoType/logs 에 있어요. 메뉴 막대의 기록 폴더 열기로 바로 열 수 있어요. 서버가 15초 안에 뜨지 않거나 멈추면, 앱이 서버 기록의 끝부분을 오류 창으로 보여 주고 끝나요. 엔진(에이전트)이 돌다가 멈추면 3초 뒤 다시 띄워요(최대 5번).