DeepSeek Harness Remote
DeepSeek Harness Remote: DeepSeek Harness 실행 PC와 모바일·PC를 안전하게 연결해 어디서나 작업 이어받기
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Local-first, free, open-source speech-to-text for macOS. Press a key, talk, and your words are pasted. Nothing leaves your Mac.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Press a key, talk, press it again — your words are on the clipboard and pasted before you can look up.
Local-first speech to text for macOS. No account, no subscription, no word cap, and no audio ever leaves your machine.
Download · Releases · Changelog · ♥ Sponsor
Everything runs on your Mac. The only network requests Vocs ever makes are the first-run model download and an optional update check, and both are visible and both can be turned off.
pnpm install
pnpm tauri dev
First launch opens setup: grant the microphone, download the model, and test the hotkey. After that Vocs lives in the menu bar. Opening the app (from Finder, Launchpad or Spotlight) shows the dashboard; when it starts by itself at login it stays quietly in the menu bar.
pnpm tauri build
The bundle lands in src-tauri/target/release/bundle/ — a .app, a .dmg,
and an updater archive.
Signing the updater archive. Because a public key is configured, Tauri also signs the update artifact, and it needs the matching private key:
TAURI_SIGNING_PRIVATE_KEY="$(cat ~/.vocs-updater.key)" \
TAURI_SIGNING_PRIVATE_KEY_PASSWORD="" \
pnpm tauri build
Both variables are required. Setting the key without the password makes Tauri prompt for one interactively, which fails in any non-interactive shell with a misleading "incorrect password" error — the password is empty, it simply had no way to tell you so.
Without either, the .app and .dmg still build correctly and only the update
artifact goes unsigned. In CI both come from repository secrets.
Back that private key up somewhere you will still have in five years. It is the only thing that can sign an update. If it is lost, every existing installation is permanently stranded on whatever version it has — there is no recovery, because the public key is compiled into the apps already out there.
Vocs is distributed as a DMG from our own website, not the App Store, and without Apple notarisation. That works, with two consequences you must plan for.
What a user sees on the first launch. Gatekeeper blocks the DMG itself
("Vocs-macOS.dmg" Not Opened: "Apple could not verify…"), and may block the app
again once it is copied out. The user chooses Done (not Move to Trash), then
opens System Settings → Privacy & Security, scrolls to the message and
chooses Open Anyway (or runs xattr -dr com.apple.quarantine on the DMG,
and on /Applications/Vocs.app if asked). This happens once per file.
In-app updates are downloaded by the app itself, so they do not trigger it
again. The download page on the website must show these steps.
Sign every release with the same self-signed certificate, forever. An ad-hoc signature is new on every build, so each update would silently reset the user's Accessibility grant and pasting would stop working. A stable certificate keeps the grant. Create it once:
Vocs Signing, identity type Self Signed Root, type Code Signing..p12 and keep it in a password manager.
Losing or replacing it voids every user's Accessibility grant.APPLE_CERTIFICATE (base64 -i vocs.p12),
APPLE_CERTIFICATE_PASSWORD, and APPLE_SIGNING_IDENTITY (Vocs Signing).
Leave APPLE_ID, APPLE_PASSWORD and APPLE_TEAM_ID unset; the release
workflow then signs without notarising.The updater needs its own, separate keypair (pnpm tauri signer generate); its
private half goes in TAURI_SIGNING_PRIVATE_KEY.
If an Apple Developer account is added later, the only change is the secrets: a
Developer ID certificate in APPLE_CERTIFICATE and the three Apple variables.
Existing users then need to re-grant Accessibility once, because the signing
identity changes.
| Permission | Needed for | Without it |
|---|---|---|
| Microphone | Recording | Vocs cannot record. Required. |
| Accessibility | Pasting for you | Everything still works — text goes to the clipboard instead. |
macOS shows each of these prompts once per app. If you dismiss one, the dialog never comes back, so Vocs takes you straight to the right System Settings pane instead of asking again.
macOS keys permission grants to the bundle id plus the code signature. Builds here are ad-hoc signed, which produces a new signature every time, so every rebuild looks like a different app and the Accessibility grant is lost. Pasting silently degrades to clipboard-only and nothing explains why.
That is a development annoyance, not a bug, and it does not affect a released
build. If you are rebuilding often, create one self-signed code-signing
certificate in Keychain Access and sign every build with that same identity —
the signature then stays stable and macOS stops forgetting. docs/03 §3.4 has
the detail.
The architecture is documented in docs/, and CLAUDE.md is the rulebook.
Start with docs/00-START-HERE.md; read docs/06-CONVENTIONS-AND-GREP.md
before writing your first file, because navigation here works through a
comment-based search index rather than by reading the tree:
pnpm sot SessionState # which files own this symbol
pnpm sot:show AudioChunk # the same, with each file's header
Two ideas carry the codebase. The registry (src-tauri/src/registry/) is one
table describing every feature — adding an entry wires up its settings UI,
permission preflight, nav placement, hotkey and metrics at once. The command
factory (src-tauri/src/ipc/factory.rs) is the single function every IPC call
passes through, so validation, permissions, reentrancy, tracing and error
mapping have one implementation instead of one per handler.
Types cross to TypeScript through tauri-specta: src/lib/bindings.ts is
generated by cargo test and must never be hand-edited.
cargo test --manifest-path src-tauri/Cargo.toml # also regenerates bindings
pnpm typecheck
Issues and pull requests are welcome. Read CONTRIBUTING.md first, and report security problems privately as described in SECURITY.md. Everyone taking part follows the Code of Conduct.
MIT. See LICENSE. Third-party licences, including the models Vocs downloads, are listed in THIRD_PARTY_NOTICES.md.