swirl-search
RepositoryFreeAI Search & RAG Without Moving Your Data. Get instant answers from your company's knowledge across 100+ apps while keeping data secure. Deploy in minutes, not months.
Capabilities14 decomposed
federated multi-source query orchestration with parallel execution
Medium confidenceExecutes a single user query across 100+ heterogeneous data sources simultaneously using Celery workers and asynchronous task distribution, without copying or indexing data. The Search Orchestrator (swirl/models.py Search class) decomposes queries into source-specific formats, dispatches parallel tasks to Celery workers, and aggregates results as they complete. Uses Django ORM to manage Search objects with state tracking (RUNNING, COMPLETED, FAILED) and WebSocket communication for real-time progress updates to the Galaxy UI.
Uses Celery-based task distribution with per-source connector abstraction (swirl/connectors/) to parallelize queries across heterogeneous sources without data movement, combined with Django ORM state management for search lifecycle tracking. Unlike traditional metasearch engines that require data indexing, SWIRL queries live data in-place through connector adapters that translate queries to source-native formats (SQL, GraphQL, REST, Elasticsearch DSL).
Faster than centralized data warehouse approaches for real-time queries because it eliminates ETL latency and data sync delays; more secure than cloud-based search services because data never leaves on-premises systems.
connector-based data source abstraction with format translation
Medium confidenceProvides extensible connector framework (swirl/connectors/connector.py base class) that abstracts 100+ data sources (HTTP APIs, databases, search engines, Microsoft Graph) into a unified interface. Each connector translates SWIRL's normalized query format into source-native syntax (SQL WHERE clauses, Elasticsearch queries, REST API parameters, GraphQL), executes the query, and normalizes results back to SWIRL's unified schema. Supports HTTP connectors for REST/GraphQL APIs, database connectors for SQL/NoSQL, and specialized connectors for Salesforce, Jira, Microsoft 365, Slack, BigQuery, and others.
Implements connector base class (swirl/connectors/connector.py) with pluggable execute() and normalize_results() methods, allowing each source to define its own query translation and result mapping logic. Supports 100+ pre-built connectors covering HTTP APIs, SQL/NoSQL databases, Elasticsearch, Solr, Salesforce, Jira, Microsoft Graph, Slack, BigQuery, and more. Unlike generic API clients, each connector understands source-specific pagination, authentication, and result structure.
More flexible than API aggregation libraries because connectors can implement source-specific optimizations (e.g., Elasticsearch filter context vs query context); more maintainable than custom query translation logic because connector interface is standardized.
galaxy web ui with search interface and result visualization
Medium confidenceProvides Galaxy web-based user interface (Django templates, static files, JavaScript) accessible at port 8000 for searching and visualizing results. Implements real-time search progress tracking via WebSocket, progressive result display as sources complete, and result filtering/sorting. Supports both simple keyword search and advanced search with filters, date ranges, and field-specific queries. Includes result preview, source attribution, and relevance scoring visualization. Built with Django templates and vanilla JavaScript for minimal dependencies.
Implements Galaxy web UI as Django-based application (Django templates, static files, JavaScript) with WebSocket integration for real-time search progress and result streaming. Supports both simple keyword search and advanced search with filters and field-specific queries. Built with minimal dependencies (vanilla JavaScript) for easy customization.
More integrated than separate frontend because it's part of SWIRL Search application; more real-time than traditional search UIs because it streams results via WebSocket; more customizable than SaaS search interfaces because source code is available.
asynchronous task execution with celery worker pool and result caching
Medium confidenceImplements asynchronous search execution using Celery task queue (swirl/tasks.py) with configurable worker pool for parallel query execution across sources. Each source query is dispatched as separate Celery task, allowing independent execution and failure handling. Results are cached in Redis (configurable TTL) to avoid redundant queries for identical search parameters. Celery workers can be scaled horizontally to handle increased query load. Supports task monitoring, retry logic, and dead-letter queue for failed tasks.
Implements asynchronous search execution using Celery task queue (swirl/tasks.py) where each source query is dispatched as separate task for independent execution. Results are cached in Redis with configurable TTL to avoid redundant queries. Celery workers can be scaled horizontally to handle increased load. Supports task monitoring, retry logic, and dead-letter queue for failed tasks.
More scalable than synchronous execution because it allows horizontal scaling of workers; more responsive than blocking execution because UI updates are pushed via WebSocket while tasks execute; more resilient than single-threaded execution because task failures don't block other queries.
source-specific authentication and credential management
Medium confidenceImplements per-source authentication handling (swirl/connectors/) supporting multiple authentication methods: API keys, OAuth 2.0, basic auth, database credentials, and custom authentication schemes. Each connector manages its own authentication logic, allowing sources to use different authentication methods simultaneously. Credentials are stored in Django settings or environment variables (not in code). Supports OAuth token refresh for long-lived sessions. No centralized credential vault; requires external integration for enterprise credential management.
Implements per-source authentication handling (swirl/connectors/) supporting multiple authentication methods (API keys, OAuth 2.0, basic auth, database credentials) through connector-specific implementations. Each connector manages its own authentication logic, allowing sources to use different methods simultaneously. Credentials are stored in environment variables or Django settings, not in code.
More flexible than single authentication method because each source can use different auth; more secure than hardcoded credentials because credentials are stored in environment variables; supports OAuth unlike basic auth-only solutions.
admin interface for source configuration and search management
Medium confidenceProvides Django admin interface for configuring data sources, managing searches, and monitoring system health. Allows admins to add/edit/delete data sources, configure connector parameters, set authentication credentials, and manage search history. Includes admin guide (docs/Admin-Guide.md) for production deployment and troubleshooting. Supports bulk operations for managing multiple sources. Provides search analytics (query volume, source performance, result quality metrics).
Implements Django admin interface for source configuration and search management, allowing admins to add/edit/delete data sources without code changes. Includes admin guide (docs/Admin-Guide.md) for production deployment. Provides search analytics and system health monitoring through admin interface.
More accessible than code-based configuration because it provides UI for non-developers; more integrated than separate admin tools because it's part of SWIRL Search application; more transparent than hidden configuration because all settings are visible in admin interface.
result normalization and relevance re-ranking across heterogeneous sources
Medium confidenceImplements result processing pipeline (swirl/processors/) that normalizes results from different sources into unified schema, applies relevance re-ranking algorithms, and deduplicates results. The Mixer component (swirl/mixers/mixer.py) combines results from multiple sources using configurable ranking strategies (BM25, TF-IDF, LLM-based relevance scoring). Processors transform raw connector output into normalized Result objects with standardized fields, handle PII removal (swirl/processors/remove_pii.py), and apply source-specific post-processing. Results are re-ranked based on relevance scores, source credibility, and recency.
Implements pluggable processor pipeline (swirl/processors/processor.py base class) where each processor transforms results independently, enabling composition of normalization, ranking, and filtering logic. Mixer component (swirl/mixers/mixer.py) applies configurable ranking strategies (BM25, TF-IDF, or custom) to re-rank results from heterogeneous sources. PII removal processor uses pattern matching to detect and redact sensitive data before returning results.
More flexible than fixed ranking algorithms because mixer strategies are pluggable; more comprehensive than simple result concatenation because it handles deduplication and PII removal in pipeline.
retrieval-augmented generation (rag) with llm-powered answer synthesis
Medium confidenceImplements RAG pipeline (swirl/processors/rag.py) that uses LLM APIs (OpenAI, Anthropic, Ollama, Azure OpenAI) to synthesize answers from search results without moving data. The RAG processor takes normalized search results, constructs a prompt with result snippets as context, and calls the configured LLM to generate a natural language answer. Supports streaming responses via WebSocket to Galaxy UI for real-time answer generation. Integrates with search result ranking to prioritize high-relevance results in LLM context window.
Implements RAG as a processor in the result processing pipeline (swirl/processors/rag.py), allowing it to be composed with other processors (normalization, ranking, PII removal). Supports multiple LLM providers (OpenAI, Anthropic, Ollama, Azure) through pluggable LLM client abstraction. Streams responses via WebSocket to Galaxy UI for real-time answer generation without waiting for full LLM completion.
More flexible than monolithic RAG systems because RAG is optional and composable with other processors; supports multiple LLM providers unlike single-model solutions; streams responses for better UX compared to batch answer generation.
query transformation and source-specific syntax generation
Medium confidenceImplements query processing layer (swirl/search.py, swirl/models.py Query class) that parses user natural language queries and transforms them into source-specific syntax. Each connector implements query_to_native_syntax() method to translate SWIRL's normalized query format (query string, filters, date ranges, field-specific queries) into source-native formats: SQL WHERE clauses for databases, Elasticsearch DSL for search engines, REST API parameters for HTTP APIs, GraphQL queries for GraphQL endpoints, Microsoft Graph query syntax for Microsoft 365. Supports query expansion, synonym replacement, and field mapping per source.
Implements query transformation as part of connector abstraction (swirl/connectors/connector.py) where each connector defines its own query_to_native_syntax() method, enabling source-specific optimizations and syntax variations. Supports field mapping and query expansion per source through connector configuration. Unlike generic query builders, each connector understands source-specific query semantics and optimization opportunities.
More flexible than fixed query syntax because each connector can implement custom transformation logic; more maintainable than string-based query building because transformation is encapsulated in connector classes.
real-time search progress tracking and websocket streaming
Medium confidenceImplements WebSocket-based real-time communication (swirl/views.py, Galaxy UI) that streams search progress and results to clients as they complete. The Search Orchestrator updates Search object state (RUNNING, COMPLETED, FAILED) as Celery workers complete queries on individual sources. WebSocket connection pushes progress updates (source completion, result count, execution time) and result chunks to Galaxy UI in real-time, enabling users to see results from fast sources immediately without waiting for slow sources. Supports both polling (REST API) and streaming (WebSocket) interfaces.
Implements WebSocket streaming in Galaxy UI (swirl/views.py) that pushes Search state updates and result chunks to clients in real-time as Celery workers complete source queries. Supports both WebSocket (streaming) and REST API (polling) interfaces for flexibility. Results are streamed progressively, allowing users to see results from fast sources immediately without waiting for slow sources.
Better UX than polling because updates are pushed immediately; more responsive than batch result delivery because results appear as sources complete; supports progressive result display unlike traditional search engines that wait for all results.
multi-provider llm abstraction with streaming support
Medium confidenceProvides LLM provider abstraction layer (swirl/processors/rag.py) that supports multiple LLM APIs (OpenAI, Anthropic, Ollama, Azure OpenAI) through unified interface. Each provider implementation handles authentication, request formatting, streaming response parsing, and error handling. Supports streaming responses where LLM output is returned token-by-token via WebSocket, enabling real-time answer generation in Galaxy UI. Allows switching between LLM providers through configuration without code changes.
Implements pluggable LLM provider abstraction (swirl/processors/rag.py) supporting OpenAI, Anthropic, Ollama, and Azure OpenAI through unified interface. Each provider implementation handles authentication, request formatting, and streaming response parsing. Allows switching providers through configuration without code changes. Supports streaming responses where tokens are returned progressively via WebSocket.
More flexible than single-provider solutions because it supports multiple LLM APIs; enables cost optimization by allowing provider switching; supports self-hosted models (Ollama) for data privacy unlike cloud-only solutions.
microsoft 365 and graph api integration with oauth authentication
Medium confidenceProvides specialized connectors for Microsoft 365 ecosystem (swirl/connectors/) including Microsoft Graph API connector for querying Teams, SharePoint, OneDrive, Outlook, and other Microsoft 365 services. Implements OAuth 2.0 authentication flow for secure credential management without storing passwords. Supports Microsoft Graph query syntax translation, pagination, and result normalization. Includes admin guide (docs/M365-Guide.md) for configuring Microsoft 365 integration in enterprise environments.
Implements specialized Microsoft Graph connector (swirl/connectors/) with OAuth 2.0 authentication flow and Microsoft Graph query syntax translation. Supports querying Teams, SharePoint, OneDrive, Outlook, and other Microsoft 365 services through unified connector interface. Includes admin guide (docs/M365-Guide.md) for enterprise deployment with multi-tenant support.
More integrated than generic REST API connectors because it understands Microsoft Graph semantics and pagination; more secure than password-based authentication because it uses OAuth; supports multiple Microsoft 365 services through single connector unlike service-specific integrations.
docker and kubernetes containerized deployment with configuration management
Medium confidenceProvides Docker containerization (Dockerfile, docker-compose.yml) and Kubernetes deployment manifests for production deployment. Includes Nginx reverse proxy configuration for load balancing and SSL termination. Supports environment-based configuration management through .env files and Django settings, enabling deployment across development, staging, and production environments without code changes. Includes CI/CD pipeline (GitHub Actions) for automated testing, building, and deployment.
Provides complete Docker and Kubernetes deployment setup (Dockerfile, docker-compose.yml, Kubernetes manifests) with Nginx reverse proxy configuration for production use. Includes CI/CD pipeline (GitHub Actions) for automated testing, building, and deployment. Supports environment-based configuration management through .env files and Django settings for multi-environment deployments.
More production-ready than source code deployment because it includes containerization and orchestration configuration; more automated than manual deployment because it includes CI/CD pipeline; more scalable than single-server deployment because it supports Kubernetes horizontal scaling.
extensible processor pipeline for result transformation and filtering
Medium confidenceImplements pluggable processor pipeline architecture (swirl/processors/processor.py base class) where each processor transforms search results independently. Processors are composed in sequence, allowing flexible result transformation workflows: normalization, ranking, PII removal, RAG synthesis, custom filtering. Each processor implements process() method that takes results and returns transformed results. Processors can be enabled/disabled through configuration, and custom processors can be added by subclassing Processor base class.
Implements processor pipeline as composable sequence of independent transformers (swirl/processors/processor.py base class) where each processor implements process() method. Processors can be enabled/disabled through configuration and composed in any order. Supports built-in processors (normalization, ranking, PII removal, RAG) and custom processors through subclassing.
More flexible than fixed result processing because processors are composable and configurable; more maintainable than monolithic result processing because each processor has single responsibility; more extensible than hard-coded transformations because custom processors can be added without modifying core code.
Capabilities are decomposed by AI analysis. Each maps to specific user intents and improves with match feedback.
Related Artifactssharing capabilities
Artifacts that share capabilities with swirl-search, ranked by overlap. Discovered automatically through the match graph.
Ask String
Transform data: analyze, visualize, manage—intuitively,...
Coginiti
Instant query assistance, on-demand learning, and collaborative workspaces for efficient data and analytic product...
TalktoData
Data discovery, cleaing, analysis & visualization
Kater
Transform data chaos into insights with intuitive AI-driven...
Presto
Optimize multi-source data queries in real-time,...
DataSquirrel
Democratizes data analysis with AI, ensuring accessibility, accuracy, and real-time...
Best For
- ✓Enterprise teams with fragmented data across 10+ SaaS and on-prem systems
- ✓Organizations with strict data residency or compliance requirements (HIPAA, GDPR)
- ✓Teams building unified search experiences without data warehouse consolidation
- ✓Platform teams building extensible search infrastructure for enterprise customers
- ✓Developers integrating proprietary or custom data sources into unified search
- ✓Organizations needing to support 20+ data sources without maintaining separate query logic per source
- ✓End-users searching across enterprise data sources
- ✓Teams building search applications with web-based UI
Known Limitations
- ⚠Latency bounded by slowest source in parallel query set — no timeout-based early termination by default
- ⚠Requires connector implementation for each data source type; 100+ connectors provided but custom sources need custom code
- ⚠No built-in query optimization across sources — each source receives full query, may return irrelevant results requiring post-processing
- ⚠Celery/Redis dependency adds operational complexity; requires message broker setup and worker management
- ⚠Connector implementation required for each new source type — no automatic discovery or schema inference
- ⚠Query translation is connector-specific; complex queries may not translate perfectly across all sources
Requirements
Input / Output
UnfragileRank
UnfragileRank is computed from adoption signals, documentation quality, ecosystem connectivity, match graph feedback, and freshness. No artifact can pay for a higher rank.
Repository Details
Last commit: Apr 20, 2026
About
AI Search & RAG Without Moving Your Data. Get instant answers from your company's knowledge across 100+ apps while keeping data secure. Deploy in minutes, not months.
Categories
Alternatives to swirl-search
Are you the builder of swirl-search?
Claim this artifact to get a verified badge, access match analytics, see which intents users search for, and manage your listing.
Get the weekly brief
New tools, rising stars, and what's actually worth your time. No spam.
Data Sources
Looking for something else?
Search →