Plane Source
The plane source adapter polls work items from a
Plane project — cloud or self-hosted — and maps them to
Apiary tasks.
Configuration
sources:
- id: project-erp
type: plane
config:
workspace: my-workspace
project: 6ee18c57-7f88-414c-bad5-44ef4afd979b
api_key: ${PLANE_API_KEY}
base_url: https://plane.example.com # self-hosted instance
poll_interval: 60s
filters:
states: [backlog, todo, in progress]
config fields
| Field | Required | Description |
|---|---|---|
workspace |
yes | Workspace slug |
project |
yes | Project UUID |
api_key |
yes | Plane API key |
base_url |
no | Instance URL for self-hosted Plane (defaults to Plane cloud) |
filters
| Field | Description |
|---|---|
states |
Only poll items in these states (matched by state name, e.g. backlog, todo, in progress) |
labels |
Only poll items carrying these labels |
Behavior
- Lazy metadata. On the first poll the adapter loads the project's states and labels once and resolves names ↔ IDs from then on, spacing the calls to respect Plane's rate limits. Config errors (bad key, wrong workspace/project) surface on connect; metadata errors on first poll.
- Human references. Work items are tracked with their project reference
(e.g.
ERP-42), which is what the dashboard's#column shows, and item URLs open the Plane web UI (oin the dashboard). - Write operations mirror the GitHub adapter: post the result as a
comment, transition state (
on_complete.set_statetakes a state name), and add labels (labels are created in the project if they don't exist yet).
State names in hooks
set_state values are matched against the project's state names, so hooks
read naturally:
workflows:
- id: implement
trigger:
priority: 10
match:
source: project-erp
labels: [agent:engineer]
steps:
- id: run
agent: engineer
on_complete:
set_state: in review
Rate limits
Self-hosted and cloud Plane instances enforce per-minute API budgets. If you
run several Plane sources or a short poll_interval, space the polling
(poll_interval: 60s or higher) — the adapter already paces its own
metadata calls.