Feather is a real-time debugging and inspection tool for LÖVE games — like Flipper or React DevTools, but for your game. Inspired by LoveBird.
📖 Documentation · Releases · Changelog · Contributing
- 📜 Live log viewer — See
print()output instantly in the app. - 🔍 Variable inspection — Watch values update in real-time.
- 🚨 Error capturing — Automatically catch and display errors.
- 📸 Screenshots & GIF capture — Capture and record via the built-in plugin.
- 🔌 Plugin system — +18 built-in plugins + custom ones. Server-driven UI: plugins define their actions in Lua, the desktop renders them automatically.
- 📱 Multi-session support — Connect multiple games simultaneously.
- 📲 Mobile debugging — Auto-detected local IP in Settings with copyable connection string.
- 💻 Console / REPL — Execute Lua code in the running game (opt-in, requires
apiKey). - 🐛 Step Debugger — Breakpoints, step over/into/out, call stack, local variable inspection.
- 📁 Log file viewer — Open
.featherlogfiles for offline inspection. - 🖥️ CLI-first setup —
feather init,feather run, andfeather removemanage the debugger lifecycle. - ⚡ Guarded in-game setup — Generated imports load only when
USE_DEBUGGERis enabled.
Install the CLI, initialize your game, then run with USE_DEBUGGER=1 when you want Feather loaded:
npm install -g @kyonru/feather
feather init --mode cli
feather run path/to/my-gameFor games running in an external device (iOS, Android, SteamDeck, etc), you need to include feather in the source code. Checkout the documentation for good practices and worfklow recommendations.
feather init path/to/my-game
USE_DEBUGGER=1 love path/to/my-gamefeather init creates a feather.config.lua file for project settings:
return {
sessionName = "My Game",
-- For phones, tablets, Steam Deck, or another computer, set this to
-- the desktop app machine's LAN IP.
-- host = "192.168.1.50",
-- include = { "console" },
-- exclude = { "hump.signal", "lua-state-machine" },
}Generated code always uses DEBUGGER safely:
function love.update(dt)
if DEBUGGER then
DEBUGGER:update(dt)
end
endFor production cleanup:
feather remove --dry-run
feather remove --yesThen download the desktop app from the releases page.
- Installation
- Configuration
- Usage — observers, logging, console, step debugger
- Plugins
- Recommendations — security, performance, release builds
- LoveBird by rxi — original inspiration
- Love-Dialogue by Miisan-png — plugin system reference
- Flipper by Facebook — UI/tooling patterns
- HUMP, anim8, flux, bump.lua, lua-state-machine
DISCLAIMER: The license only applies to products that directly replicate the logic/purpose of this tool. It does not apply to games created using it as a dev tool.
See LICENSE.md.
The architecture and planing of this tool has been made by me, I take a lot of my time and effort to put on this tool, mostly because it helps my development experience with Love2D. Once i had the plugin system in place, using AI for autocompletion has allowed for fast plugin development, and fix my poorly written rust code.
Code is curated and carefully revised by me. While I don't think there is need to explain this, i understand some people might not feel comfortable with AI in any form. I respect that.


