Inspiration
Dead Tech Deserves a Second Life Flash is dead. GeoCities is gone. But the web artifacts that defined the early internet - those playable games, quirky websites, and multimedia experiments - deserve to be remembered, not forgotten.
We built NecroNet to prove that dead tech can live again. And we used Kiro to automate the entire resurrection process: from artifact detection to museum publication.
We were inspired by the idea of a "Digital Necromancer" - using modern AI agents to perform the technical rituals needed to bring obsolete code back from the grave.
What it does
NecroNet is an AI-powered museum of resurrected web artifacts.
Upload: You drop a dead file (Flash .swf, old HTML, image).
Detect: The backend auto-detects the artifact type.
Resurrect: A background pipeline migrates it:
Flash →_ Runs in Ruffle (WebAssembly emulator)._
HTML → Sanitized & modernized with responsive CSS.
Narrate: An AI "Ghost Curator" (powered by ElevenLabs) generates a spooky, witty audio tour explaining the artifact's history.
Exhibit: The artifact is published to a shareable, interactive museum gallery.
How we built it
We built a production-grade stack automated by Kiro agents.
Frontend: Next.js + Tailwind CSS (Dark Mode First)
Backend: FastAPI (Python) + Supabase PostgreSQL
Storage: AWS S3 (Artifact Preservation)
AI Voice: ElevenLabs (Ghost Narrator)
Emulation: Ruffle (Flash to WebAssembly)
The Kiro Integration (The Secret Sauce) We didn't just write code; we engineered Agents to do the work.
Specs: /resurrection.spec.md defined the entire pipeline.
Steering: /curator.steering.md pinned the "spooky curator" persona.
Hooks: artifact_ingest_hook.json automates migration planning on upload.
MCP: /emulation_control_mcp.md orchestrates the Ruffle emulator.
Challenges we ran into
Flash Security: Running old .swf files is dangerous. We solved this by integrating Ruffle, a Rust-based emulator that sandboxes Flash content safely in the browser.
Async Pipelines: Large migrations timed out the API. We implemented a background task system in FastAPI so the UI stays responsive while the "resurrection" happens.
CORS & Iframes: Getting modernized HTML to render safely required strict CSP headers and sanitization (using bleach).
Accomplishments that we're proud of
Building a fully functional, full-stack app in record time using Kiro.
Integrating ElevenLabs Voice Cloning to give the app a unique personality.
Successfully creating a "Modernized View" that visually transforms legacy code.
The .kiro folder: It’s not just config; it’s the brain of the project.
What we learned
Automation is creative: Using Kiro hooks freed us up to focus on the "Ghost Museum" concept instead of boilerplate code.
Preservation is hard: Old file formats are messy, but modern tools like WebAssembly make them accessible again.
Personality matters: Adding the "Ghost Curator" turned a simple file converter into an engaging experience.
What's next for NecroNet
Multiplayer Ghost Tours: Visitors can explore the museum together in real-time.
More Formats: Support for Java Applets and Shockwave.
Social Blitz: Auto-generating Twitter threads for each resurrected artifact.
Built With
- amazon-web-services
- elevenlabs
- fastapi
- kiro
- next.js
- python
- render
- ruffle
- supabase
- tailwind
- typescript
- vercel


Log in or sign up for Devpost to join the conversation.