Linear Source
What it ingests
Issue activity from Linear — issues and their comments — optionally scoped to specific teams. Linear Team maps onto Corveil's Project entity (the Jira project analog). Linear's own Projects (roadmaps) and Cycles are not first-class v1 entities.
This is GraphQL poll ingest against https://api.linear.app/graphql. Linear also offers an MCP server (https://mcp.linear.app/sse) for agent tool access; that is not ontology ingestion — this source is the sensor.
Credential
References a linear_api_key credential by id. The secret is a Linear personal API key (lin_api_…). Linear is a single cloud API, so there is no site URL beside the key.
curl -sS -X POST https://your-corveil-host/api/credentials \
-H "Authorization: Bearer <admin>" -H "Content-Type: application/json" \
-d '{"type":"linear_api_key","name":"acme-linear-key","secret":"lin_api_..."}'OAuth 2.0 / 3LO is out of scope in v1.
Config fields
| Key | Required | Notes |
|---|---|---|
team_keys | no | Comma-separated Linear team keys, e.g. ENG, OPS. Blank ingests every team the key can read. |
Provider-side setup
- Sign in as the Linear account that should own the key.
- Create a personal API key at Settings → API (linear.app).
- Make sure that account can view the teams you want to ingest.
Wire-up
POST /api/sensors
{
"sensor_type": "linear",
"name": "Acme Linear",
"config": {
"team_keys": "ENG, OPS"
},
"credentials": { "api_key": "<linear_api_key credential id>" }
}Verify
Run Test connection to confirm the key authenticates (viewer / organization query). A bad key fails at save/test, not on the first poll. Once polling, created and updated issues in the selected teams appear as task events; comments appear as conversation events.