TaskBridge / Linear → Todoist
Assigned there.
Planned here.
TaskBridge carries assigned engineering work from Linear into the Todoist you already use for planning, reminders, and daily focus. Connect your own accounts, pick the teams that matter, preview the exact import, and decide what completing a task should do back in Linear.
BAR-104 → todoist://today · sync.status = ok
01 · What we stand on
Four commitments.
They shape the product, the copy, and every design decision on this site.
01
Linear is the source of truth
Shared work lives in Linear. TaskBridge mirrors it and reports back. It never becomes a third place to check.
02
Nothing imports unseen
You choose the teams and projects, and you preview the exact import before anything lands in your list.
03
Todoist stays personal
Your projects, labels, and errands are none of our business. The bridge carries work in; it never reads the rest.
04
Sync you can forget about
Complete or reopen on either side and the other follows, on your rules. Boring reliability is the whole feature.
02 · The crossing
Two shores. One list.
A bridge is configured in five steps. Nothing is written to either system until you activate — and you see the exact import first.
-
01
Connect
Sign in with an email link, then connect your own Linear and Todoist accounts through OAuth. Tokens are stored only as AES-256-GCM ciphertext.
-
02
Choose teams
Pick the Linear teams to include. Only open issues assigned to you are in scope.
-
03
Pick a destination
Choose the Todoist project where mirrored tasks will live.
-
04
Set behavior per team
Two questions per team: which state “done” means, and where “not done” returns the issue.
-
05
Preview & activate
TaskBridge computes the import server-side and lists every issue. Activation imports precisely that list.
Preview & activate
18 issues will be imported
12 from BAR, 6 from AGQ
| Issue | Title | Current state |
|---|---|---|
| BAR-101 | Fix invoice rounding on annual plans | In Progress |
| BAR-102 | Handle proration for seat downgrades | Todo |
| BAR-103 | Backfill harvest events for June | In Review |
| BAR-104 | Retry failed harvest webhook deliveries | In Progress |
03 · Field ownership
Two systems, each still itself.
Exactly one thing crosses the bridge: the task. Everything else has one owner, and TaskBridge enforces the boundary.
Linear — the far shore
Owned there, mirrored here.
Text flows one way, from Linear into the mirror. Editing the mirror never updates these fields; reconciliation restores them from Linear.
- Identifier & title[BAR-142]
- Descriptionone way
- Assignee, team, projectscope
- Workflow stateIn Review, Shipped, …
- Engineering labelsfrom Linear
- Delivery deadlinenever your due date
- Source URLdeep link back
Todoist — your shore
Yours. Never read, never written.
Reconciliation never includes these fields in a Todoist update, and never maps your planning back to a Linear deadline.
- Planned date & remindersyour schedule
- Personal priorityyours
- Orderingyours
- Personal labelsyours
- Private commentsnever read
- Personal subtasksnever read
Completion crosses — both ways, under rules you chose. Completing the Todoist task moves the Linear issue to the state you picked for that team. Un-completing it puts the issue back exactly where it was. That is the entire two-way surface.
04 · The contract
“Done” means what your team expects.
Completion behavior is configured per Linear team, in two questions. TaskBridge shows the resulting sentences before you activate — and honors them afterwards.
What you configure
One lifecycle policy per team. The app states each policy as the sentences it will act on:
- When you complete a task in Todoist, the issue moves to Done.
- When you un-complete a task, the issue returns to the exact state it was in before.
- When you complete a task in Todoist, the issue moves to Shipped.
- When you un-complete a task, the issue returns to its previous state.
What TaskBridge guarantees
Completion can move an issue only to the one state you chose. The prior state is recorded durably and is the only reopening target.
If Linear was completed by someone else and no prior state was recorded, Linear is authoritative — TaskBridge re-closes the Todoist task rather than guessing.
Issues that became deleted, unassigned, canceled, or archived are never completed by the bridge.
When something can’t proceed, TaskBridge holds the work and says exactly what happened — and what didn’t:
05 · Sync you can forget about
Webhooks make it fast. Reconciliation makes it true.
TaskBridge never turns a webhook payload into a write. Verified events only wake reconciliation, which rereads both systems and plans explicit operations.
Wake
Webhooks
Deliveries from Linear and Todoist wake the bridge within seconds. Every delivery is HMAC-verified against the exact raw body, bounded by a replay window, and deduplicated by the verified body hash — delivery headers are never trusted.
TODOIST signature + 5 min window
IDENTITY verified raw-body hash
PAYLOAD ≤ 256 KiB
Read
Reconciliation
Both providers are reread before anything is planned. The plan is a list of explicit operations — create, update, complete, reopen — and nothing is applied unless apply is explicitly true.
WAKEUPS coalesced, one follow-up
MANUAL Sync now, 60 s throttle
Repair
The repair pass
A periodic pass covers missed webhooks and process restarts. Retryable work waits in a durable outbox with exact next-attempt times, and every delayed write re-verifies that its link still names the same relationship before touching a provider.
OUTBOX ≤ 25 due entries per pass
LEASE 120 s · provider timeout 15 s
Activity
| Time | Trigger | Mode | Status | Result |
|---|---|---|---|---|
| 11 Aug, 17:58 | Scheduled check | Apply | Succeeded | No changes |
| 11 Aug, 17:53 | Provider event | Apply | Succeeded | 1 Linear issue moved |
| 11 Aug, 17:49 | Activation | Apply | Succeeded | 18 Todoist tasks created |
Invite-only beta
Stand on it.
TaskBridge is in an invite-only beta. Sign in, connect your accounts, and preview your first import before anything is written.