Linear
Linear is a hosted issue tracker addressed as https://linear.app/<your-workspace>/issue/<KEY>-<NUMBER>. Issue keys follow the <TEAM>-<NUMBER> shape (e.g. ENG-123, MKT-456).
Forgejo side: external issue tracker
Repo Settings → “Advanced Settings” → External issue tracker.
| Field | Value |
|---|---|
| External issue tracker URL | https://linear.app/<your-workspace>/issue/{user}-{index} |
| External issue tracker URL format | https://linear.app/<your-workspace>/issue/{user}-{index} |
| External issue tracker number format | Regexp |
| External issue tracker number format regexp | ([A-Z][A-Z]+)-([0-9]+) |
{user} captures the team key (e.g. ENG), {index} captures the issue number. The regex is intentionally permissive on team key length (≥2 chars) because Linear lets you set the prefix to any uppercase string.
Replace <your-workspace> with your Linear workspace slug (visible in the URL bar on any Linear issue page).
Recommended commit-message format
feat(checkout): trial-card dedup
ENG-892Linear’s GitHub/GitLab integrations support magic words like fixes ENG-892 to auto-close on merge — those words trigger Linear-side automation. fremforge isn’t a Linear-native integration partner, so the magic-words behaviour requires customer-side webhook + automation (next section).
Tracker side: webhook-driven automation (optional)
Linear’s inbound webhook lives at workspace-level, not per-issue:
- Linear → Settings → API → Webhooks → New webhook.
- URL: an HTTP endpoint you control that parses the Forgejo webhook payload and calls Linear’s GraphQL API to attach the commit/PR as a comment + (optionally) transition the issue. Linear ships Zapier + n8n recipes for this; for sovereignty-sensitive customers, a 30-line Cloudflare Worker / your-own-FaaS does it directly.
- In fremforge: Repo Settings → Webhooks → Add Webhook → Forgejo → target the relay endpoint above. Tick Push and Pull Request.
The relay-in-the-middle is unfortunate but Linear doesn’t speak Forgejo’s webhook shape natively. If you have a Linear admin willing to configure the magic-words endpoint, fremforge ships the events; the relay just maps payload field names.
Sub-processor implications
Linear’s control plane is AWS US-east-1 (no EU region available as of 2026-05-19; Linear has historically not committed to EU residency despite customer requests). When you wire fremforge to Linear:
- Commit metadata + author email flow to Linear → AWS US-east-1.
- Add Linear Orbit, Inc. as a sub-processor in your DPA + sub-processor register.
- Linear’s terms include the standard SCCs for EU→US transfers, but the data IS leaving the EU.
For sovereignty-sensitive workloads use Jira DC or Plane instead.
What this doesn’t do
- No native magic-words support (
fixes ENG-892) — that’s a Linear-native GitHub/GitLab integration feature, not part of the external-tracker primitive. Achievable via the relay path described above. - No GraphQL-side issue creation from fremforge (commits don’t auto-create Linear issues even when the referenced ID doesn’t exist).
- Linear’s “Cycle” / “Project” / “Roadmap” concepts don’t map to Forgejo; integration stays at the issue-link level.