π¦ Fox provides tooling while developing with Godot Engine.
From the first scene to the store page: a skeleton to hang your game on, GDScript libs that spare you the boilerplate, and one CLI to run, export and publish on Steam and itch.io.
A Fox game is a Godot project with one root scene, one router, and screens. Fox brings the three of them, then gets out of the way.
your-game/
βββ addons/fox/ # the runtime, pinned at the version you chose
βββ fox.config.json # bundles, exports, stores
βββ project.godot
βββ src/
βββ app.tscn # app > scene + hud
βββ app.gd
βββ router.gd
βββ screens/
βββ home.tscn
βββ home.gdapp.gd boots the tree Fox expects, and opens your first screen:
extends 'res://addons/fox/core/app.gd'
func _ready():
super._ready()
Router.openHome()router.gd names your screens once. From anywhere in the game, navigation is
then a single call, Router.openHome({level = 3}), with transitions, a loader
and the restored navigation state included:
extends 'res://addons/fox/core/router.gd'
var home = preload('res://src/screens/home.tscn')
func openHome(options = {}):
openScene(home, options)A screen extends FoxScreen: the router instantiates it, hands it what the
navigation passed, and it relays out on its own when the window is resized: the
Steam Deck β desktop split costs nothing per screen.
extends FoxScreen
func onOpen(options):
_layout()
func _onViewportResized():
_layout()Everything else is autoloads you call directly: Animate and Motion for
tweens and idle motion, Sound, HTTP, Controls, Steam, Leaderboard,
Gesture, and the __ utility belt.
One command per step of a game's life, the same on macOS, Linux and Windows:
fox run:game # run your game, hot reloading as you code
fox export # export a bundle for one of your presets
fox publish steam release # upload it to the storeVersion bumps, asset imports, icons, splashscreens and store screenshots have their command too: see the CLI reference.
One command, run from your Godot project, on macOS, Linux and Windows (Git Bash or WSL):
cd your-game
curl -fsSL https://raw.githubusercontent.com/uralys/fox/main/install.sh | shIt installs both halves of Fox from the same release: the runtime, mounted at
res://addons/fox and committed with your game, and the global fox
executable. The CLI is optional, and needs NodeJS >= 26: without it the addon is
mounted all the same, since it needs nothing but Godot.
Then enable the plugin once from Project > Project Settings > Plugins > Fox:
it registers the G, DEBUG and Gesture autoloads, and leaves alone any
autoload your game already declares.
Your game is now pinned, and moves to the next Fox when you decide to:
fox upgrade swaps addons/fox for a released version, whole, and pins the
executable with it. Every other command tells you when there is one to take,
reading the latest release at most once every six hours: fox and fox --help
check on the spot, and print the notice under the command table.
The full walkthrough (prerequisites, main scene, optional autoloads) is in Installing Fox.
Coming from Fox 1.x? The runtime moved from
res://fox/tores://addons/fox/: see the 2.0.0 release notes for the migration steps.
The full index lives in docs:
- Core: globals, router, screens & responsive, sound, files, Steam, leaderboard
- Input: controls, touch & drag, multitouch, draggable camera
- Animation & UI:
Animate,Motion, popups, components - Libs & utilities: HTTP,
__, frame probe, in-app purchases - CLI: install, commands, hot reload, versions
- Exporting & shipping: building, exporting, images, publishing, Android & iOS








