Connectors
Connectors are the bridge between Farna Control pipelines and your tools. Each connector wraps an external API in a sandboxed interface that agents can call during a pipeline run.
Farna Control ships 43 connector types covering source control, continuous integration and delivery (CI/CD), ticket tracking, messaging, monitoring, incident management, security scanning, knowledge bases, secrets management, package registries, and generic HTTP integrations.
Creating a connector
A connector instance is one configured connection to a tool. Create it at Connector Hub (/connectors) or through POST /api/v1/connectors, then bind pipeline nodes to it. A create request carries:
| Field | Description |
|---|---|
name |
Unique name for this connection |
connector_type_id |
The connector type, such as github or notion |
credentials |
The secret (usually a token). Multi-field connectors take a JSON object encoded as a string. Encrypted at rest and never returned |
config_json |
Non-secret settings such as base_url or base_path |
allowed_operations |
Optional allowlist of operations the connector may perform |
Pipeline config
{
"name": "github-main",
"connector_type_id": "github",
"credentials": "ghp_...",
"config_json": { "base_url": "https://api.github.com" },
"allowed_operations": ["read", "write", "create_pr"]
}
The base_url above is optional; omit it for github.com and set it for a GitHub Enterprise Server instance.
Common connectors
GitHub
Connects to GitHub repositories, issues, pull requests (PRs), and Actions.
Credentials: a personal access token. Config: optional base_url for GitHub Enterprise Server.
Capabilities: Read and write issues, pull requests, and files; create PRs; post code reviews.
GitLab
Connects to GitLab projects, merge requests, and CI pipelines.
Credentials: a personal access token. Config: optional base_url; defaults to https://gitlab.com/api/v4.
Capabilities: Read and write issues and merge requests; create merge requests; trigger CI runs; search tickets.
Notion
Reads and writes Notion databases, pages, and blocks.
Credentials: an integration token. Config: none required at the instance level; choose the database or page per operation.
Capabilities: Read and write pages, databases, and blocks.
Filesystem
Reads and writes files on the server’s filesystem within a restricted base path.
Config: base_path (required). The filesystem connector is chrooted to base_path, so agents cannot access files outside this directory.
Generic REST
Any Representational State Transfer (REST) API can be wrapped as a connector using the rest type. Supports bearer, API key (header or query), and basic auth, with Server-Side Request Forgery (SSRF) allowlist guarding, response-size capping, and idempotent retry.
Config: base_url (required) and optional allowed_hosts. The authentication settings live in the credentials object:
Pipeline config
{
"auth_mode": "bearer",
"token": "..."
}
For API-key auth, supply api_key, an optional header_name, and in set to header or query. For basic auth, supply username and password.
The REST connector also supports URL templating, custom headers, params, body templates, pagination, and rate limiting.
Complete connector reference
The table below lists all 43 shipped connector types. Capabilities are derived from the ConnectorType enum in the codebase.
Source control
| Type | Display name | Capabilities | Key config / credentials |
|---|---|---|---|
github |
GitHub | read, write, git_push, create_pr, code_review, ticket_read, ticket_write | token |
gitlab |
GitLab | read, write, git_push, create_pr, ticket_read, ticket_write, ticket_search, trigger_run | token |
bitbucket |
Bitbucket | read, write, git_push, create_pr | token |
gitea |
Gitea | read, write, git_push, create_pr | token |
azure_repos |
Azure Repos | read, write, git_push, create_pr | token, organization |
Ticket tracking & project management
| Type | Display name | Capabilities | Key config / credentials |
|---|---|---|---|
jira |
Jira | ticket_read, ticket_write, ticket_search | email, api_token, instance or base_url |
linear |
Linear | ticket_read, ticket_write | token |
trello |
Trello | read, write, ticket_read, ticket_write, ticket_search | api_key, token |
asana |
Asana | read, write, ticket_read, ticket_write, ticket_search | personal_access_token |
shortcut |
Shortcut | read, write | token |
youtrack |
YouTrack | read, write | token, base_url (required) |
monday |
Monday | read, write | api_key |
ticket-tracker |
Ticket Tracker | ticket_read, ticket_write, ticket_search | provider config ("github" or "trello") |
CI/CD
These connectors expose the CI-runner operations (start a run, read its status, read its logs, list runs), and a pipeline dispatch node can drive them end to end. The node’s connector binding uses operation: "dispatch" with a dispatch_action of trigger_run, get_run_status, get_run_logs, or list_runs, and the binding must target a CI-runner connector. With await_completion: true on a trigger_run, the node polls get_run_status until the substrate reports a terminal status, bounded by wait_timeout (default 300 seconds, maximum 3600). When that window expires the run fails with the terminal dispatch.wait_timeout error; the job is never fired twice.
| Type | Display name | Capabilities | Key config / credentials |
|---|---|---|---|
ci-runner |
CI Runner | trigger_run, get_run_status, get_run_logs, list_runs | github_token (GitHub Actions), token (GitLab CI) |
circleci |
CircleCI | trigger_run, get_run_status, get_run_logs, list_runs | token |
buildkite |
Buildkite | trigger_run, get_run_status, get_run_logs, list_runs | token |
jenkins |
Jenkins | trigger_run, get_run_status, get_run_logs, list_runs | username, token |
teamcity |
TeamCity | trigger_run, get_run_status, get_run_logs, list_runs | token |
azure_pipelines |
Azure Pipelines | trigger_run, get_run_status, get_run_logs, list_runs | token, organization |
Messaging & notifications
| Type | Display name | Capabilities | Key config / credentials |
|---|---|---|---|
slack |
Slack | messaging, read, write | bot_token |
microsoft_teams |
Microsoft Teams | collaboration, messaging, notification, read, write | token |
discord |
Discord | collaboration, messaging, notification | token |
Observability & monitoring
| Type | Display name | Capabilities | Key config / credentials |
|---|---|---|---|
datadog |
Datadog | monitoring, observability, read, write | api_key, application_key |
sentry |
Sentry | monitoring, incident_management, read, write | token |
grafana |
Grafana | monitoring, observability, read, write | token |
Incident management
| Type | Display name | Capabilities | Key config / credentials |
|---|---|---|---|
pagerduty |
PagerDuty | incident_management, monitoring, read, write | token |
opsgenie |
OpsGenie | incident_management, monitoring, notification | api_key |
Security scanning
| Type | Display name | Capabilities | Key config / credentials |
|---|---|---|---|
sonarqube |
SonarQube | read, write, monitoring, observability | token |
codeclimate |
Code Climate | monitoring, observability | token |
snyk |
Snyk | read, vulnerability_scanning, monitoring | token |
Documents & knowledge
| Type | Display name | Capabilities | Key config / credentials |
|---|---|---|---|
notion |
Notion | read, write | token |
confluence |
Confluence | read, write | username, api_token, instance (required) |
sharepoint |
SharePoint | read, write | token |
dropbox_paper |
Dropbox Paper | read, write | token |
Secrets management
| Type | Display name | Capabilities | Key config / credentials |
|---|---|---|---|
azure_key_vault |
Azure Key Vault | secrets_management, read, write | token, vault_url (required) |
onepassword |
1Password | secrets_management, read, write | token |
Package registries
| Type | Display name | Capabilities | Key config / credentials |
|---|---|---|---|
npm |
npm | package_management, read | token |
pypi |
PyPI | package_management, read | token |
Automation
| Type | Display name | Capabilities | Key config / credentials |
|---|---|---|---|
n8n |
n8n | automation, read, write | token |
Generic / infrastructure
| Type | Display name | Capabilities | Key config / credentials |
|---|---|---|---|
filesystem |
Filesystem | read, write | base_path (required) |
shell |
Shell | read, write | allowed_commands, environment_profile_id |
custom |
Custom | varies by plugin | varies |
rest |
Generic REST | read, write | auth_mode, token / api_key / username + password, base_url, allowed_hosts |
Credential security
Farna Control encrypts connector credentials at rest with Fernet symmetric encryption. Credentials are decrypted once at run-start into a run-scoped context object and never written to LangGraph state, checkpoint blobs, logs, or OpenTelemetry spans. See Secrets for the full credential-handling details.
Related
- Secrets: credential encryption and the never-logged policy
- Configuration: environment variables and backend setup
- Pipelines: the directed-graph execution model
- GitHub use case: governing GitHub-based agent workflows
- GitLab use case: governing GitLab-based agent workflows
- Existing agent runtimes: integrating with Claude Code, Cursor, and Codex