Skip to content

Feather 🪶

Real-time debug & inspect tool for LÖVE (love2d) games.

Like Flipper or React DevTools, but for your game. Inspect logs, variables, performance metrics, and errors in real-time over a WebSocket connection — with a built-in plugin system, step debugger, and zero-config setup.


Features

  • 📜 Live log viewer — See print() output instantly in the app.
  • 🔍 Variable inspection — Watch values update in real-time.
  • 🚨 Error capturing — Catch and display errors automatically.
  • 📸 Screenshots & GIF capture — Capture screenshots and record GIFs 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, each gets its own session tab.
  • 📲 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, and local variable inspection.
  • 🖼️ Asset inspector — Browse loaded textures, fonts, and audio sources with previews, zoom, pan, and pixel grid.
  • 📁 Log file viewer — Open .featherlog files for offline inspection.
  • 🖥️ CLI-first workflowfeather init, feather run, and feather remove manage setup and cleanup.
  • Guarded in-game setup — Generated imports load only when USE_DEBUGGER is enabled.
  • 📦 Config file supportfeather.config.lua keeps project settings outside game code.

Quick Start

Important

For quick local desktop iteration, you can also use feather run path/to/my-game without changing game code. For mobile, handhelds, and remote devices like Android, iOS, or Steam Deck, use the embedded library from feather init --mode auto so the game carries Feather with it on the device.

Option A — CLI injection (no game-side changes)

npm install -g @kyonru/feather
feather init path/to/my-game
feather run path/to/my-game

Feather is injected automatically. No require needed in the game. See CLI.

Note

This is best for local desktop development where the CLI launches LÖVE directly.

Option B — Managed in-game setup

npm install -g @kyonru/feather
feather init path/to/my-game --mode auto
USE_DEBUGGER=1 love path/to/my-game

Important

Use this for mobile, handheld, and remote devices such as Android, iOS, Steam Deck, or a second computer. Those builds need the embedded Feather library because the CLI is not launching the game process on that device.

feather init creates feather.config.lua:

return {
  sessionName = "My RPG",
  -- Set to the desktop app machine's LAN IP for remote devices.
  host = "192.168.1.50",
  exclude = { "network-inspector" },
}

Tip

The generated main.lua integration is guarded by USE_DEBUGGER, so Feather is not imported unless you opt in for a dev run.

When you access DEBUGGER in your own code, guard it:

function love.update(dt)
  if DEBUGGER then
    DEBUGGER:update(dt)
  end
end

Before shipping a production build:

feather remove --dry-run
feather remove --yes

Documentation

  • CLI — Run games without touching their code, feather run, feather init, feather doctor
  • Installation — Download, install script, LuaRocks, custom paths
  • Configuration — All config options, connecting, mobile debugging
  • Usage — Observers, logging, console / REPL, step debugger
  • Assets — Inspect loaded textures, fonts, audio, and configure the game root
  • Plugins — Built-in plugins, plugin system, custom plugins
  • Recommendations — Security, performance, release builds

Screenshots

log tab performance tab observability tab