Choose Discord, browser meetings, or both. The desktop app repeats this guide and can save the configuration as you go.
01 · Desktop
Install Kuali on macOS
The current release supports macOS 11 or newer on Apple Silicon. Homebrew verifies the checksum pinned by Kuali’s tap before installing the application.
Open Kuali from Applications. On first launch, the app opens its guided setup automatically. You can return to it later from the Guide button.
02 · Transcription
Download a Whisper model
Kuali includes the transcription engine, but model weights are downloaded separately. At least one model must be ready before initial setup can finish. If none is installed, Kuali keeps a model panel visible throughout the app instead of leaving transcription silently unavailable.
Choose the performance level that fits your Mac
Light uses Large v3 Turbo Q5 and is recommended for fast, accurate live transcription. Balanced uses Large v3 Turbo, Precise uses Large v3 Q5 for difficult audio, and Highest accuracy uses Kuali's reproducible Large v3 Q8 quantization. Kuali shows estimated RAM, download size, and the technical model name for every level.
Start the download
Select a model from the persistent model panel or open Settings → Transcription → Storage and choose Download selected model. The progress indicator remains visible while you use other parts of Kuali. Keep the app open until verification finishes.
You can join a call while it downloads
If a meeting starts before the model is ready, Kuali keeps the captured audio queued in memory and transcribes it when the download completes. Nothing already captured is discarded.
Choose where weights live
The default models folder is ~/.kuali. Use Models folder → Choose… to move downloaded or partial weights elsewhere. Kuali preserves the selected language and special terminology when moving them.
Manage downloaded weights
Under Downloaded weights, delete only the models you no longer need. If you remove the last one, the persistent model panel appears again until another model is ready.
The model uses RAM only during meetings
Kuali loads Whisper when the first active meeting needs it, shares that instance across concurrent meetings, and releases it after the final one ends. In testing on Apple Silicon, the Rust app used about 40 MB while waiting and up to about 600 MB while transcribing with the recommended Q5 model. Actual use varies. The downloaded weights remain on disk.
Add product names to the vocabulary
In Settings → Transcription → Custom vocabulary, add names such as internal products, acronyms, or people that Whisper should preserve.
03 · Discord
Connect Kuali to Discord in three simple steps
Create, paste, and authorize. Kuali prepares the technical details and saves each completed step; you only follow the buttons shown below. The dedicated bot token should be treated like a password.
Create the application
Open the Discord Developer Portal, sign in, select New Application, name it Kuali, and select Create.
Paste the token and your username
Open Bot, select Reset Token, and copy the value Discord shows. In Kuali, paste it together with your exact Discord @username, not the display name.
Treat the token like a password. Kuali verifies it locally from the desktop app and never places it in the authorization URL.
To copy your username, open your profile from the bottom-left corner of Discord and select the copy icon beside it.
Authorize the server
Kuali obtains the application ID from the token and opens Discord with the bot and applications.commands scopes already prepared. Choose the server, select Authorize, then return to Kuali and connect.
The authorization requests View Channels, Send Messages, Send Messages in Threads, Embed Links, Attach Files, Connect, Speak, and Use Voice Activity—never Administrator or permission to read message history.
With automatic following enabled, Kuali joins after you. You can pause following from Home or invite it manually with /record or /grabar.
04 · Meet, Teams, and Zoom
Connect Google Meet in three simple steps
Install, pin, and confirm. Chrome Web Store handles the extension and Kuali finds the desktop app locally—no developer mode or unpacked files. Keep Kuali open while recording.
Support status: Google Meet is stable. Microsoft Teams and Zoom are experimental and have partial support; capture, participant identity, or speaker separation may be incomplete in some meeting modes.
The Chrome Web Store listing works in Chrome, Edge, Brave, and Arc. Select Add when your browser asks for confirmation.
Pin Kuali
Open your browser’s extensions menu and pin the Kuali icon for quick access from meetings.
Confirm the local connection
Join a meeting and open Kuali’s extension. It should report that the desktop app is available and let you start recording. The default local port is 9099.
For development or when the store is unavailable, the desktop guide still provides the manual unpacked-install option.
05 · Integrations
Send completed meetings with Standard Webhooks
Kuali can deliver a completed meeting to applications you explicitly subscribe. These deliveries follow the Standard Webhooks specification, so existing verification libraries can validate them. The payload contains the transcript, participants, summary, and tasks available for the meeting; it never contains the original audio.
Create a subscription
Open Settings → Integrations → Subscribed applications, select Add application, and enter a name plus the endpoint URL that will receive the request. Use HTTPS for endpoints outside your computer.
Choose its scope
Subscribe the application to every completed meeting or limit it to one channel. Kuali sends meeting.completed only after that matching meeting and its optional AI processing finish.
Store the signing secret
Kuali generates a secret beginning with whsec_. Copy it into the receiving application and keep it private. Use Send test to receive a webhook.test event before relying on the integration.
Verify the raw request
Validate the signature before parsing the JSON. Standard Webhooks signs the exact bytes in webhook-id.webhook-timestamp.body using HMAC-SHA256.
Verify against the raw request body, reject stale timestamps, compare signatures in constant time, and deduplicate deliveries by webhook-id. Return any 2xx response only after accepting the event.
Each request uses type, timestamp, and data at the top level. Failed deliveries are retried with backoff and jitter; a numeric Retry-After response is honored when present. Receivers must therefore be idempotent.
06 · Verification
Check your first call
Start with two participants if possible. Speak one at a time, then overlap briefly to confirm that activity and attribution react as expected.
Kuali shows the meeting under Live meetings.
The active participant lights up while speaking.
Text appears during the call, not only after it ends.
Muting a participant stops that participant’s activity.
Leaving the meeting finalizes it and releases the Whisper model.
Discord commands
/record · /grabarInvite Kuali to your current voice channel.