A free and open source football management simulation game built with Rust and Tauri, inspired by Football Manager.
Openfoot Manager is an open source football management simulation desktop game that puts you in the dugout as a manager. You recruit players, set tactics, manage contracts, and watch your club climb the league table — all without spending a penny. Inspired by the Football Manager franchise but unburdened by licensing fees, it aims to deliver the depth football fans crave in a fully transparent, community-driven package.
The game runs as a native desktop app powered by Tauri and Rust on the backend, with a React + TypeScript frontend that delivers a responsive, broadcast-quality UI. Match simulation happens entirely in a local Rust engine, so there are no cloud dependencies: your saves, your world data, and your match outcomes live entirely on your own machine.
Beyond matches, Openfoot Manager models the full management lifecycle: hiring and firing staff, negotiating player contracts and transfer fees, setting weekly training schedules, managing club finances, and responding to board objectives and inbox messages. The inbox-driven narrative system — pre-match briefings, scouting reports, board directives, press conference prompts — keeps the experience feeling alive between fixtures.
The project is actively developed and community-backed, with nightly releases, a Discord community, and internationalization support across seven languages including English, German, Spanish, French, Italian, Portuguese, and Chinese.
Architecture
Openfoot Manager follows a layered, dependency-inverted workspace architecture with four Rust crates arranged in a strict hierarchy: a pure data layer (domain), a deliberately isolated simulation engine (engine), a game logic orchestrator (ofm_core), and a persistence layer (db). The engine crate carries no dependency on domain — it defines its own mirror types — which means the simulation can be evolved and tested in total isolation. The ofm_core crate acts as the bridge, converting between domain and engine types in turn.rs and managing a Mutex<Option<Game>> state manager that serializes all Tauri IPC commands sequentially. On the frontend, Zustand stores shadow the backend state with a predictable update pattern: every Tauri command that mutates game state returns the updated Game, which the store replaces atomically. The result is a clean separation of concerns where the simulation, game rules, persistence, and UI can each change independently.
Tech Stack
The backend is pure Rust (edition 2021) using Tauri v2 as the desktop shell, rusqlite with a versioned migration manager for save persistence, serde with #[serde(default)] for backward-compatible serialization, and rand with seedable RNGs for deterministic simulation testing. The frontend uses React 19 with TypeScript, Vite 8, Tailwind CSS v4, react-router-dom v7 for page-level routing, and Zustand v5 for global state. Internationalization is handled by i18next with i18next-resources-to-backend for lazy locale loading across seven languages. All Tauri↔React communication flows through typed invoke() commands; there are no WebSockets or polling loops. Build artifacts are packaged by Tauri’s bundler targeting macOS, Windows, and Linux.
Code Quality
The Rust crates have comprehensive integration and unit test coverage: the engine crate has deterministic simulation tests using seeded StdRng, and the ofm_core crate has an extensive suite covering transfers, finances, training, contracts, player events, scouting, live match management, and end-of-season logic. On the frontend, Vitest is configured with @testing-library/react and jsdom, with tests covering components, hooks, and utility functions. Error handling in the Rust layer uses typed string error codes prefixed by domain (e.g., be.error.transfers.*) rather than opaque panics, and all SQL repository queries use bound parameters. The codebase maintains a consistent naming convention throughout, and a CI audit script verifies i18n key coverage across all locales, preventing untranslated strings from shipping silently.
What Makes It Unique
The most distinctive technical choice is the hard isolation of the simulation engine from the rest of the game stack — the engine crate has no knowledge of domain types, which is unusual in game codebases and enables true unit testing of match outcomes with synthetic data. The live match architecture is also notable: it supports genuine interactivity (substitutions, tactical changes, halftime talks) by wrapping the same core resolution logic in a LiveMatchState that advances minute by minute and emits per-minute result streams, rather than having a separate simulation path for interactive play. The optional MCP server feature (gated behind a Cargo feature flag) exposes game state over a streamable HTTP interface via rmcp, enabling AI agent integration and external tooling — a genuinely forward-looking addition for a desktop game. The metadata-driven inbox and news system, where all message text is externalized as i18n keys with structured parameters, means the entire narrative layer is community-translatable without touching Rust code.
Openfoot Manager is licensed under the GNU General Public License v3.0 (GPLv3), one of the strongest copyleft licenses in open source. This means you can use, study, modify, and distribute the game freely — including commercially — but any derivative work or software that incorporates Openfoot Manager’s code must also be released under GPLv3 with source included. For most self-hosters simply running the game, this has no practical impact; the copyleft obligation only activates if you distribute modified binaries to others.
Running the game yourself requires no server infrastructure at all — it is a native desktop application. You install it directly on macOS, Windows, or Linux using the nightly or tagged release binaries, or build from source with standard Rust and Node tooling. All game data, save files, and world databases live in local SQLite files on your own machine. There is no database server to configure, no authentication system to maintain, and no cloud dependency. The operational burden is essentially that of any desktop app: keep Tauri and Rust toolchains updated if building from source, and manage your own save backups.
There is no paid, cloud, or SaaS tier for Openfoot Manager — it is purely community-developed with no commercial offering. This means there are no managed hosting options, no support SLAs, no automatic cloud backups, and no enterprise license pathway. All support comes through the community Discord server and GitHub Issues. If you want hosted saves or multi-device sync, you would need to implement that yourself by synchronizing the SQLite save files with a tool like Syncthing or a cloud drive, as no first-party mechanism exists.
Developer Tools · Game Development · Design Tools
Free, MIT-licensed 2D and 3D game engine with one-click multi-platform export and no royalties.
Developer Tools · Game Development · Design Tools
No-code, open-source game engine for building 2D, 3D and multiplayer games — publish to iOS, Android, Steam and the web.
Developer Tools · Game Development
Open-source game backend server with built-in multiplayer, matchmaking, leaderboards, chat, authentication, and storage — deploy anywhere via Docker or binary.