The runtime loader reads versioned YAML containing named connector instances. Start from config/connectors.example.yaml.
| Provider | Common aliases | Source |
|---|---|---|
local |
filesystem, files, local_files |
Local file or directory tree |
github |
github_repo, github_repository |
GitHub repository |
confluence |
confluence_cloud, confluence_datacenter |
Confluence space |
jira |
jira_cloud, jira_datacenter |
Jira projects/issues |
sharepoint |
microsoft_sharepoint, sharepoint_online |
SharePoint document library |
version: 1
connectors:
harborrag-workspace:
provider: local
enabled: true
environment:
source_path: LOCAL_SOURCE_PATH
settings:
allowed_extensions: [md, txt, pdf]
include_hidden: false
follow_symlinks: false
max_file_size_bytes: 104857600
Each key under connectors is an application-level name and the public
ingestion API connection_id. Multiple names may use the same provider. API
requests select a configured key; they never provide connector credentials or
repeat provider settings such as source scope, paths, comments, or attachments.
The request’s mode controls unchanged-document admission, not connector
configuration; see Ingestion modes.
| Field | Meaning |
|---|---|
provider |
Required registered provider or alias |
enabled |
Included by build_enabled(); defaults to true |
settings |
Literal fields for the provider configuration dataclass |
environment |
Config-field to environment-variable mapping for non-secret values |
secrets |
<config_field>_env: VARIABLE_NAME references for secret values |
Unknown providers, fields, aliases, versions, and malformed mappings fail during loading. Provider-specific values are validated when a connector is built.
from harborrag_runtime.config import load_connector_catalog
catalog = load_connector_catalog("config/connectors.example.yaml")
print(catalog.names(enabled_only=True))
local_docs = catalog.build(
"harborrag-workspace",
environment={"LOCAL_SOURCE_PATH": "docs"},
)
catalog.build(name) builds a definition even if disabled. catalog.build_enabled() builds only enabled definitions and returns a dictionary keyed by application-level name.
Effective provider settings use this precedence:
provider defaults < YAML settings < referenced environment < code overrides
github = catalog.build(
"engineering-github",
overrides={"branch": "release", "requests_per_minute": 60},
)
Relative local source_path values written directly in YAML resolve against the YAML file’s directory. An environment-backed relative path resolves against the process working directory. A code override for source_path also resolves from the process context.
The local connector treats every matching file as source content; it cannot infer that a text file containing timestamps, ANSI escapes, or error lines is “only a system log.” Restrict discovery before ingestion so generated logs, exports, caches, and build output never become canonical documents:
connectors:
harborrag-workspace:
provider: local
enabled: true
environment:
source_path: LOCAL_SOURCE_PATH
settings:
allowed_extensions: [md, markdown, txt, pdf]
excluded_extensions: [log]
exclude_paths: [logs, build, dist]
exclude_globs: ["*.log", "**/*.log", "**/logs/**", "**/*.jsonl"]
include_hidden: false
allowed_extensions is an allowlist. excluded_extensions, exclude_paths,
and exclude_globs remove candidates from that set. Filters affect future
discovery; removing an already published document still follows the normal
source reconciliation and cleanup lifecycle.
Keep credentials out of settings:
secrets:
token_env: GITHUB_TOKEN
Every referenced variable must exist and be non-empty when that connector is built. Disabled definitions do not need secrets when using build_enabled().
Callbacks and custom parser objects are Python values and cannot be represented safely in this YAML boundary. Supply custom_parsers, attachment callbacks, or file callbacks in provider config code or explicit overrides.
HTTP connectors validate timeouts, retry counts, backoff, page sizes, request rates, and source-specific collection/size limits. Configuration objects are construction recipes, not live mutable controls; construct a new connector after changing settings.
Use Testing for credentialed connector checks.