Materialized queries over your connected data sources
A source view is a query against a connected integration — GitHub, Gmail, Slack, etc. — whose results are materialized as files in the virtual filesystem. You create a view, Airstore executes the query, and the matching data appears as a folder you can mount and read.There are two ways to define a view:
Smart mode — describe what you want in natural language and an LLM translates it into the appropriate API query.
Query mode — provide a structured filter object with explicit fields. No LLM involved; you get deterministic, repeatable results.
In smart mode, results are interpreted by an LLM, not exact matches. Be specific in your guidance for best results. Query mode gives you full control when you need precision.
Smart mode is the fastest way to get started. Provide a name and a guidance string describing what you want:
Name: "Design Issues"Guidance: "all Linear issues related to design or frontend UX"
Airstore sends your guidance to an LLM, which translates it into the source’s native query format (Gmail search syntax, GitHub search qualifiers, etc.), executes the query, and materializes the results as files.
Query mode lets you define views with structured filters — specific fields per integration, no LLM interpretation. This is useful when you know exactly what you want, or when you’re building automation that needs deterministic results.In the dashboard, toggle the mode selector from Smart to Query, then fill in the filter fields for your integration.Via the SDK:
GitHub views support a content_type field that controls the output format of each file:
Content type
Description
File extension
json
Structured JSON with full metadata (default)
.json
markdown
Human-readable markdown rendering
.md
diff
Unified diff format (PRs and commits)
.md
raw
Raw content from the GitHub API
varies
For example, a view with content_type: "diff" on a PR repository produces files like 42_Add_login_endpoint_diff.md containing the unified diff, ready for code review.
Source views are materialized — Airstore executes the query once and caches the results so reads are fast. To pick up new data from the source, you sync the view.From the dashboard: Click the Sync button in the toolbar when viewing a source view.From the SDK:
const result = await airstore.views.sync('ws_abc123', 'view_abc')console.log(`${result.results_count} total, ${result.new_results} new`)
Syncing re-executes the view’s query against the live source API and updates the cached files. It’s idempotent — safe to call as often as you need.
Each result becomes a separate file in the directory (default)
file
All results are aggregated into a single file
The file format is useful when you want a single document — for example, a sprint summary or a combined report. You can also specify a fileExt (e.g., .md) to control the output extension.