harnsy

Speak to the dashboard instead of typing.

Every text field has a microphone. harnsy sends your speech to the recognizer you choose and puts the text at your cursor. You edit it, then send it.

#42Checkout: no double charge on retryin review
Your word

Looks good. One thing:

Recording: press again to recognize, Esc cancels

Ctrl+Shift+Space start / stop · Esc cancel

Dictation in the comment box of a work item: recording, with the level and the time. Sample data.

Speak

A microphone in the field you are in.

A microphone appears in the corner of the text field where your cursor is. Click it, or press Ctrl+Shift+Space (on a Mac, ⌘+Shift+Space works too).

Record, then recognize.

While you record, a level meter and a timer show. Press again to recognize; Esc cancels.

The text lands at the cursor.

The recognized text is put where your cursor is. It is not sent on its own: you edit it and send it yourself.

A message that says what to do.

No microphone, no access to it, no provider yet, a key the provider rejected: each has its own message and says where to fix it.

Choose the recognizer

You add the provider.

harnsy brings no recognizer of its own. Add one under System › Connections › Dictation: OpenAI or your own Whisper server. Until you do, no microphone shows in the fields.

OpenAI, with your key.

Speech goes to OpenAI with your API key; OpenAI bills it per minute of audio.

Your own Whisper.

A Whisper server with an OpenAI-compatible API (for example Speaches), on this machine or in your network. The speech stays there.

A language for each provider.

Choose the recognition language: Auto, where the provider detects it, or a fixed one. A fixed language is more reliable on short phrases.

Several providers, one default.

Add more than one and make one the default; the default is the one the microphone uses.

Where your speech goes

The key stays on this machine.

The API key stays on this machine, and the audio is not kept: it is held in memory only while it is recognized.

The browser’s rule for the microphone.

A browser gives a page the microphone only over https or on this machine (127.0.0.1, localhost). Open the dashboard that way to dictate.

#42Checkout: no double charge on retryin review
Your word

Looks good. One thing: the retry message should say when the link expires.

AcceptReturnSend comment

Ctrl+Shift+Space start / stop · Esc cancel

The recognized sentence lands at the cursor, after what was already typed; nothing is sent until you send it. Sample data.
Dictation2Add provider

Speak into any text field of the dashboard: a microphone appears at the corner of the field you are in. harnsy sends the speech to the provider below and puts the text where the cursor is; you edit it before sending. The key stays on this machine, and the audio is not kept.

  • OpenAIdefault

    OpenAI API · gpt-4o-mini-transcribe · ••••a1b2

    WorksRecognition languageAuto
  • Whisper

    Local Whisper · Systran/faster-whisper-small · no key

    WorksRecognition languageRussianMake default

Auto: the provider detects it. A fixed language is more reliable on short phrases.

System › Connections › Dictation: two providers, one is the default. Sample data.

Limits, honestly

  • A recording stops by itself at 5 minutes and is then recognized. Your provider may set limits of its own.
  • You need a provider: OpenAI with your API key, or a Whisper server of your own.
  • With OpenAI your speech leaves this machine for OpenAI; with your own Whisper it stays where that server runs.
  • The browser must be able to record audio and be allowed to use the microphone.

Your first team is one prompt away.

Installing takes one sentence to your agent. To open agents for you, harnsy drives a terminal: tmux on Linux and macOS, its own terminal host on Windows.

Install harnsy following https://harnsy.dev/llms.txt
site-3flead · Claude Codeliveview only
❯ Plan #42 with the team.

Waiting for the breakdown from analyst-7a…

from analyst-7a through harnsy❯ #42 broken down: three acceptance criteria, including a retry after 24 h.

I’ll hand #42 to site-9a.

❯