Today's Google Calendar as a slim strip on the edge of your Mac screen, with a red line at now.
Download for Mac · Website · Google setup guide
Reminders fire once and calendar tabs get buried. Todaytape keeps the shape of your day in view while you work: what's on now, what's next and how long you have, without opening anything.
- A tape that stays put. Always on top, on every Space and over full-screen apps. It never takes focus, so you keep typing.
- Collapsed or expanded. Slim colour blocks while you work. Right-click for titles and times, with the current time riding the red line.
- Sized to your day. Blocks are as long as the events; gaps are free time. The tape runs from your first event to your last.
- One click to join. Click a block to open its Google Meet, Zoom, Teams, Webex or Whereby link.
- Countdown in the menu bar. Minutes left in the current event, or until the next one.
- Your colours. Pick a colour per calendar; text stays readable and finished events fade.
- Private by design. Read-only, and it talks to Google directly with a client you own. There's no Todaytape server, account or analytics.
Requires macOS 14 Sonoma or later and a Google account.
- Download Todaytape-x.y.z.zip from the latest release and unzip it.
- Drag Todaytape.app into Applications.
- Open it (see the note below the first time).
Todaytape is free and open source, and isn't notarised by Apple yet, so macOS asks you to confirm once:
- Double-click Todaytape. macOS says it can't verify the developer. Click Done (or Cancel).
- Open System Settings → Privacy & Security, scroll down to the message about Todaytape, and click Open Anyway. Confirm with your password or Touch ID.
Or, in Terminal: xattr -dr com.apple.quarantine /Applications/Todaytape.app
Prefer not to run a downloaded binary? Build it yourself; it takes about a minute.
The first time you open Todaytape, a Set up Todaytape window walks you through three steps, with a button for each Google page:
- Prepare a Google Cloud project: create a project, enable the Calendar API, and add yourself as a test user.
- Add your Desktop client: create a Desktop app client, download its JSON, and click Import client JSON…
- Connect Google Calendar: sign in through your browser.
It takes about 5 minutes, once. The Google setup guide has every click and a troubleshooting table.
Why do I need my own Google client? Apps that read Gmail or Calendar data must pass Google's verification before anyone can sign in to a shared client. With your own client, your calendar goes straight from Google to your Mac, and nobody else can use it or see your data. The trade-off: while your client is in Testing, Google signs you out every 7 days, and you click Connect again.
| Tape | Right edge of the screen, on top of every app and Space |
| Right-click the tape | Expand or collapse |
| Click a block | Join the call, or open the event in Google Calendar |
| Menu bar icon | Countdown, plus Expand, Hide, Refresh, Settings and Quit |
| Hide | Tucks the tape into a small tab at the screen edge; click the tab to bring it back |
| Settings (⌘,) | Calendars and their colours, dark or light, open at login, Google account |
- Todaytape requests one permission:
calendar.readonly. It can't create, edit or delete events. - Your Mac talks to Google directly. Nothing is sent anywhere else.
- Your client, sign-in and settings live in
~/.todaytape, readable only by your user account. - Disconnect in Settings signs out and asks Google to revoke access. Remove client also forgets the client ID and secret.
You need the Command Line Tools (xcode-select --install). Xcode is optional.
git clone https://github.com/ProximoBinks/todaytape.git
cd todaytape
./build.sh --installThat builds build/Todaytape.app, copies it to Applications and opens it. Other options:
./build.sh # build only
./build.sh --release # Apple silicon + Intel, plus a zip in build/
./scripts/test.sh # run the testsCommand-line helpers, for debugging:
/Applications/Todaytape.app/Contents/MacOS/Todaytape --dump # print today's events
/Applications/Todaytape.app/Contents/MacOS/Todaytape --logout # forget the Google sign-in
/Applications/Todaytape.app/Contents/MacOS/Todaytape --versionSet TODAYTAPE_HOME=/some/folder to run with a separate config folder, for example to try the first-run setup without touching your own.
Sources/Todaytape/
TodaytapeApp.swift menu bar extra and command-line helpers
AppState.swift setup phases, sync, settings
OverlayController.swift the always-on-top panel and Settings window
OverlayView.swift the tape: layout, expand animation, now line
SettingsView.swift first-run setup and Settings
GoogleAuth.swift OAuth: loopback redirect, PKCE, state check
GoogleCalendar.swift Calendar API
Config.swift ~/.todaytape files
CalendarColor.swift palette, past-event fade, text contrast
Tests/TodaytapeTests/ self-checking tests (scripts/test.sh)
docs/google-setup.md the step-by-step Google guide
site/ the website (static HTML)
Issues and pull requests are welcome. Run ./scripts/test.sh before you open a PR, and never commit a client secret, credentials.json or tokens.json.
MIT © 2026 Elliot Koh