-
-
No contribution left behind — paste any GitHub repo and Lazarus scans its graveyard of dead pull requests.
-
The Graveyard: stale PRs ranked by GPT-5.6 revival score, with a one-line reason, effort and risk for each.
-
Resurrection Room: live Codex agent log, and before/control/after test evidence — 1237 passing with conflicts → 1260 passing, merges clean.
-
The handback: a draft PR on GitHub with the GPT-5.6 maintainer briefing as its body, co-crediting the original author.
💡 Inspiration Every developer has seen this tombstone: an open-source pull request that fixes a real bug, has an approving review, and then… nothing. The base branch moved on. Conflicts appeared. The maintainer got busy. The last comment is a stranger asking "any update on this?" — two years ago.
GitHub holds hundreds of thousands of these. Each one is a person who spent their evening trying to make software better, and whose work silently rotted. Maintainers feel guilty about them. Contributors quietly give up on open source because of them. We wanted to build the tool that makes that stop.
⚡ What it does Lazarus resurrects dead pull requests. Point it at any GitHub repository:
Scan the graveyard. Lazarus finds stale open PRs and asks GPT-5.6 a maintainer's question about each: is this worth saving? Linked issue still open, prior approvals, conflict size, author activity — every PR gets a 0–100 revival score with a one-line rationale. Resurrect. For a chosen PR, Lazarus spins up a sandbox and drives a headless Codex agent: rebase onto today's main, resolve conflicts while preserving the author's intent, adapt the code to APIs that changed since, and iterate until the test suite passes. Prove it. Tests are run before and after — "3 conflicts, tests failing" becomes "merges clean, tests green," with logs as evidence. Hand it back. GPT-5.6 writes a one-page Maintainer Briefing (what the PR intended, what drifted, exactly what was changed, risk level) and opens a draft PR — co-authored with the original contributor, so their work finally counts. Reviewing a resurrection takes a maintainer five minutes. Doing it by hand takes hours. That's the entire pitch.
🧾 Receipts: three real resurrections
We ran Lazarus on expressjs/express. PR #6875 — a real res.cookie() null-maxAge fix, dead 6 months with a breaking cookie 0.7→1.0 dependency jump — went from 1,237 passing / conflicted to 1,260 passing, 0 failing, merges clean after Codex root-caused 55 dependency failures: https://github.com/kax168/express/pull/1. PR #4106 (a 2019 approved PR) revived with zero retries: https://github.com/kax168/express/pull/2. PR #5503 was revived by clicking "Revive" live in the dashboard while recording the demo video: https://github.com/kax168/express/pull/3. Every run's Codex session ID is displayed in the UI and logged in the repo.
🛠️ How we built it Lazarus is recursive: Codex built a tool whose product is Codex.
The repo was developed in a series of scoped Codex sessions — scaffold, scanner, revival engine, verifier, reporter, dashboard — each session ID logged in the repo (docs/CODEX_COLLABORATION.md). The revival engine invokes the Codex CLI headlessly (codex exec) inside a sandboxed clone, streams the agent's progress live to the dashboard, and surfaces the session ID in the UI for full transparency. GPT-5.6 is the judgment layer: revival-value scoring with structured outputs, risk assessment, and the maintainer briefing. Stack: TypeScript monorepo · Next.js dashboard with live SSE logs · Express API · SQLite · Octokit. 🧗 Challenges we ran into Teaching the pipeline to fetch fork PRs whose source repos were deleted (refs/pull/N/head is the resurrection door). Making a headless agent run demoable: streaming Codex's work live so you can watch a two-year-old PR come back to life. Being good citizens: Lazarus only opens draft PRs, only against explicitly allow-listed repos, and always credits the original author. 📚 What we learned A well-briefed agent session beats ten chatty ones. We wrote complete task briefs, let Codex work, and gated everything behind the repo's own test suite — the same loop Lazarus itself runs on dead PRs.
🚀 What's next A GitHub App maintainers can install: weekly "here's what's worth resurrecting" digests. Batch mode: revive an entire graveyard overnight, ranked by impact. Contributor notifications: "your PR from 2024 just came back to life — care to take a look?"
Built With
- express.js
- github-api
- gpt-5.6
- next.js
- node.js
- openai-codex
- sqlite
- typescript
Log in or sign up for Devpost to join the conversation.