Skip to main content

🛫 Obsidian Flight Deck

Your whole day on one Obsidian page — generated from your real dev tools.

Standup, PRs shipped & in flight, who you're waiting on, today's calendar, the email that actually needs you, unsent Slack drafts, and service status — assembled automatically and refreshed every few minutes. No server. No database. Runs entirely on your machine.

CI Python 3.11+ Zero dependencies License: MIT PRs welcome

Flight Deck dashboard — a live scroll-through

Why

You already have a dozen tabs open to answer one question — what should I be doing, and what's blocking me? Flight Deck answers it in one glance, in the notes app you already keep open. It reads your live tools and writes a clean, card-based page into your Obsidian vault. You read it; you never maintain it.

  • One glance, not twelve tabs. GitHub, calendar, email, Slack, and status pages, unified.
  • Standup writes itself. A curated standup card you shape once and edit inline.
  • Yours, on your machine. Read-only scopes, credentials in your OS keychain, nothing phones home.
  • Extensible by design. Every panel is optional, reorderable, and ~30 lines to add your own.

Panels

Panel Shows Needs
Standup An editable note you curate — embedded live
My notes A scratch pad, editable beside the deck
Tech progress Last-24h PR metrics + merged / in-progress tables, tagged by project GitHub
Waiting on Who owes you, scanned from your project notes
System status Any Statuspage service — GitHub, your own, anything
Calendar Today's events + invites to answer, one click to the event Google (read-only)
Email — needs you Unread person-to-person mail, newsletters filtered out Google (read-only)
Slack drafts Your unsent drafts — read + draft only, never posts Slack

Pick the ones you want, in the order you want, in one config file. Add your own in minutes.

Quickstart

pip install obsidian-flight-deck        # or: pipx install obsidian-flight-deck
flightdeck init                         # writes ~/.config/flightdeck/flightdeck.toml
$EDITOR ~/.config/flightdeck/flightdeck.toml    # set your vault path + repos
flightdeck setup github                 # reuses the `gh` CLI, or paste a token
flightdeck run                          # builds the deck into your vault
flightdeck install-schedule             # auto-refresh every few minutes (launchd / cron)

Open the deck note in Obsidian (Reading view). That's it. Add the optional integrations whenever:

flightdeck setup google                 # read-only Calendar + Gmail (5-min one-time OAuth)
flightdeck setup slack                  # browser-session tokens — no app, no admin approval
flightdeck doctor                       # verify config + connections

Full auth walkthroughs (including the 5-minute Google setup and the two Slack values): docs/AUTH.md.

Configuration

One file, flightdeck.toml. Panels are an ordered list — reorder or delete freely.

[vault]
path = "~/Obsidian/MyVault"

[[panels]]
name = "status"
[[panels.services]]                     # add ANY status page, no code
label = "GitHub"
url   = "https://www.githubstatus.com"
[[panels.services]]
label = "My API"
url   = "https://status.mycompany.com"

[[panels]]
name = "github_prs"
repos = ["my-org/app", "my-org/infra"]
active_projects = ["Billing", "Onboarding"]     # optional; else every label shows
[panels.github_prs.project_labels]              # optional regex → project name
"bill|invoice" = "Billing"

See flightdeck.example.toml for every option.

Architecture

Architecture

One flightdeck run (fired on a timer) fetches from your configured sources over read-only HTTPS, each enabled panel renders its markdown, and the assembled deck is written into your Obsidian vault. Credentials live in your OS keychain; nothing is sent anywhere but the APIs you set up.

Extending it

  • Add a status endpoint → one more [[panels.services]] line. No code.
  • Add repos / project mapping → edit the github_prs options. No code.
  • Add a whole new panel → subclass Panel, implement render(), register it. ~30 lines. Guide: docs/PANELS.md.

Design

  • Zero dependencies. Pure Python standard library. Config is TOML (tomllib). Installs in seconds.
  • Everything derived. The deck is regenerated each run — you never hand-edit it. The only hand-edited inputs are the notes you embed (Standup, My notes).
  • Read-only by default. Google and Slack use read-only scopes; the Slack integration can create drafts but cannot post.
  • On your machine. Secrets go in your OS keychain (macOS) or a 0600 file. No telemetry, no cloud.

FAQ

Does it work without Obsidian? It writes a Markdown file — Obsidian just renders it beautifully. Any Markdown viewer shows the content; the card styling is Obsidian-specific.

Is my data safe? Nothing leaves your machine except calls to the APIs you configure, all read-only by default. See SECURITY.md.

Two-column / grid layout? Yes, with the free Multi-Column Markdown Obsidian plugin (Reading view). Single-column works with no plugins.

Windows / Linux? The core is cross-platform; the keychain and scheduler paths are macOS-first today, with a cron fallback and a file-based credential store elsewhere. Contributions welcome.

Only GitHub and Google and Slack? Those ship built-in. The status panel already takes any Statuspage service, and a new source is a ~30-line panel — see docs/PANELS.md.

Roadmap

  • More built-in panels (CI runs, incidents, on-call, PR review queue).
  • Optional web export — share a redacted view (great for a manager or teammate).
  • Optional AI layer (harness-agnostic): compose the standup and answer questions over your deck's history — pluggable across Claude, Codex, or any CLI you already use. See the plan.
  • First-class Windows/Linux support.

Contributing

Small, dependency-free, and easy to hack on. See CONTRIBUTING.md and the good first issues. Star the repo if it's useful — it genuinely helps. ⭐

License

MIT.

Release files for obsidian-flight-deck 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for obsidian-flight-deck 0.1.0
File Size Uploaded
obsidian_flight_deck-0.1.0.tar.gz 721.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for obsidian-flight-deck 0.1.0
File Interpreter ABI Platform
obsidian_flight_deck-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 745.7 kB

Release files / obsidian_flight_deck-0.1.0.tar.gz

Download URL obsidian_flight_deck-0.1.0.tar.gz
Size 721.3 kB
Tags Source
SHA-256 checksum
How to use checksums
a52ba15cd495f5432b152600cdb742d7da698e2745131b0fc8f197d953307109
BLAKE2b-256 checksum
How to use checksums
972e021514cc27bb006174d6cd7639a578900f2a4004c5682e683c5055ab410d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / obsidian_flight_deck-0.1.0-py3-none-any.whl

Download URL obsidian_flight_deck-0.1.0-py3-none-any.whl
Size 24.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e031a0e1ee733c949891208d4bcf7a7680c1a02c6a86b60def3b14a791709255
BLAKE2b-256 checksum
How to use checksums
872260ecd0832ed73ffd28e822e7148c284277612962c5dc60da9ca78ed86ca3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page