Homelab

Build an AI task tracker with safe integrations (GitHub, email, calendar)

How to let an AI keep your to-do list current from GitHub, email and calendar signals, with read-only scopes, verified completion, audit logs, easy revocation and human approval.

2026-10-25
Illustration: Build an AI task tracker with safe integrations (GitHub, email, calendar)
Original illustration by SafeToUpdate (CC BY 4.0).

Goal: a to-do list that mostly updates itself. A merged PR closes the matching task, a “shipped!” email marks a task probably done, and tomorrow’s calendar event becomes a reminder. You stay in charge of anything that matters.

The golden rule: verified vs. guessed

Every status change gets a confidence label:

Only verified changes apply automatically. Everything else goes to an approval queue.

Architecture

  1. Connectors (read-only):
    • GitHub: fine-grained token, read-only, selected repos
    • Email: OAuth with a read-only scope. For Gmail that’s gmail.readonly (Google’s Gmail API scopes), and you can narrow further by only fetching one label
    • Calendar: calendar.readonly or calendar.events.readonly (Calendar scopes)
  2. Normalizer: turns each item into an event {source, id, time, type, text}. Store only what you need (subject plus link, not whole email bodies, if you can).
  3. Task store: a local SQLite file or a private Kanban board. Keep it on your own machine or server.
  4. AI step: given new events and open tasks, it outputs proposals in strict JSON, {task_id, new_status, confidence, evidence_link}. It never gets write credentials.
  5. Applier: applies verified changes, queues the rest for you, and writes everything to an append-only audit log.

Permission minimization checklist

Worked example

Task: “Publish Tailscale guide” (linked to GitHub PR #57 and a calendar deadline).

  1. Monday: a calendar event “Publish Tailscale post” tomorrow. The AI proposes the reminder, verified (it came from the calendar event).
  2. Tuesday 10:02: GitHub event, PR #57 merged. Status becomes Done (verified), and the audit log records pr_merged #57 → task 12 done.
  3. Tuesday 10:30: an email from a friend says “looks great”. The AI proposes a note, not a status change.
  4. Wednesday: the AI suggests archiving the task. It’s queued for your one-tap approval.

Risks to plan for

Difficulty and cost

Integrations described here are patterns using documented APIs. Test each one in your own setup before trusting it.

📬 The Weekend Patch Report

One email a week: what's safe to update, what will bite, and one practical tip for your homelab or printer.

Free, weekly, unsubscribe anytime.