Overview
Universal Streams are how Alfred automatically ingests data from the services you already use. Connect your email, notes, wearable devices, code repositories, and more — Alfred continuously pulls or receives data, processes it through the event pipeline, and creates structured vault records without any manual effort. Once connected, each integration becomes a live stream of context that Alfred draws on to help you.How Streams Work
Every stream uses one of three transport types:- Pull — Alfred fetches data on a schedule (e.g., Gmail every 5 minutes, Notion every 15 minutes)
- Push — An external service sends data to Alfred via webhook (e.g., GitHub, Polar, Omi)
- System — Internal Alfred activity that generates events automatically (e.g., OpenClaw conversations)
- Raw data arrives (pulled or pushed) and is stored as JSONL files on your tenant
- The event processor classifies each event by type and extracts structured fields
- The Curator creates or updates vault records, linking entities together
- Deduplication via
source_refensures the same event is never processed twice
Pull-based streams are powered by StreamPullerWorkflow, which runs on Temporal schedules. This gives you reliable, exactly-once processing with automatic retries if something goes wrong.
Gmail
Alfred connects to your Gmail account via OAuth2 and pulls new messages every 5 minutes.Authentication
Gmail uses Google OAuth2. During onboarding, you are prompted to connect your Google account automatically. You can also connect it later from the Integrations page in Settings.What gets synced
- Full email content (not just metadata) — subject, body, recipients, and timestamps
- A 100-day backfill runs during onboarding to give Alfred historical context
- New messages are fetched every 5 minutes via StreamPullerWorkflow
Processing pipeline
Emails flow through the standard pipeline: event processor classifies the message, the Curator creates vault records for people, conversations, decisions, and tasks found within the content.Notion
Alfred connects to your Notion workspace using an Internal Integration Token. Unlike Gmail, this is not an OAuth flow — you create the integration yourself and share specific pages with it.Setup
- Go to notion.so/profile/integrations
- Create a new Internal Integration and copy the token
- In Alfred, go to Integrations and add the Notion integration with your token
- In Notion, share the pages you want Alfred to access with your integration
What gets synced
- Page content fetched via the Notion blocks API
- Database schemas and properties
- New and updated content pulled every 15 minutes
- All requests use the required
Notion-Version: 2022-06-28header
Omi Ambient
Omi is a wearable device that streams ambient audio to Alfred for local transcription. This integration is fully privacy-focused — audio is transcribed on Alfred’s infrastructure with no external API calls.How it works
- The Omi device streams raw PCM16 audio to Alfred via a webhook
- RMS energy speech detection identifies speech segments and discards silence
- Speech segments are grouped by 60-second gaps between utterances
- Transcription runs locally using whisper-large-v3 (int8 quantization, CPU)
- Transcribed text is emitted as stream events and processed into vault records
Webhook URL
Configure your Omi device to send audio to:{tenant} with your Alfred tenant subdomain and {webhookToken} with the token shown on your Integrations page.
Quality and retention
- A quality gate filters out low-confidence results: language confidence must exceed 0.5 and word count must be at least 5
- Raw audio is retained for 48 hours, then automatically purged
- No audio is sent to any external transcription service
Because transcription runs entirely on Alfred’s infrastructure using a local Whisper model, your ambient audio never leaves the platform. See the Security page for more details.
GitHub Webhooks
Alfred receives push events from GitHub repositories via webhooks with HMAC signature verification.Setup
- In your GitHub repository, go to Settings → Webhooks
- Add a new webhook using the URL shown on your Alfred Integrations page
- Set the content type to
application/json - Enter the webhook secret provided by Alfred for HMAC signature verification
- Select the events you want to forward
Polar Payments
Polar payment and subscription events are delivered to Alfred via webhooks with HMAC signature verification.Setup
- In your Polar dashboard, configure a webhook pointing to the URL shown on your Alfred Integrations page
- Use the provided secret for HMAC signature verification
- Select the payment and subscription event types you want to forward
Custom Webhooks
Any service that can send HTTP POST requests with a JSON body can integrate with Alfred using a custom webhook.How it works
- POST any JSON payload to the webhook URL shown on your Integrations page
- Alfred uses a passthrough parser — the raw payload is stored as a stream event
- The event processor classifies the content and the Curator creates appropriate vault records
OpenClaw Sessions (System)
Every conversation you have with Alfred — whether through Telegram, the web dashboard, or any other interface — is automatically captured as a system stream.How it works
- The alfred-inbox hook buffers messages during a conversation
- Messages are flushed after 10 turns or 5 minutes of idle time, whichever comes first
- Flushed conversations are processed by the event processor and the Curator creates conversation records in your vault
OpenClaw session capture means Alfred remembers what you have discussed. Decisions made, tasks assigned, and ideas explored during conversations are extracted and linked to relevant vault records.
Managing Integrations
All integrations are managed from the Streams page in your Alfred dashboard.Connecting a new integration
- Click Connect Integration
- For OAuth sources (like Gmail), you are redirected to the provider’s consent screen to authorize access
- For API key sources (like Notion), a dialog appears where you enter the token
- For push sources (like GitHub, Polar, Omi), Alfred generates a webhook URL for you to configure in the external service
Monitoring your streams
Each connected integration shows:- Event count — total events received
- Last event time — when the most recent event arrived
- Status — whether the stream is active, paused, or in error
Controls
- Pause — temporarily stop pulling or accepting events from a stream
- Resume — restart a paused stream
- Delete — permanently remove the integration and stop all data ingestion
Copying webhook URLs
For push-based integrations, use the copy button next to the webhook URL. Omi displays your full tenant-specific URL with the authentication token pre-filled.Using the Inbox
Manually share content with Alfred
Security
How Alfred protects your data across all integrations
