Sources / LOOM
Cortexa's Sources workspace contains LOOM's native React interface and extraction engine. The application bundles Node and Deno; there is no iframe, external extractor folder, or separate runtime installation to configure.
Open Sources
Choose Sources in the sidebar, then Start Sources. Opening the workspace does not start extraction automatically. Use Add source, or ask the connector agent to inspect a source and build its connector.
The complete workspace includes pipeline canvases, connector discovery and generation, schedules, extraction and delivery, review and approvals, credentials, run history, agent conversations, vault search, model configuration, usage, and autonomy controls. Use the toggle beside Pipeline workspace to open its tools sidebar.
Extraction runs in a background process owned by Cortexa. Switching to Library, Knowledge graph, or Foundry unloads the canvas and its live subscription while extraction continues. Returning to Sources reconnects and reloads current data.
Find an integration for a goal
In Add source, describe the data you need and select Find integrations. A target URL is optional. Loom compares declared connector capabilities, explains why each candidate fits, identifies missing setup, and offers existing sources when their targets match. Recommendations do not probe remote services, create sources, or start syncing.
Use Set up to fill a source draft, then review its target, project, and credential before creating it. Use in Ask attaches existing source references to Ask Cortexa. A stored credential is not proof of working access; verify the connection when you configure or sync it. Connectors without capability descriptions remain usable through explicit selection but cannot claim confirmed support for a goal.
Ask uses the same recommend_integrations tool and saves selectable recommendation cards in its encrypted conversation history. In Foundry, Find integrations in Ask carries your build brief into that conversation. Select sources and use Use selected sources in Foundry to return to the original brief. This handoff does not start a build or change its memory scope.
Find photos with a connection wizard
Ask Cortexa something like “Find my Google Photos pictures from Gatlinburg, TN” or “Find cabin photos on this computer.” The photo connection wizard keeps that request with the setup and returns its results to the originating Ask conversation. You can also open the same wizard from Add source, a supported source's Connect/Reconnect action, or Settings → Sources and the credential manager.
For This computer, choose Pictures folders or another folder with the native folder chooser. Drives are available as explicit choices. Local access needs no login. Metadata only searches file names, folders, file types, and modified dates; a modified date is not the date a photo was taken. If a vision model is configured, choose image understanding to match visual content. A cloud model requires a separate choice allowing image processing for that search.
For Google Photos, choose an existing Google connection or sign in. An installation without a Google desktop OAuth client needs its client ID and, if provided, client secret in Advanced OAuth client setup. See Google's desktop OAuth setup and Photos Picker setup. Cortexa never asks for your Google password; saved OAuth credentials use the OS keychain.
Google opens its own photo picker. Search for the phrase shown in the wizard, select the photos you want, and return to Cortexa. This is a guided selection: Cortexa receives only the selected photos, and does not automatically search the whole Google Photos library. The photo source requires a fresh selection for later searches and does not support scheduled extraction.
Results are private temporary previews. This flow does not capture photos as vault thoughts or publish them. New sources have scheduling off, and local searches reuse matching saved sources. Ask retains an encrypted result receipt; after previews expire, Reopen search repeats the original query and source scope. Load more updates the same result card. Cancel stops the active setup; signing in again repairs a failed Google connection.
Look up email without importing it
With a Gmail source configured, ask “Find the email I sent about the cabin trip” or “Find receipts from this sender.” Ask uses the saved source and credential to search Gmail and return matching message text in the conversation. Sent-mail requests use Gmail's actual Sent folder, including localized folder names. The lookup opens the mailbox read-only and does not mark messages read, send mail, change the source, or capture results into the vault.
This lookup is separate from scheduled imports: it does not apply the importer's recent-date window, primary-category filter, junk filtering, or processed-message cursor. Results and message bodies are bounded; narrow the recipient, subject, or date range when the result reports truncation. Returned email is evidence, not instructions for the assistant.
The Sources query_mailbox tool accepts an existing Gmail source ID, Gmail search terms, an optional mailbox (inbox, sent, all, or an exact listed folder), and a limit from 1 to 20. Without a mailbox override it uses the saved source's folder. analyze on a Gmail URI verifies a supplied saved credential and lists folders; it does not search message contents. Missing or rejected credentials are repaired in Source credentials using the existing Gmail user and appPassword fields.
Existing data
Existing sources, schedules, generated connectors, approvals, and history use the same ~/.cortexa-extractor state directory (or EXTRACTOR_STATE_DIR). Credential names and OS keychain service remain compatible. The migration does not copy, reset, or convert your database.
Sources retains its existing model and vault connection settings. In Settings → Sources, optionally use the current Cortexa vault and Cortexa's model as the extraction default. Model sharing supports Ollama, OpenAI-compatible endpoints, DeepSeek, and Kimi. Other providers continue to use Sources-specific configuration. Explicit agent and builder overrides are preserved.
Inherited credentials pass to the managed worker in memory; they are not copied into Sources configuration. Turning sharing off restores the saved Sources defaults. Source credentials opens the existing credential manager.
Sources follows the main theme, font scale, density, and reduced-motion preference, including its canvas, minimap, dialogs, and menus.
Connected workflows
Background activity includes Sources jobs, failed runs, and pending approvals while the worker is running. Thought details display source and run links when an extraction receipt is available; run details link back to the captured thought. Deleted sources and runs are shown as unavailable.
For deliveries with retained evidence enabled, thought details also show the sanitized record locator, content hash, capture date, and whether the reference set is partial. These references are stored with the encrypted vault capture, so stopping or removing the Sources worker does not erase them. Cortexa opens only HTTP or HTTPS locators after you select them; local and unsupported locators remain plain text. A reference identifies the source record used for capture and does not prove that record is correct or still accessible.
Agent Foundry provides entry points to the source connector agent and pipeline workspace. Opening either does not execute an agent request or extraction.
If standalone LOOM already occupies its normal loopback port, Cortexa can connect to it without taking ownership. Stop worker is available only for the process Cortexa started.
Stop and exit
Stop worker cancels active extraction jobs, prevents queued scheduled sources from starting, and waits for accepted delivery requests and connector builds to finish before closing storage. Saved schedules remain unchanged.
Quitting Cortexa closes the worker's ownership pipe and requests the same shutdown. Closing the window to the tray keeps the application and worker available. A standalone worker remains independent of Cortexa's lifetime.
Development
The UI lives in src/components/loom; the engine, built-in connectors, and engine tests live in packages/loom. The internal CLI remains available with npm --prefix packages/loom run extractor -- --help.
Use Node 24+ and run npm ci, then npm run loom:prepare. Preparation installs locked engine dependencies and stages the engine, Node, and a checksum-verified Deno release into Tauri resources. npm run tauri dev and npm run tauri build run preparation automatically. For cross-target builds, run the preparation with Node matching the target architecture.
npm run build regenerates scoped LOOM styles and builds the unified frontend. Engine tests run with npm --prefix packages/loom test; native transport and lifecycle tests run with node --test bench/loom-native.test.mjs bench/loom-worker.test.mjs.
The worker is an internal implementation detail, not a separate installed application. Native UI requests use Tauri commands restricted to the local Sources API; live events use cancellable Tauri channels.
Desktop integration builds use the test-support feature, a separate product identifier, and a marker-protected CORTEXA_TEST_PROFILE. They refuse startup without an explicit fixture profile, use ports 17373/17378, and keep test credentials out of the OS keychain. scripts/desktop-sources-start.mjs installs only the separately named integration-test installer. Normal release builds do not enable this profile.
Smaller windows
Sources toolbars wrap to the available width. At smaller window sizes, its tools sidebar overlays the canvas, Settings uses a horizontally scrollable section list, and connector conversations move above the chat. Dialogs and empty-state content scroll independently so controls remain accessible with larger text.
One assistant
Ask Cortexa is the conversational interface for both your library and Sources. Source and Foundry assistant buttons open that chat with a draft prompt; they do not submit it automatically. The main Assistant's model handles the conversation. Sources still has distinct extraction, connector-builder, and optional background-autonomy model settings.
Choose Start Sources in Ask Cortexa to make source tools available. The assistant can inspect the tool catalog and existing source context. Builds, source changes, extraction requests, and other modifying tools produce a review card with the proposed arguments. Approve or decline there; a running action can be cancelled. Completed results remain in encrypted chat history. Use Continue with this result to resume a multi-step request.
Pending approval cards expire when Cortexa exits and must be proposed again. They cannot execute automatically after restart. Previous Sources conversations imports a selected legacy chat into Ask Cortexa once, retaining the original history. The standalone LOOM engine continues to support its existing APIs.
Finding workspace controls
Sources, Tools, Connectors, and Run history are visible above the canvas. Select a section to open its panel; Close panel returns keyboard focus to that section. Credentials are available alongside these controls. On wider windows the Sources panel opens initially; smaller windows keep the canvas available until a section is selected.
Sources settings opens the main Settings → Sources section under Integrations. Shared model/vault preferences and common extraction defaults live there: destination project, minimum importance (1–5), automatic scheduling, and parallelism. Start Sources before editing extraction defaults, then choose Save extraction defaults to apply them. Advanced extraction settings and automation activity remain accessible from this section.