Inspiration
My inspiration was Clippy. I want to resurrect that concept and keep it within the hackathon theme, but also be something that I would actually use
What it does
Here is the revised submission text using "I" instead of "We," perfect for a solo developer submission. Inspiration
Ghosty is a transparent, floating desktop ghost that lives on top of my windows. He has a sophisticated state machine that reacts to my workflow:
Floating (Blue): His idle state, just drifting through the void.
Observing (Yellow): Triggered when I copy code to the clipboard, save a file, or visit "cheating" sites like ChatGPT or StackOverflow (only works in chromium based browsers).
Glitching (Red): The "Haunted" state. Triggered when he detects bad code (like console.log or syntax errors). He shakes and glitches out visually.
Shadow (Gray): If I am inactive for more than 2 minutes, he fades into a "Shadow" state, waking up instantly when I return.
To make him feel alive, I implemented global eye-tracking logic so he always watches my mouse cursor or stares into the center of the screen.
How we built it
The Body: Built using React and TypeScript inside an Electron shell. To make him feel like a real ghost, I removed all window frames/backgrounds and calculated render positions relative to the OS work area.
The Nervous System: I used Kiro Agent Hooks to create a "neural link" between the IDE and the desktop pet. Whenever a file is saved in Kiro, the hook fires a silent curl command to a local HTTP server running inside Ghosty's main process, triggering real-time reactions.
The Brain: I used Kiro Specs to define the state machine logic before writing the code, ensuring the transitions between states were robust.
Challenges we ran into
The biggest challenge was fighting the operating system. I run Arch Linux, and the Wayland compositor hates applications that try to position themselves or stay "Always on Top." My transparency features initially crashed the GPU driver. I had to implement a "Nuclear Option"—forcing the app to use the XWayland backend (switching to X11) and disabling hardware acceleration to finally get the ghost to float correctly.
What we learned
I learned that Vibe Coding is real. I generated the "ectoplasmic" CSS animations and the complex floating keyframes purely by describing the "vibe" to Kiro. It saved me hours of CSS tweaking and let me focus on the Electron backend logic.
What's next for Ghosty
The next step is connecting Ghosty to a local LLM so he can understand the logic of the code. I also plan to implement an "Toast" system to let him communicate via floating text messages, rather than just state changes.
Log in or sign up for Devpost to join the conversation.