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.

  1. Upload: You drop a dead file (Flash .swf, old HTML, image).

  2. Detect: The backend auto-detects the artifact type.

  3. Resurrect: A background pipeline migrates it:

    Flash →_ Runs in Ruffle (WebAssembly emulator)._

    HTMLSanitized & modernized with responsive CSS.

  4. Narrate: An AI "Ghost Curator" (powered by ElevenLabs) generates a spooky, witty audio tour explaining the artifact's history.

  5. 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

Share this project:

Updates