A Pipecat voice bot that reads your Google Calendar through Scalekit AgentKit.
Watch the demo: https://screen.studio/share/86SdvaHM
This sample is Pipecat OSS on a laptop. Scalekit is AgentKit only: a connection, a connected account, and execute_tool. Scalekit is not the language model.
Scalekit provides auth and actions on behalf of users, with 500+ connectors and 20,000+ tools.
Developer (browser at http://localhost:7860/client)
│ local WebRTC audio
▼
Pipecat bot.py (this process)
│ googlecalendar_list_events
▼
Scalekit AgentKit execute_tool(CONNECTED_ACCOUNT_ID)
│
▼
Google Calendar (your connected account)
- The browser never sees a Scalekit secret.
- The LLM never sees an OAuth token.
execute_toolruns asCONNECTED_ACCOUNT_ID.
One-time setup (accounts + dashboard config) is below. Once .env is filled:
uv sync
uv run bot.pyOpen http://localhost:7860/client. Allow the microphone. Click Connect. Say "What's on my calendar today?" — the bot lists your calendar.
- Python 3.11+ and uv
- A Scalekit environment (AgentKit)
- A Google Cloud OAuth client
- A real OpenAI API key (same as the Pipecat quickstart)
- Deepgram and Cartesia keys (same as the Pipecat quickstart)
Google Calendar has no Scalekit-managed OAuth app in this sample. Create your own Google OAuth app, then paste it into Scalekit.
- In the Scalekit Dashboard go to AgentKit → Connections → Add connection. Choose Google Calendar. Set the connection name to
googlecalendar. - Copy the Scalekit Redirect URI.
- In Google Cloud Console create an OAuth client (Web application). Add that Redirect URI. Enable the Google Calendar API.
- Paste the Google Client ID and Client Secret into the Scalekit connection. Save.
- In AgentKit → Connected Accounts, connect your Google account. Use an identifier you will put in
.envasCONNECTED_ACCOUNT_ID. Confirm the connected account is Active.
Copy SCALEKIT_ENV_URL, SCALEKIT_CLIENT_ID, and SCALEKIT_CLIENT_SECRET from the Scalekit Dashboard into .env.
See Configure a connection and Google Calendar connector.
cp .env.example .env
# fill .env with your values
uv sync
uv run pytestThen run the Quickstart commands above. If speech keys are missing, the process exits with an error that includes the Deepgram and Cartesia signup URLs.
| Name | Role |
|---|---|
SCALEKIT_ENV_URL |
AgentKit environment URL |
SCALEKIT_CLIENT_ID |
Scalekit client id |
SCALEKIT_CLIENT_SECRET |
Scalekit client secret |
CONNECTED_ACCOUNT_ID |
Your connected-account identifier |
SCALEKIT_CONNECTION_NAME |
googlecalendar |
OPENAI_API_KEY |
Real OpenAI key |
OPENAI_MODEL |
gpt-4o-mini (or another OpenAI model) |
DEEPGRAM_API_KEY |
Required |
CARTESIA_API_KEY |
Required |
Do not commit .env.
- Not Pipecat Cloud. No Dockerfile. No
pcc-deploy.toml. - Not a Scalekit LLM product. The LLM is OpenAI.
- Not Whisper or Kokoro. Speech is Deepgram + Cartesia.