Skip to main content
tip

Looking for the full inventory? See the Connector Catalog.

Data Connectors Reference

Aragora is the control plane for multi-agent vetted decisionmaking across organizational knowledge and channels. It is omnivorous by design—ingesting information from many sources to fuel multi-agent decision making. Evidence connectors ground debates in real-world data from external sources.

Input Sources: Documents, APIs, databases, web searches, academic papers, news, social media, financial filings, and more.

Authoritative inventory: docs/connectors/CONNECTOR_REGISTRY.json (regenerate via python scripts/update_connector_registry.py).
Readable catalog: docs/connectors/CONNECTOR_CATALOG.md (generated from the registry).

Full documentation: See Evidence System Guide for detailed usage examples.

Quick Reference (Evidence Connectors)

ConnectorSourceAPI KeyRate LimitBest For
LocalDocsConnectorLocal filesNoN/ADocumentation, code
ArXivConnectorarXiv.orgNo3/secAcademic papers
WikipediaConnectorWikipediaNo200/minReference knowledge
HackerNewsConnectorHacker NewsNo500/dayTech discussions
WebConnectorWeb searchNo10/minLive web content
GitHubConnectorGitHub APIOptional60/hr (5000 w/token)Issues, PRs, code
RepositoryCrawlerLocal repo checkoutNoN/ACodebase indexing, symbols, deps
ObsidianConnectorObsidian vault (local)NoN/APersonal knowledge base, design notes
RedditConnectorReddit APIYes60/minCommunity sentiment
TwitterConnectorTwitter/X APIYesVariesReal-time discourse
NewsAPIConnectorNewsAPIYes1000/dayNews articles
SECConnectorSEC EDGARNo10/secFinancial filings
SQLConnectorSQL databasesNoN/AStructured data
WhisperConnectorAudio/video filesNoN/ATranscription & diarization

Operational Platform Connectors

These connectors power workflow automation and platform APIs (advertising, analytics, CRM, ecommerce, support, marketing, calendar, payments). They are distinct from evidence connectors and are used by feature handlers and workflow templates.

CategorySubpackagePlatforms (current / planned)Notes
Advertisingaragora.connectors.advertisingGoogle Ads, Meta Ads, LinkedIn Ads, Microsoft Ads, TikTok Ads, X AdsCampaigns, performance, budgeting
Analyticsaragora.connectors.analyticsMetabase, Google Analytics 4, Mixpanel, SegmentDashboards, reports, funnels
CRMaragora.connectors.crmHubSpot / Salesforce, Pipedrive (planned)Contacts, deals, pipeline
Ecommercearagora.connectors.ecommerceShopify, Amazon Seller, WooCommerce, ShipStation / eBay, Magento, TikTok Shop (planned)Orders, inventory, fulfillment
Supportaragora.connectors.supportZendesk, Freshdesk, Intercom, Help ScoutTickets, triage, responses
Marketingaragora.connectors.marketingMailchimp, KlaviyoCampaigns, flows, audiences
Calendararagora.connectors.calendarGoogle Calendar, Outlook CalendarEvents, availability
Email Syncaragora.connectors.emailGmail Sync, Outlook SyncBackground sync + webhooks
Paymentsaragora.connectors.paymentsStripe / PayPal, Square, Adyen (planned)Subscriptions, invoices

Environment Variables

# Required for specific connectors
NEWSAPI_KEY=your_newsapi_key
GITHUB_TOKEN=ghp_your_token
TWITTER_BEARER_TOKEN=your_bearer_token
REDDIT_CLIENT_ID=your_client_id
REDDIT_CLIENT_SECRET=your_client_secret
# Obsidian (local vault)
ARAGORA_OBSIDIAN_VAULT_PATH=/Users/you/Documents/ObsidianVault
ARAGORA_OBSIDIAN_TAGS=#decision,#debate,#aragora
ARAGORA_OBSIDIAN_IGNORE_FOLDERS=.obsidian,.trash,templates

Operational platform connectors typically use OAuth credentials passed to the connector constructor or managed via the enterprise credential provider stack. See the connector subpackage for required fields.

Enterprise Knowledge Connectors

Enterprise-grade connectors live under aragora/connectors/enterprise/ and cover collaboration systems, document stores, databases, and streaming backends. They are used by control plane workflows, inbox automation, and knowledge ingestion.

DomainSubpackageExamples
Collaborationenterprise/collaborationAsana, Confluence, Jira, Linear, Monday, Notion, Slack, Teams
Documentsenterprise/documentsGoogle Drive, Google Sheets, SharePoint, OneDrive, Dropbox, S3
Communicationenterprise/communicationGmail, Outlook
Databasesenterprise/databasePostgreSQL, MongoDB, MySQL, SQL Server, Snowflake
Gitenterprise/gitGitHub
ITSMenterprise/itsmServiceNow
Streamingenterprise/streamingKafka, RabbitMQ

