Skip to content

Supported Integrations

Apiary works with multiple source systems (where work comes from) and runner providers (how agents execute).

Source Adapters

Sources poll for tasks and write results back. Apiary reads issue status, comments, and metadata, then updates labels, states, and posts comments after agents complete work.

GitHub Issues

Status: βœ… Stable | Auth: Personal access token

Polls open issues from a GitHub repository. Apiary reads pull request status for CI waits, cross-references issues and PRs via the issue timeline, and writes back via commits and pull requests.

  • Requirements: Repository access via GitHub personal access token
  • Blocking relationships: Uses GitHub's blocked_by issue link type
  • Comment rendering: Markdown comments with embedded logs and cost summaries
  • Setup: See GitHub Source configuration

Plane

Status: βœ… Stable | Auth: API key

Polls issues from a Plane project. Supports custom states, labels, and relationships.

  • Requirements: Plane workspace with project access via API key
  • Blocking relationships: Uses Plane's native blocking link type
  • Comment rendering: Markdown comments
  • Setup: See Plane Source configuration

Jira Cloud

Status: βœ… Stable | Auth: API token

Polls Jira Cloud via JQL search. Supports status transitions, blocking relationships, and labels.

Note

Jira Server and Data Center are not supported β€” only Jira Cloud.

  • Requirements: Jira Cloud site with user access via API token
  • Blocking relationships: Uses Jira's Blocks link type (reads the inward "is blocked by" side)
  • Comment rendering: ADF (Atlassian Document Format) for rich formatting
  • Setup: See Jira Source configuration

Linear

Status: πŸ”„ Planned | Auth: API token

Support for Linear is in development.


Runners

Runners define how agents execute: either as a CLI subprocess on your machine or via a direct API call.

CLI Runners

CLI runners invoke the agent tool as a subprocess. The tool runs on your machine with full access to your credentials, so Apiary never handles auth secrets β€” they stay with the tool.

Claude CLI

Status: βœ… Stable | Provider: claude

Runs the claude binary as a subprocess for each step.

  • Requirements: claude CLI installed and authenticated
  • Structured parsing: Apiary parses Claude's event stream into readable [assistant] / [toolβ†’ …] logs
  • Exact costs: Token counts and costs come from Claude's structured response, not estimates
  • Setup: type: cli, provider: claude in runners
  • Docs: Runners configuration

OpenCode CLI

Status: βœ… Stable | Provider: opencode

Runs the opencode binary as a subprocess.

  • Requirements: opencode CLI installed and authenticated
  • Setup: type: cli, provider: opencode in runners
  • Docs: Runners configuration

Codex CLI

Status: βœ… Stable | Provider: codex

Runs the OpenAI codex binary as a subprocess using codex exec.

  • Requirements: codex CLI installed and authenticated
  • Skills: Codex reads checked-in skills from .agents/skills
  • Setup: type: cli, provider: codex in runners
  • Docs: Runners configuration

Cursor CLI

Status: βœ… Stable | Provider: cursor

Runs the Cursor agent binary as a subprocess.

  • Requirements: agent binary on PATH (installed with Cursor)
  • Setup: type: cli, provider: cursor in runners
  • Docs: Runners configuration

API Runners

API runners call a provider's API directly, without requiring the tool to be installed locally.

OpenCode API

Status: βœ… Stable | Type: opencode-api

Calls the OpenCode Cloud API directly.

  • Requirements: OpenCode API key
  • Setup: type: opencode-api in runners with config.api_key
  • Supported models: opencode-go/deepseek-v4-pro and others
  • Docs: Runners configuration

Anthropic API

Status: πŸ”„ Planned

Direct API runner for Claude models via the Anthropic API is in development.


Feature support matrix

Feature GitHub Plane Jira OpenCode API Claude CLI OpenCode CLI Codex CLI Cursor CLI
Polling βœ… βœ… βœ… β€” N/A N/A N/A N/A
State transitions βœ… βœ… βœ… β€” N/A N/A N/A N/A
Blocking relationships βœ… βœ… βœ… β€” N/A N/A N/A N/A
Comment rendering βœ… βœ… βœ… β€” N/A N/A N/A N/A
CI waits βœ… β€” β€” β€” N/A N/A N/A N/A
Structured logs β€” β€” β€” βœ… βœ… βœ… βœ… βœ…
Exact cost tracking β€” β€” β€” βœ… βœ… β€” β€” β€”

Using multiple adapters

You can configure multiple sources and runners in the same apiary.yaml:

sources:
  - id: github-issues
    type: github
    config:
      repo: my-org/my-repo
      api_key: ${GITHUB_TOKEN}

  - id: jira-backlog
    type: jira
    config:
      base_url: https://company.atlassian.net
      email: bot@company.com
      api_token: ${JIRA_API_TOKEN}

runners:
  - id: claude
    type: cli
    provider: claude

  - id: opencode
    type: opencode-api
    config:
      api_key: ${OPENCODE_API_KEY}

agents:
  - id: engineer
    runner: claude
    model: claude-sonnet-4-6

  - id: fallback
    runner: opencode
    model: opencode-go/deepseek-v4-pro

Workflows can route to different agents, which run on different runners. Tasks from any source can be dispatched to any agent.


Planned integrations

System Type Status
Linear Source πŸ”„ In development
Anthropic API Runner πŸ”„ In development
Mistral Runner πŸ“ Planned
Ollama Runner πŸ“ Planned

Have a request? Open an issue.