Linear Connector
Ingest Linear issues and comments into CortexDB.
Tails Linear issues and their comments and writes them to CortexDB as experiences.
Two ways to run this connector
Self-hosted — pip install 'cortexdb-connectors[linear]' then cortexdb-sync sync linear.
Managed — CortexDB runs the connector as a worker. See the Connectors overview.
1. Prepare credentials
Linear → Settings → API → Personal API keys → create a key and copy it.
What gets written
Each issue and comment becomes a POST /v1/experience on the resolved scope (default
org:<org>/source:linear/team:{team}), with the author resolved and the body as content, plus an
entity reference to the issue.
Record keys and threads
- The
idempotency_keyuses thelinear:prefix (notlin:). - Comments link to their issue via a
thread=…label, notcontext.preceded_by.
The key on the wire is derived
The key format above is this connector's internal record identity: it decides which source record an
event belongs to. The idempotency_key actually sent to CortexDB is a derived cxsrc:<56 hex> value
that also hashes the content, labels, observed time and actor, so an unchanged redelivery converges on
the same event while any edit lands as a new one, even where the key format itself is not
content-versioned. Every event also carries a source descriptor with the record's fingerprint. See
Source identity and keys.
Run it yourself
pip install 'cortexdb-connectors[linear]'
pip install cortexdb-cli && cortexdb init
export LINEAR_API_KEY=lin_api_... # required
cortexdb-sync --api-url http://localhost:3141 sync linear
cortexdb-sync --api-url http://localhost:3141 watch linear --interval 120Optional settings
Set these as environment variables (or the matching keys in the cortexdb-sync YAML config). Lists are comma-separated. For on/off settings, 1, true, yes or on turns the setting on and any other value turns it off.
| Setting | What it does | Default |
|---|---|---|
LINEAR_TEAMS | Team IDs to sync | Every team the API key can see |