Cliff Notetaker is an invisible meeting assistant built on Recall.ai’s Desktop SDK, using Electron and Express that listens to your meetings and summarizes key points.
Full walkthrough on the Blogpost: Build a meeting notetaker like granola
Link to the docs for the Desktop SDK.
Follow the steps below to get Cliff running on your computer.
Watch the video below for a walkthrough of the setup:

- Automatic meeting detection
- Background recording using Recall.ai's Desktop SDK
- Transcript generation
- AI meeting summaries using OpenAI
- Displays:
- Meeting participants
- Meeting link
- Transcript
- AI summary
git clone https://github.com/recallai/cliff-notetaker.git
cd cliff-notetakernpm install @recallai/desktop-sdkCreate accounts and API keys from:
Rename the .env.example file inside of backend to .env and replace the following
RECALL_API_KEY=your_recall_api_key
OPENAI_API_KEY=your_openai_api_key
RECALL_API_BASE=your_api_base_when_you_signup
RECALL_API_BASE is the base URL for your Recall region and is determined when you sign up for Recall.ai
US West 2 -> https://www.us-west-2.recall.ai
US East 1 -> https://www.us-east-1.recall.ai
EU -> https://www.eu-central-1.recall.ai
Asia -> https://www.ap-northeast-1.recall.ai
From the root directory:
npm installRecall.ai requires a public webhook endpoint, so we expose the backend with ngrok.
First make sure you add the authtoken on ngrok:
ngrok config add-authtoken <token>Open a new terminal in your root directory, run:
ngrok http 3000You will receive a URL similar to:
https://abc123.ngrok-free.app
Login to Recall.ai and it will take you to your dashboard, then configure the webhook URL under the Webhooks section.
Add the following endpoint:
https://YOUR_NGROK_URL/webhooks/recall
Example:
https://abc123.ngrok-free.app/webhooks/recall
Add events such as:
sdk_upload.completedtranscript.done
These events allow the backend to:
- Retrieve the recording
- Generate a transcript
- Retrieve the transcript
- Trigger AI summarization
Open a new terminal in your root directory:
cd backendInstall required dependencies in the backend directory
npm install node server.js
The backend will run at:
http://localhost:3000
Open another terminal from the root directory:
npm start- The Electron app detects a meeting window.
- A recording starts using the Desktop SDK.
- When the meeting ends, Recall.ai returns:
sdk_upload.completed
- The backend retrieves the recording ID.
- A transcript job is created.
- Recall.ai sends:
transcript.done
- The backend retrieves the transcript.
- The transcript is sent to OpenAI for summarization.
- The UI displays:
- Meeting participants
- Meeting link
- Transcript
- AI summary
- Recall.ai Desktop SDK
- Electron
- Express
- OpenAI API
- ngrok
If you want to learn more about how to access system audio we've also written a blog on covering accessing system audio in multiple ways with demos. If you're just interested in macOS screen capture APIs there is a guide on all of the APIs to record on macOS. For those interested in Granola.ai, we've also put out a blog on open source Granola.ai alternatives and a tutorial on how to build a meeting notetaker like granola. Finally, if you are interested in building a desktop recorder from scratch without Recall.ai, read the blog post on how to record meetings without bots.


