Skip to content

humanrouter/granola-live

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

granola-live

Query your in-progress Granola meeting transcript from any MCP-capable coding agent — Claude Code, Codex, and friends. Ask "what did we just talk about?", "catch me up," or "research the company I just mentioned" while you're still in the meeting.

granola-live --tail 1500
ACTIVE MEETING: Q3 Planning
ID: d738365c-...
Started: 2026-06-11T05:10:00+00:00
Transcript length: 2909 chars
============================================================
...(showing last 1500 chars)

Me: ...okay switching topics, let's talk about the new pricing tier...

Your agent reads that, and now it can summarize it, answer questions about it, or go do live research on whatever was just said — using all the other skills, tools, and MCP servers you've already wired into your terminal.


Why this exists

Granola already has live features. But the magic here isn't the transcript — it's what your coding agent can do with it.

When the running transcript is available to Claude Code / Codex / your agent of choice, it can combine it with everything else you've set up: web search, your CRM, your docs, your internal MCP servers, your custom skills. Someone mentions a company on the call → your agent pulls it from the transcript, looks it up, and hands you a brief before they finish their sentence. That's a layer Granola's built-in features can't reach, because it's your stack.

And because it's all just MCP, this isn't Claude-specific. Any coding agent that can run a shell command (or speak MCP) can use it.

⏱️ It's near-real-time, not instant

Granola flushes transcript updates to its server in batches, roughly every 20–40 seconds. This is not word-by-word live captioning.

  • ✅ "What did we cover a minute or two ago?" — reliable.
  • ⚠️ Your last few seconds of speech may not have landed yet. Give it ~30s before asking about your most recent sentence.

This is a property of how Granola syncs, not something the tool can speed up. Plan around it and it works great.

How it works

granola-live talks to Granola's hosted MCP server (https://mcp.granola.ai/mcp) over OAuth and calls the get_meeting_transcript tool for the meeting you're currently recording. That's the whole trick. No local cache scraping, no screen reading — just the official MCP endpoint.

Granola app (recording) ──> Granola MCP server ──> granola-live ──> your coding agent

Install

# Recommended: isolated global command via pipx
pipx install git+https://github.com/humanrouter/granola-live

# or with pip
pip install git+https://github.com/humanrouter/granola-live

# or just clone and run the single file (only needs httpx)
git clone https://github.com/humanrouter/granola-live
cd granola-live && pip install httpx
python3 granola_live.py --help

Then authenticate once (opens your browser):

granola-live --auth

Credentials are stored in ~/.granola-live/ (mode 600). They never touch this repo.

Usage

granola-live                 # full running transcript of the active meeting
granola-live --tail 1500     # just the last ~1500 chars
granola-live --list          # list recent meetings (pick an id)
granola-live --meeting-id <id>
granola-live --hours 6       # widen lookback if the meeting started >3h ago
granola-live --status        # auth status

The active meeting is auto-detected as the most recently created one. During a recording that's essentially always the live meeting.

Use it with Claude Code (drop-in skill)

This repo ships a Claude Code skill so you can just talk naturally during a meeting ("catch me up", "summarize so far", "research what I just mentioned") and the agent fetches + responds.

cp -r skills/live-transcript ~/.claude/skills/

Restart Claude Code and the live-transcript skill is available. See skills/live-transcript/SKILL.md for how it behaves.

Use it with Codex / other agents

There's no Claude lock-in. Two options:

  1. Shell out to the CLI. Any agent that can run commands can call granola-live --tail 1500 and read the result. Wrap it in whatever that agent uses for tools/prompts.
  2. Point the agent at the MCP server directly. The transcript comes from Granola's get_meeting_transcript MCP tool — if your agent already speaks MCP, you can connect it to https://mcp.granola.ai/mcp and skip this CLI entirely. granola-live is just a convenient, auth-handling wrapper.

Privacy & credentials

  • OAuth tokens live in ~/.granola-live/, never in the repo (.gitignored regardless).
  • Transcripts are fetched on demand and printed to stdout; nothing is stored or sent anywhere except your own agent/terminal.
  • This is an independent tool and is not affiliated with or endorsed by Granola.

Requirements

  • Python 3.9+
  • A Granola account (the live transcript comes from your own meetings)
  • httpx (installed automatically)

License

MIT — see LICENSE.

About

Query your in-progress Granola meeting transcript from any MCP-capable coding agent (Claude Code, Codex, etc.). Summarize, query, or research a live conversation while you're still recording.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages