Inspiration
Every one of us has lost an app we loved. A company gets acquired, a service shuts down, and you're left holding a ZIP file of your own data useless without the app that made it meaningful. And there's a second version of the same trap: the tool that charges $30/month while you use 20% of its features. Both are the same problem software you depend on, controlled by someone else. We wanted to flip that: what if your workflow could never be taken away from you again?
What it does
Anastasis resurrects dead (or overpriced) web apps. You give it two things: a ~2-minute screen recording of you using the app, and your data export ZIP. It then:
- Watches frames from your recording of every screen, button, and click
- Understands what the app fundamentally is (entities, views, workflows)
- Matches your export against what it saw on screen, flagging conflicts instead of guessing
- Builds a brand-new app with Codex, migrates your data in, and tests it until everything passes
- Delivers it live on its own HTTPS subdomain yours, running, data included
It only rebuilds what you were seen using untouched features are deliberately left out. And when the AI hits genuine ambiguity (our demo data had low/medium/high priorities, but the UI only ever showed Medium/High), it pauses mid-build and asks you instead of silently guessing.
How we built it
- GPT-5.6 vision watches frame batches from the recording and writes exhaustive observation notes
- GPT-5.6 with structured outputs turns notes into a machine-checkable product spec (Zod-validated), then cross-checks it against the export's actual columns and row counts
- Codex (gpt-5.6-sol) generates the entire app from scratch — schema, migration, API routes, UI — governed by an AGENTS.md contract, with pause/resume clarification via
codex exec resumeand structured output schemas - Trust through verification, not hope: every build passes independent gates — a mechanically-enforced dependency allowlist, migration row-count verification, self-generated smoke tests, and a check that styling actually shipped
- Production infra: a 2-node k3s cluster across two VPSes, in-cluster registry, Kaniko (daemonless) image builds per resurrection, dynamic Kubernetes deploys via the API, wildcard DNS + Cloudflare TLS. Fun fact: the orchestrator itself is built and deployed by the exact same Kaniko pipeline that deploys the resurrected apps.
Challenges we ran into
This project fought back, and every fix came from a real failed run:
- Codex's sandbox vs. Kubernetes: bubblewrap can't create nested namespaces inside a pod — and
codex exec resumesilently ignores sandbox settings, which took a real production failure to discover - The OOM wars: Codex would start background dev servers during its own testing and never stop them — stacking Next.js instances until the pod was OOM-killed. Fixed with process-group reaping, per-run test ports, and explicit process-hygiene rules in the agent contract
- Pause/resume vs. ephemeral pods: a paused run died because the pod restarted and both the run artifacts and Codex's own session history lived on ephemeral storage. Persistent volumes for both made "ask the user and wait" a real feature instead of a coincidence
- Cloudflare kills quiet SSE streams (~100s idle) — which crashed builds until we decoupled pipeline execution from request lifetime and added heartbeats
- The 412-task app that shipped in Times New Roman: fully functional, zero CSS — Codex skipped one
import "./globals.css"line. Status-200 checks can't catch "ugly," so now a mechanical check fails any build that skips it
Accomplishments that we're proud of
- A complete, live, end-to-end resurrection in production: browser upload → AI pipeline → interactive clarification → verified build → containerized → deployed — a real app with all 412 records migrated, on its own subdomain
- The verification-gate architecture: the AI is powerful but never trusted — every claim it makes is independently checked
- The clarification loop: watching the AI notice a genuine data conflict and ask a smart question instead of guessing wrong
What we learned
- Agentic codegen needs mechanical guardrails, not just instructions — prompts get ignored under pressure; build-failing checks don't
- In Kubernetes, anything that matters must survive a pod restart — "it works" and "it works after a restart" are different claims
- Cross-checking two independent sources (video vs. export) is what turns an AI demo into something you can actually trust with your data
What's next for Anastasis — Your app died. Your data didn't.
- More export formats (JSON, SQLite dumps, API scrapes) and richer app shapes
- Hardened multi-tenancy: per-tenant network policies, sandboxed build pods
- Custom domains — point
tasks.yourdomain.comat your resurrection - One-click export of the generated source, so "you own it" includes the code
Built With
- better-sqlite3
- cloudflare
- codex
- docker
- ffmpeg
- gpt-5.6
- k3s
- kaniko
- kubernetes
- next.js
- nginx
- node.js
- openai-api
- react
- sqlite
- tailwindcss
- terraform
- typescript
- ubuntu
- zod
Log in or sign up for Devpost to join the conversation.