Local Kiklet — menubar-приложение для macOS:
- записывает голос;
- делает локальную транскрибацию (Whisper на вашем Mac);
- вставляет текст в активное поле ввода (или копирует в буфер как fallback);
- опционально применяет текстовые действия через OpenAI API.
Этот README описывает полный путь: «увидел репозиторий -> скачал DMG -> установил -> выдал разрешения -> начал пользоваться».
- Перейдите в раздел
Releasesэтого репозитория. - Скачайте файл
LocalKiklet.dmgиз последнего релиза.
Если релизов пока нет, используйте раздел «Сборка из исходников» ниже.
- Откройте
LocalKiklet.dmg. - Перетащите
LocalKiklet.appвApplications. - Закройте окно DMG и извлеките диск.
Важно: запускайте приложение именно из /Applications/LocalKiklet.app.
- Откройте
Applicationsи запуститеLocalKiklet. - Пройдите онбординг разрешений.
Приложение запросит:
Microphone— для записи речи;Accessibility— для вставки текста в другие приложения;Input Monitoring— для глобальных горячих клавиш (особенно modifier-only, например только⌥).
В онбординге и настройках есть кнопки:
Запросить;Открыть настройки;Проверить разрешения.
Также при запуске утилиты macOS может показать окно Keychain с запросом пароля login для доступа к записи LocalKiklet.
В этом окне нажмите Always Allow (Разрешить всегда) — это нужно для хранения и использования API-ключа OpenAI.
Если Input Monitoring не выдался автоматически, добавьте приложение вручную:
- Откройте
System Settings -> Privacy & Security -> Input Monitoring. - Нажмите
+внизу слева. - В списке приложений найдите и выберите
LocalKiklet(из папкиApplications). - Включите переключатель рядом с
LocalKiklet. - Вернитесь в приложение и нажмите
Проверить разрешения.
Откройте Settings и проверьте:
Горячие клавишиHold-to-record(нажал и держишь — идет запись);Toggle record(нажал — старт, нажал снова — стоп).
Распознавание- язык: для стабильной русской диктовки лучше выбрать
Русский; Autoтоже поддерживается, но на смешанной речи может ошибаться;- качество:
БыстрееилиТочнее.
- язык: для стабильной русской диктовки лучше выбрать
Вставка/буферУмный режим(по умолчанию);Всегда вставлять;Всегда в буфер.
OpenAI(опционально)- вставьте API-ключ;
- нажмите
Проверить ключ.
Важно: API-ключ OpenAI нужен только для действий над текстом. Без API-ключа приложение всё равно стабильно работает в локальном режиме (запись + транскрибация через локальный Whisper + вставка/буфер).
- Зажмите горячую клавишу
Hold-to-record. - Продиктуйте текст.
- Отпустите клавишу.
- Приложение:
- распознает речь локально;
- применит выбранное действие (если нужно);
- вставит текст в активный инпут или скопирует в буфер.
- Нажмите
Toggle recordодин раз — старт. - Нажмите второй раз — стоп и обработка.
- индикатор состояния в menubar;
- HUD-статус около курсора (
Идет запись,Транскрибирую..., и т.д.); - уведомление о результате (
Вставлено в .../Скопировано в буфер).
Важно: для OpenAI-действий используется Keychain. Если macOS спросит пароль связки ключей, выберите Always Allow (Разрешить всегда), иначе приложение не сможет стабильно читать сохранённый API-ключ.
Действия нужны, чтобы делать с текстом «нестандартные» операции: например, перевод, переформулирование, изменение стиля, сжатие, извлечение задач и любые другие кастомные сценарии. Практически это ограничено только фантазией пользователя и качеством инструкции действия.
Текущая модель для OpenAI-действий в этом проекте: gpt-4o-mini.
Где посмотреть информацию и цены:
- Документация по модели (
gpt-4o/gpt-4o-mini): OpenAI Models Docs - Актуальный прайсинг: OpenAI API Pricing
- За последние 3 месяца очень активного использования этой модели в Kiklet я потратил менее $2
Встроенные действия включают:
- Без обработки (только транскрипция)
- Перевести на английский
- Перевести на русский
- Сделать формально-деловым стилем
- Сделать проще/дружелюбнее
- Сжать в 1–2 предложения
- Список задач (to-do)
- Краткое резюме
Можно добавлять собственные действия в Настройки -> Действия.
В History сохраняются последние результаты:
- исходная транскрипция;
- результат действия;
- время;
- имя действия.
Для записи доступны операции:
- скопировать транскрипцию;
- скопировать результат;
- повторить действие;
- удалить запись.
- Удалите старую копию из
/Applications. - Установите заново из свежего
LocalKiklet.dmg. - Снимите quarantine (при необходимости):
xattr -dr com.apple.quarantine /Applications/LocalKiklet.app
open /Applications/LocalKiklet.app- Проверьте, что выдан
Input Monitoring. - Проверьте
Accessibility. - В приложении нажмите
Проверить разрешения. - Если используете modifier-only хоткей (например, только
⌥),Input Monitoringобязателен. - Если
Input Monitoringне добавляется автоматически, добавьтеLocalKikletвручную через кнопку+вSystem Settings -> Privacy & Security -> Input Monitoring.
- Проверьте
Accessibility. - Попробуйте режим
Всегда вставлять. - Убедитесь, что курсор стоит в реальном editable-поле.
- В
Настройки -> Распознаваниевыставьте язык явно (РусскийилиEnglish), а неAuto. - Для смешанной речи это дает более стабильный результат.
- Проверьте путь к
whisper-cli. - Проверьте наличие моделей (
fast/accurate). - Нажмите
Установить локальный Whisper. - Проверьте микрофон и уровень входного сигнала.
- Лог-файл:
~/Library/Application Support/LocalKiklet/logs/localkiklet.log - В настройках есть кнопка
Экспорт логов.
- macOS 13+
- Xcode Command Line Tools
- Swift 6+
swift build
swift run LocalKiklet./scripts/build_app.shРезультат: dist/LocalKiklet.app
./scripts/build_dmg.shРезультат: dist/LocalKiklet.dmg
- Вставка в некоторые защищенные поля macOS может быть недоступна — тогда используется fallback в буфер.
- Для
OpenAI-действий нужен API-ключ и интернет. - Для production-дистрибуции рекомендуется Developer ID signing + notarization.
Проект распространяется под лицензией MIT. Полный текст: LICENSE.