{
 "repo": {
  "name": "llmgateway",
  "owner": "theopenco",
  "stars": 1732,
  "license": "NOASSERTION",
  "full_name": "theopenco/llmgateway",
  "fetched_at": "2026-11-08T11:01:15.799984+00:00",
  "primary_language": "TypeScript"
 },
 "burns": [],
 "total": 120,
 "agents": [
  {
   "agent": "devin",
   "merged": 92,
   "flights": 104,
   "burn_rate": 0.01,
   "merge_rate": 0.893,
   "last_flight_at": "2025-06-22T01:12:18+00:00",
   "median_hours_to_merge": 0.9
  },
  {
   "agent": "cursor",
   "merged": 12,
   "flights": 12,
   "burn_rate": 0,
   "merge_rate": 1,
   "last_flight_at": "2025-07-13T19:02:57+00:00",
   "median_hours_to_merge": 0.8
  },
  {
   "agent": "openai-codex",
   "merged": 4,
   "flights": 4,
   "burn_rate": 0,
   "merge_rate": 1,
   "last_flight_at": "2025-06-17T16:07:39+00:00",
   "median_hours_to_merge": 1.2
  }
 ],
 "riders": [],
 "flights": [
  {
   "agent": "cursor",
   "state": "merged",
   "title": "ci(e2e): add cancellation by branch name",
   "number": 494,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 5,
   "deletions": 0,
   "merged_at": "2025-07-13T20:09:53+00:00",
   "opened_at": "2025-07-13T19:02:57+00:00",
   "task_type": "ci",
   "files_changed": 1,
   "hours_to_merge": 1.12
  },
  {
   "agent": "cursor",
   "state": "merged",
   "title": "fix(onboarding): adapt button behavior",
   "number": 466,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 145,
   "deletions": 31,
   "merged_at": "2025-07-04T23:56:36+00:00",
   "opened_at": "2025-07-04T22:06:19+00:00",
   "task_type": "fix",
   "files_changed": 6,
   "hours_to_merge": 1.84
  },
  {
   "agent": "cursor",
   "state": "merged",
   "title": "fix(onboarding): trigger onboarding redirect when incomplete",
   "number": 465,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 26,
   "deletions": 2,
   "merged_at": "2025-07-04T22:17:31+00:00",
   "opened_at": "2025-07-04T22:06:12+00:00",
   "task_type": "fix",
   "files_changed": 1,
   "hours_to_merge": 0.19
  },
  {
   "agent": "cursor",
   "state": "merged",
   "title": "fix(onboarding): improve credits vs BYOK flow",
   "number": 463,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 581,
   "deletions": 235,
   "merged_at": "2025-07-04T21:16:26+00:00",
   "opened_at": "2025-07-04T20:51:46+00:00",
   "task_type": "fix",
   "files_changed": 5,
   "hours_to_merge": 0.41
  },
  {
   "agent": "cursor",
   "state": "merged",
   "title": "fix(onboarding): adapt API key display",
   "number": 462,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 205,
   "deletions": 63,
   "merged_at": "2025-07-04T21:00:28+00:00",
   "opened_at": "2025-07-04T20:51:30+00:00",
   "task_type": "fix",
   "files_changed": 1,
   "hours_to_merge": 0.15
  },
  {
   "agent": "cursor",
   "state": "merged",
   "title": "fix(credits): handle failed payment intents",
   "number": 449,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 33,
   "deletions": 2,
   "merged_at": "2025-07-03T21:38:30+00:00",
   "opened_at": "2025-07-03T21:31:32+00:00",
   "task_type": "fix",
   "files_changed": 1,
   "hours_to_merge": 0.12
  },
  {
   "agent": "cursor",
   "state": "merged",
   "title": "fix(telemetry): make telemetry opt-in with docker default",
   "number": 443,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 43,
   "deletions": 53,
   "merged_at": "2025-07-03T00:51:44+00:00",
   "opened_at": "2025-07-03T00:02:02+00:00",
   "task_type": "fix",
   "files_changed": 5,
   "hours_to_merge": 0.83
  },
  {
   "agent": "cursor",
   "state": "merged",
   "title": "fix(chat): handle chat completion errors and logging",
   "number": 442,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 52,
   "deletions": 46,
   "merged_at": "2025-07-02T23:14:52+00:00",
   "opened_at": "2025-07-02T12:26:07+00:00",
   "task_type": "fix",
   "files_changed": 1,
   "hours_to_merge": 10.81
  },
  {
   "agent": "cursor",
   "state": "merged",
   "title": "feat(models): track & validate max tokens",
   "number": 440,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 2116,
   "deletions": 161,
   "merged_at": "2025-07-02T00:49:59+00:00",
   "opened_at": "2025-07-02T00:16:13+00:00",
   "task_type": "feat",
   "files_changed": 28,
   "hours_to_merge": 0.56
  },
  {
   "agent": "cursor",
   "state": "merged",
   "title": "Refactor env vars for dynamic configuration",
   "number": 439,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 818,
   "deletions": 447,
   "merged_at": "2025-07-02T00:58:35+00:00",
   "opened_at": "2025-07-01T23:15:01+00:00",
   "task_type": "refactor",
   "files_changed": 30,
   "hours_to_merge": 1.73
  },
  {
   "agent": "cursor",
   "state": "merged",
   "title": "feat(models): add per-requests pricing model",
   "number": 437,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 2793,
   "deletions": 970,
   "merged_at": "2025-07-01T23:34:59+00:00",
   "opened_at": "2025-07-01T22:52:03+00:00",
   "task_type": "feat",
   "files_changed": 27,
   "hours_to_merge": 0.72
  },
  {
   "agent": "cursor",
   "state": "merged",
   "title": "feat(telemetry): create self-hosted installation tracking table",
   "number": 420,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 5708,
   "deletions": 1275,
   "merged_at": "2025-07-02T23:42:13+00:00",
   "opened_at": "2025-06-30T22:13:59+00:00",
   "task_type": "feat",
   "files_changed": 59,
   "hours_to_merge": 49.47
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "fix: resolve anthropic streaming cost calculation model lookup",
   "number": 384,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 16,
   "deletions": 6,
   "merged_at": "2025-06-22T01:23:31+00:00",
   "opened_at": "2025-06-22T01:12:18+00:00",
   "task_type": "fix",
   "files_changed": 2,
   "hours_to_merge": 0.19
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "fix(api): use typed body parsing in API routes",
   "number": 365,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 87,
   "deletions": 17,
   "merged_at": "2025-06-17T16:42:22+00:00",
   "opened_at": "2025-06-17T16:07:39+00:00",
   "task_type": "fix",
   "files_changed": 8,
   "hours_to_merge": 0.58
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "fix(ui): adapt provider slug generation",
   "number": 357,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 27,
   "deletions": 27,
   "merged_at": "2025-06-16T20:43:27+00:00",
   "opened_at": "2025-06-16T20:22:46+00:00",
   "task_type": "fix",
   "files_changed": 4,
   "hours_to_merge": 0.34
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "feat(ui): add upgrade button for provider keys",
   "number": 356,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 192,
   "deletions": 134,
   "merged_at": "2025-06-16T19:56:29+00:00",
   "opened_at": "2025-06-16T18:08:05+00:00",
   "task_type": "feat",
   "files_changed": 11,
   "hours_to_merge": 1.81
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "fix(ui): reuse provider dropdown in onboarding",
   "number": 354,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 113,
   "deletions": 106,
   "merged_at": "2025-06-16T17:37:04+00:00",
   "opened_at": "2025-06-16T01:24:09+00:00",
   "task_type": "fix",
   "files_changed": 5,
   "hours_to_merge": 16.22
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "test: add unit test to prevent duplicate model IDs",
   "number": 342,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 20,
   "deletions": 0,
   "merged_at": "2025-06-11T16:41:56+00:00",
   "opened_at": "2025-06-11T15:37:50+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": 1.07
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: add mistral provider with mistral-large-latest model",
   "number": 340,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 66,
   "deletions": 7,
   "merged_at": "2025-06-11T17:00:03+00:00",
   "opened_at": "2025-06-11T01:40:27+00:00",
   "task_type": "feat",
   "files_changed": 6,
   "hours_to_merge": 15.33
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: use cheapest available model for provider validation",
   "number": 339,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 1495,
   "deletions": 804,
   "merged_at": "2025-06-16T00:03:09+00:00",
   "opened_at": "2025-06-11T00:45:49+00:00",
   "task_type": "feat",
   "files_changed": 51,
   "hours_to_merge": 119.29
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: add CloudRift provider with DeepSeek-V3 model support",
   "number": 337,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 38,
   "deletions": 4,
   "merged_at": "2025-06-11T01:01:39+00:00",
   "opened_at": "2025-06-11T00:09:32+00:00",
   "task_type": "feat",
   "files_changed": 6,
   "hours_to_merge": 0.87
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "fix(gateway): validate environment tokens in provider filtering",
   "number": 316,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 27,
   "deletions": 15,
   "merged_at": "2025-06-08T20:34:10+00:00",
   "opened_at": "2025-06-08T20:23:22+00:00",
   "task_type": "fix",
   "files_changed": 1,
   "hours_to_merge": 0.18
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "fix: close mobile drawer on navigation link clicks",
   "number": 311,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 14,
   "deletions": 2,
   "merged_at": "2025-06-08T00:14:38+00:00",
   "opened_at": "2025-06-07T23:55:02+00:00",
   "task_type": "fix",
   "files_changed": 1,
   "hours_to_merge": 0.33
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: move 5% fee from worker to transparent Stripe flow",
   "number": 309,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 4121,
   "deletions": 240,
   "merged_at": "2025-06-07T20:09:45+00:00",
   "opened_at": "2025-06-07T13:40:38+00:00",
   "task_type": "feat",
   "files_changed": 22,
   "hours_to_merge": 6.49
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: add auto top-up credits functionality",
   "number": 308,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 1910,
   "deletions": 136,
   "merged_at": "2025-06-07T13:15:53+00:00",
   "opened_at": "2025-06-07T00:43:46+00:00",
   "task_type": "feat",
   "files_changed": 12,
   "hours_to_merge": 12.54
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat(ui): separate settings tabs into individual pages",
   "number": 306,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 2206,
   "deletions": 397,
   "merged_at": "2025-06-07T00:07:30+00:00",
   "opened_at": "2025-06-06T23:33:06+00:00",
   "task_type": "feat",
   "files_changed": 19,
   "hours_to_merge": 0.57
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat(org): add retention level setting for request/response data",
   "number": 305,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 2717,
   "deletions": 1287,
   "merged_at": "2025-06-06T23:41:27+00:00",
   "opened_at": "2025-06-06T23:20:55+00:00",
   "task_type": "feat",
   "files_changed": 13,
   "hours_to_merge": 0.34
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: replace hardcoded docs URLs with DOCS_URL env var",
   "number": 288,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 20,
   "deletions": 9,
   "merged_at": "2025-06-04T00:23:26+00:00",
   "opened_at": "2025-06-03T23:36:34+00:00",
   "task_type": "feat",
   "files_changed": 11,
   "hours_to_merge": 0.78
  },
  {
   "agent": "devin",
   "state": "open",
   "title": "feat: add AWS Bedrock provider",
   "number": 281,
   "outcome": "stale",
   "index_ok": false,
   "additions": 1764,
   "deletions": 227,
   "merged_at": null,
   "opened_at": "2025-06-02T21:31:23+00:00",
   "task_type": "feat",
   "files_changed": 10,
   "hours_to_merge": null
  },
  {
   "agent": "devin",
   "state": "closed",
   "title": "feat: add OpenAI-compatible Google AI provider",
   "number": 280,
   "outcome": "burn",
   "index_ok": true,
   "additions": 57,
   "deletions": 1,
   "merged_at": null,
   "opened_at": "2025-06-02T16:33:03+00:00",
   "task_type": "feat",
   "files_changed": 7,
   "hours_to_merge": null
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: require projectId parameter for API key operations",
   "number": 279,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 116,
   "deletions": 17,
   "merged_at": "2025-06-02T14:24:45+00:00",
   "opened_at": "2025-06-02T13:55:42+00:00",
   "task_type": "feat",
   "files_changed": 5,
   "hours_to_merge": 0.48
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: add CRUD routes for projects and organizations with soft delete",
   "number": 278,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 2025,
   "deletions": 13,
   "merged_at": "2025-06-02T13:43:43+00:00",
   "opened_at": "2025-06-02T11:34:05+00:00",
   "task_type": "feat",
   "files_changed": 11,
   "hours_to_merge": 2.16
  },
  {
   "agent": "devin",
   "state": "closed",
   "title": "feat: add auto top-up functionality for credits",
   "number": 277,
   "outcome": "abandoned",
   "index_ok": false,
   "additions": 1974,
   "deletions": 417,
   "merged_at": null,
   "opened_at": "2025-06-01T23:36:06+00:00",
   "task_type": "feat",
   "files_changed": 13,
   "hours_to_merge": null
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat(ui): display model prices per million tokens",
   "number": 276,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 7,
   "deletions": 2,
   "merged_at": "2025-06-02T00:51:52+00:00",
   "opened_at": "2025-06-01T23:26:25+00:00",
   "task_type": "feat",
   "files_changed": 1,
   "hours_to_merge": 1.42
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "refactor: replace fetch calls with $api hooks for consistency",
   "number": 270,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 57,
   "deletions": 130,
   "merged_at": "2025-06-01T22:40:56+00:00",
   "opened_at": "2025-06-01T22:19:29+00:00",
   "task_type": "refactor",
   "files_changed": 4,
   "hours_to_merge": 0.36
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: implement lazy loading for Stripe SDK",
   "number": 268,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 851,
   "deletions": 159,
   "merged_at": "2025-06-01T23:07:27+00:00",
   "opened_at": "2025-06-01T21:15:43+00:00",
   "task_type": "feat",
   "files_changed": 22,
   "hours_to_merge": 1.86
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: replace passkey list API with authClient.useListPasskeys",
   "number": 267,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 7,
   "deletions": 106,
   "merged_at": "2025-06-01T21:30:21+00:00",
   "opened_at": "2025-06-01T20:38:36+00:00",
   "task_type": "feat",
   "files_changed": 5,
   "hours_to_merge": 0.86
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: add unified finish reason filter to activity page",
   "number": 265,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 90,
   "deletions": 47,
   "merged_at": "2025-05-31T23:03:26+00:00",
   "opened_at": "2025-05-31T13:35:51+00:00",
   "task_type": "feat",
   "files_changed": 4,
   "hours_to_merge": 9.46
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: use average of input/output prices for cheapest provider calculation",
   "number": 260,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 3,
   "deletions": 2,
   "merged_at": "2025-05-31T12:38:25+00:00",
   "opened_at": "2025-05-31T11:40:19+00:00",
   "task_type": "feat",
   "files_changed": 1,
   "hours_to_merge": 0.97
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: add posthog custom events for analytics tracking",
   "number": 259,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 144,
   "deletions": 29,
   "merged_at": "2025-05-30T17:36:01+00:00",
   "opened_at": "2025-05-30T17:02:07+00:00",
   "task_type": "feat",
   "files_changed": 9,
   "hours_to_merge": 0.56
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: require organizationId in provider key creation payload",
   "number": 252,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 1003,
   "deletions": 107,
   "merged_at": "2025-05-29T16:04:13+00:00",
   "opened_at": "2025-05-29T14:02:36+00:00",
   "task_type": "feat",
   "files_changed": 20,
   "hours_to_merge": 2.03
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "refactor(ui): replace setQueryData with invalidateQueries",
   "number": 251,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 8,
   "deletions": 73,
   "merged_at": "2025-05-29T13:56:39+00:00",
   "opened_at": "2025-05-29T13:17:18+00:00",
   "task_type": "refactor",
   "files_changed": 5,
   "hours_to_merge": 0.66
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat(db): add foreign key constraints for referential integrity",
   "number": 249,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 9347,
   "deletions": 3558,
   "merged_at": "2025-05-29T16:57:00+00:00",
   "opened_at": "2025-05-29T12:57:00+00:00",
   "task_type": "feat",
   "files_changed": 70,
   "hours_to_merge": 4
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: add requestId to log table and request handling",
   "number": 248,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 1099,
   "deletions": 1,
   "merged_at": "2025-05-29T11:50:28+00:00",
   "opened_at": "2025-05-29T11:37:06+00:00",
   "task_type": "feat",
   "files_changed": 5,
   "hours_to_merge": 0.22
  },
  {
   "agent": "devin",
   "state": "closed",
   "title": "feat: add request ID tracking",
   "number": 246,
   "outcome": "abandoned",
   "index_ok": false,
   "additions": 1164,
   "deletions": 54,
   "merged_at": null,
   "opened_at": "2025-05-28T21:15:57+00:00",
   "task_type": "feat",
   "files_changed": 12,
   "hours_to_merge": null
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: adapt provider keys to be org-level",
   "number": 242,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 4467,
   "deletions": 683,
   "merged_at": "2025-05-29T13:52:54+00:00",
   "opened_at": "2025-05-28T17:24:38+00:00",
   "task_type": "feat",
   "files_changed": 50,
   "hours_to_merge": 20.47
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: differentiate between 4xx and 5xx error responses",
   "number": 240,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 70,
   "deletions": 34,
   "merged_at": "2025-05-28T17:31:54+00:00",
   "opened_at": "2025-05-28T15:19:29+00:00",
   "task_type": "feat",
   "files_changed": 6,
   "hours_to_merge": 2.21
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat(ui): centralize user data fetching with useUser hook",
   "number": 239,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 93,
   "deletions": 56,
   "merged_at": "2025-05-28T14:21:21+00:00",
   "opened_at": "2025-05-28T12:15:38+00:00",
   "task_type": "feat",
   "files_changed": 7,
   "hours_to_merge": 2.1
  },
  {
   "agent": "devin",
   "state": "closed",
   "title": "feat(ui): create reusable useUser hook with redirection capabilities",
   "number": 237,
   "outcome": "abandoned",
   "index_ok": false,
   "additions": 124,
   "deletions": 288,
   "merged_at": null,
   "opened_at": "2025-05-28T10:52:55+00:00",
   "task_type": "feat",
   "files_changed": 7,
   "hours_to_merge": null
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "refactor(ui): replace useSession with $api.useSuspenseQuery",
   "number": 236,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 26,
   "deletions": 22,
   "merged_at": "2025-05-28T12:02:58+00:00",
   "opened_at": "2025-05-28T10:33:35+00:00",
   "task_type": "refactor",
   "files_changed": 6,
   "hours_to_merge": 1.49
  }
 ],
 "indexed": 92,
 "monthly": [
  {
   "burns": 0,
   "month": "2025-05",
   "merged": 74,
   "flights": 83
  },
  {
   "burns": 1,
   "month": "2025-06",
   "merged": 23,
   "flights": 26
  },
  {
   "burns": 0,
   "month": "2025-07",
   "merged": 11,
   "flights": 11
  }
 ],
 "top_authors": [
  {
   "name": "Luca Steeb",
   "login": "steebchen",
   "flights": 16,
   "indexed": 10
  }
 ],
 "page": "https://agentriders.com/logs/theopenco/llmgateway/"
}