Agent-readable docs index: /llms.txt. Full docs in one file: /llms-full.txt. Download /docs.zip to grep all markdown files locally.

Voice Messages

Record a voice message in Discord and Kimaki transcribes it, then handles it like a typed message. Speaking is often faster than typing a long instruction, especially on your phone.

How it works

voice ──▶ transcription ──▶ "» Tommy: <text>" ──▶ session ▲ │ project file tree for accuracy
  1. You record a voice message in a thread or a project channel.
  2. Kimaki sends the audio to a transcription model.
  3. Kimaki shows the transcription as » Tommy: <text>. In a thread it is a reply to your voice message. In a project channel it is the first message of the new thread.
  4. The text goes to the agent like a normal message. In a thread it interrupts the current run, like typed text.

Queue a voice request

Say "queue this message" together with the task, and it waits until the current run finishes. Kimaki removes the queue instruction from the transcription. If the session is idle, the request starts at once.
Queue this message. Add tests for the login form.

Create a separate chat

Ask explicitly for a new chat, session, or thread. A new chat starts fresh in a new thread, with no conversation history:
Fix the login bug. Create a new chat for this.
To keep the current context, ask explicitly for a side chat or fork in a thread that has a session. This works like btw:
Explain the parser. Create a side chat with the current context for this.
A new chat or a side chat does not interrupt the current thread. Its pending questions and permission requests stay open.
Queue and side chat only work in a session thread. In a project channel, every voice message starts a new thread anyway.

Pick an agent

Say "use the plan agent" (or any primary agent of the project) to switch to that agent for this request. This works with a normal message, a new chat, or a side chat. A queued voice message does not switch the agent, because that would change the running turn.
Routing and agent choices only happen when you say them explicitly. Words like "by the way" or "plan the refactor" do not change the route or the agent. A voice message with only a routing instruction and no task does not start an empty turn.

Accuracy from your project file tree

Code is hard to transcribe: file names and function names are not normal words. Kimaki adds the project's file list (from git ls-files) to the transcription prompt. When you say a file path or a function name, the model can match it to your real codebase.
Say file and function names naturally. Because the transcriber sees your file list, "open thread reducer" is much more likely to come back as thread-reducer.ts.

Setup: an API key or ChatGPT subscription

Transcription works best with an OpenAI or Gemini API key. Add one in Discord with /transcription-key (server owner or administrator only), or from a terminal:
kimaki bot keys set --openai sk-... kimaki bot keys set --gemini AIza...
In /transcription-key, a key that starts with sk- is saved as an OpenAI key. Any other key is saved as a Gemini key.
Kimaki tries these in order. If one fails, it tries the next:
  1. OpenAI key (saved with Kimaki, else OPENAI_API_KEY)
  2. ChatGPT subscription, if you signed in to OpenCode with Sign in with ChatGPT
  3. Gemini key (saved with Kimaki, else GEMINI_API_KEY)
  4. Hosted Whisper on kimaki.dev, in gateway mode
ChatGPT and Whisper only transcribe: queue, chat, and agent instructions are ignored, and the text is handled as a normal message. ChatGPT uses no API credits.
OpenAI keys use gpt-audio-1.5. Gemini keys use gemini-flash-latest.

Gateway mode without a key

With the shared Kimaki bot (--gateway) and no key, Kimaki uses a free hosted Whisper transcription on kimaki.dev. Whisper only transcribes speech: queue, chat, and agent instructions are ignored, and the text is always handled as a normal message.
Without a key or ChatGPT sign-in on your own bot, a voice message gets an error that tells you to run /transcription-key.

Sending audio back

Kimaki can also speak. When you ask for audio, the agent can make a speech file with kimaki tts and post it with kimaki upload-to-discord. kimaki tts uses the same OpenAI or Gemini keys. See the Commands reference.