Sync orchestration and durable state live in enterprise/sync/ and enterprise/sync_store.py.

Quick Start

from aragora.connectors import (
ArXivConnector,
HackerNewsConnector,
WikipediaConnector,
)

# Academic papers
arxiv = ArXivConnector(categories=["cs.AI", "cs.LG"])
papers = arxiv.search("transformer attention mechanisms", max_results=10)

# Tech discussions
hn = HackerNewsConnector(min_score=50)
posts = hn.search("Claude AI", max_results=20)

# Reference knowledge
wiki = WikipediaConnector(language="en")
articles = wiki.search("artificial general intelligence")

Connector Details

LocalDocsConnector

Search local files (Markdown, Python, text).

from aragora.connectors import LocalDocsConnector

connector = LocalDocsConnector(
root_paths=["./docs", "./src"],
extensions=[".md", ".py", ".txt"],
)
results = connector.search("authentication flow")

ArXivConnector

Search academic papers on arXiv.org.

from aragora.connectors import ArXivConnector, ARXIV_CATEGORIES

connector = ArXivConnector(
categories=["cs.AI", "cs.LG", "cs.CL"],
max_age_days=365,
)
results = connector.search("reinforcement learning from human feedback")

# Available categories: cs.AI, cs.LG, cs.CL, cs.CV, math.OC, stat.ML, etc.

NewsAPIConnector

Fetch news from trusted sources with credibility scoring.

from aragora.connectors import (
NewsAPIConnector,
HIGH_CREDIBILITY_SOURCES,
MEDIUM_CREDIBILITY_SOURCES,
)

connector = NewsAPIConnector(
api_key="your-key",
preferred_sources=HIGH_CREDIBILITY_SOURCES, # Reuters, AP, BBC
)
results = connector.search("AI regulation")

SECConnector

Access SEC EDGAR financial filings.

from aragora.connectors import SECConnector, FORM_TYPES

connector = SECConnector()
filings = connector.search("Apple Inc", form_types=["10-K", "10-Q"])

# Available forms: 10-K, 10-Q, 8-K, DEF 14A, S-1, etc.

ObsidianConnector

Ingest notes from a local Obsidian vault.

from aragora.connectors.knowledge import ObsidianConfig, ObsidianConnector

config = ObsidianConfig.from_env() # or ObsidianConfig(vault_path="~/Vault")
connector = ObsidianConnector(config)

results = await connector.search("rate limiting", tags=["#decision"])

ClaudeMemConnector (Optional)

Read-only connector for a local claude-mem worker API. Useful when you already run claude-mem for Claude Code sessions and want to query those memories as evidence.

from aragora.connectors.memory import ClaudeMemConnector

connector = ClaudeMemConnector()
results = await connector.search("deployment checklist", limit=5)

SQLConnector

Query SQL databases directly.

from aragora.connectors import SQLConnector

connector = SQLConnector(
connection_string="postgresql://user:pass@localhost/db"
)
result = connector.query(
"SELECT * FROM debates WHERE status = %s",
params=["completed"],
)

GitHubConnector

Fetch GitHub issues, PRs, and discussions.

from aragora.connectors import GitHubConnector

connector = GitHubConnector(
token="ghp_...", # Optional, increases rate limits
repos=["anthropics/claude-code"],
)
issues = connector.search("memory leak", content_type="issues")

RepositoryCrawler

Index a local repository for files, symbols, dependencies, and metadata.

from aragora.connectors import RepositoryCrawler, CrawlConfig

crawler = RepositoryCrawler()
result = crawler.crawl(
"/path/to/repo",
config=CrawlConfig(include_tests=False, max_file_size_kb=256),
)
print(result.summary())

WhisperConnector

Transcribe audio/video to text with timestamps and optional diarization.

from aragora.connectors import WhisperConnector

connector = WhisperConnector(model_size="base")
transcript = connector.transcribe("/path/to/audio.wav")
print(transcript.text)

Error Handling

from aragora.connectors import (
ConnectorError,
ConnectorRateLimitError,
ConnectorAuthError,
is_retryable_error,
get_retry_delay,
)

try:
results = connector.search("query")
except ConnectorRateLimitError as e:
delay = get_retry_delay(e)
print(f"Rate limited. Retry after \{delay\}s")
except ConnectorAuthError:
print("Check API credentials")
except ConnectorError as e:
if is_retryable_error(e):
# Retry with exponential backoff
pass

Creating Custom Connectors

from aragora.connectors import BaseConnector, Evidence
from aragora.reasoning.provenance import SourceType

class MyConnector(BaseConnector):
source_type = SourceType.CUSTOM
default_confidence = 0.7

def search(self, query: str, max_results: int = 10) -> list[Evidence]:
# Implement search logic
pass

def fetch(self, evidence_id: str) -> Evidence | None:
# Implement fetch by ID
pass

See Also