Telepath Dashboard
The glanceable startup dashboard — parallel data fetching with cached AI summaries.
Telepath is the at-a-glance dashboard the shell shows on launch: a grid of cards that pull together your email, news, and other signals, each distilled by the LLM into a short summary. It's powered by.
What it does
the dashboard service encapsulates three things:
- Parallel fetching — email and news (and other sources) are fetched concurrently via a
ThreadPoolExecutor, so the dashboard assembles quickly. - AI summarization — each source's content is summarized by the LLM into a compact heading + body.
- Caching — summaries are cached by a content hash with a 30-minute TTL, so the same content isn't re-summarized on every refresh.
Content-hash summary cache
Each piece of content is hashed (compute_content_hash); the summary cache is keyed on that
hash:
- Cache hit (within 30 min) → the stored
{heading, body}is returned instantly. - Cache miss → a placeholder is shown and the summary is generated in the background
(tracked in
pending_summaries), then filled in — so the UI never blocks waiting on the LLM.
Cached summaries are also exposed over HTTP:
| Endpoint | Purpose |
|---|---|
GET /api/summaries/{content_hash} | Fetch a cached summary |
POST /api/summaries/batch | Request/fetch summaries in bulk |
Launching it
The dashboard is summoned by the demo or telepath query and auto-runs on shell startup.
You choose which cards appear with --cards=:
demo --cards=email,news,weatherThe shell remembers your selection in SharedPreferences (telepath_cards_config) and
replays it on the next launch — see Desktop Environment.
Why it's separate
Telepath has its own service because its needs are different from a normal /chat:
concurrency (many sources at once), caching (don't re-summarize unchanged content), and
background work (return the layout immediately, fill summaries in as they're ready). Keeping
it in isolates that logic from the main composition path.