Core components
Audience: Developers
Core components
This page is the single reference for GL Open DeepResearch core components and their roles. For how they are layered and how request/task flow works, see Architecture diagram. For pipelines and design patterns, see Core design principles.
API and request handling
Router
HTTP request/response handling: task and taskgroup creation/retrieval, task and taskgroup streaming, profiles, accounts, health. Validates input and delegates to services.
Authentication
API key verification (X-API-Key). Master key for admin routes; account key for scoped access.
Orchestration and execution
Orchestrator Factory
Builds the request-scoped runtime: resolves profile (Profile Registry), creates adapter (Orchestrator Registry), optional tools (Tool Registry), then instantiates the orchestrator. One orchestrator per research run.
Orchestrator
Holds adapter, profile, and optional tools; invokes the adapter’s run() with the query and optional event emitter. Same path when run inside the worker (streaming, task, taskgroup).
Orchestrator Adapter
Protocol (name, provider type, description, streaming postprocessor, run). Implementations: TongyiAdapter, GPTResearcherAdapter. Execute the underlying research engine and return standardized results.
Profile Registry
Resolves profiles by name; caches and stays consistent with the database (create/update/delete via ProfileService). Used by Orchestrator Factory.
Orchestrator Registry
Adapter factories keyed by provider name (e.g. tongyi, gptr). Creates one adapter instance per request. Populated at startup.
Tool Registry
Tool factories by name (e.g. web_search, fetch_web_page). Used by Orchestrator Factory when the profile specifies tools.
Config Resolver
Loads runtime config from environment and database; validates profile/provider and default profile.
Tasks and streaming
Task Service
Creates tasks, updates status, retrieves task/status/result, runs research execution in the worker, provides task stream. Persists tasks and enqueues work to Celery.
TaskGroup Service
Creates taskgroups (shared profile/webhook), creates member tasks via Task Service, derives group status from task statuses, provides group stream (aggregated task + taskgroup streams).
Job queue
Celery broker; decouples API from execution.
Worker
Celery workers consume tasks, build orchestrator via Factory, run adapter, capture events to Redis, update status, trigger webhooks.
Event stream
Capture adapter events during execution → append to Redis lists (task_stream, taskgroup_stream) with TTL → clients consume via SSE. One generic Redis-stream reader for task and taskgroup streams.
Webhook Dispatcher
Sends webhook on task or taskgroup completion. Optional HMAC; configurable timeout and retries.
Data and infrastructure
Models
Domain models and schemas for research and tasks.
Accounts
Account management and API key generation/storage (e.g. bcrypt). Repository-based data access.
Redis
Streaming event storage (lists with TTL); used by event stream for capture and retrieval.
Provider-specific behavior (Tongyi, GPT-Researcher) lives in the adapters and their underlying engines. See Available Open Source Deep Research and the linked provider docs.
Last updated
