Flight notifications via byAir: delay, gate, connection risk, inbound aircraft delay, time-to-leave, arrival logistics. NanoClaw per-chat overlay tile.
69
87%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Actionable flight notifications for NanoClaw. Replaces generic "21 minutes to departure" reminders with alerts that change behavior. Powered by byAir for flight data and Google Maps Distance Matrix for traffic-aware time-to-leave.
Per-chat overlay tile. Install via NanoClaw's containerConfig.additionalTiles mechanism.
tessl install jbaruch/nanoclaw-flight-assistAdd to a chat's overlay tile list via update_group_config:
additionalTiles: ["jbaruch/nanoclaw-flight-assist"]| Variable | Purpose | Where to get |
|---|---|---|
BYAIR_MCP_URL | byAir streamable-HTTP MCP endpoint (includes API key) | https://byairapp.com/mcp/ — Pro subscription, personal MCP link |
GOOGLE_MAPS_API_KEY | Distance Matrix API key for time-to-leave | https://console.cloud.google.com/apis/credentials |
Store both in OneCLI vault. Never commit. See .env.example for the contract; GitHub Actions secrets configuration link is in its file header.
| Rule | Summary |
|---|---|
| flight-data-locality | byAir is the single upstream for flight data; AeroAPI / Flighty / airline-specific APIs forbidden |
| Skill | Description |
|---|---|
| flight-assist | Action router: diagnose credentials, set home base, or compose a user-facing notification from a precheck wake event (delay, gate change, cancellation, boarding, time-to-leave, carousel, day-before, arrival logistics, tracked-flight add/remove) |
| sync-tripit | Adaptive scheduler that fires the byAir → active-flights.json refresh on a precheck-gated 5-min cadence — responsive on flight days, idle between travel windows. Diagnostic-only LLM surface (the gate + sync happen in the precheck script) |
| check-travel-bookings | Checks upcoming trips for missing bookings (flights, hotels, accommodation) by reading the nightly-built travel-db.json. Reports gaps for all upcoming trips — no date limit. Supports snooze state. Silent when all bookings are complete or snoozed. Use when the user asks about upcoming travel plans, itinerary completeness, missing reservations, or TripIt trip status. |
The skill bundle includes three executable scripts the agent invokes via the SKILL.md actions:
scripts/check-env.py — verifies BYAIR_MCP_URL + GOOGLE_MAPS_API_KEY are setscripts/set-home-base.py — persists home address to tile config for time-to-leave queriesscripts/get-flight-state.py — fetches a flight's last-known snapshot to enrich notificationsPlus scheduler-invoked scripts (not user-facing):
flight-assist/precheck.py — runs every ~2 min, polls byAir per cadence ladder, emits wake eventssync-tripit/precheck.py — runs every 5 min, adaptive-gated; delegates to flight-assist/sync_tripit.py only when a flight is imminent or the index is stale (see the sync-tripit skill for gate predicate + thresholds)flight-assist/sync_tripit.py — the byAir → state reconciliation invoked by the sync-tripit schedulerconnection_at_risk events when the transfer window falls below min_transfer_minutes (configurable, default 45). State schema bumped to v2 with owner-side migrationbyair_list_tripsSee CHANGELOG.md for version history.