Project-agnostic companion CLI + web UI for Flutter apps. One install, any project, multi-flavor or single-flavor.
- Build web / APK / AAB / iOS / IPA / desktop with optional flavor awareness
- Clean, analyze, test, icons, translations, unused-file detection
- Deploy web artifacts via FTP / FTPS / SFTP
- Archive backups (zip / 7z / tar.gz / tar.bz2 / tar.xz / tar.zst / tar)
- FastAPI + WebSocket web UI with live log streaming, project switcher, and server restart button
- Multi-project registry (
~/.ftk/projects.yaml)
Run the installer from your Flutter project directory (the one with the
ftk.yaml). One file, end-to-end: pip install + PATH + project register +
OS service install + auto-start + opens browser.
:: Windows cmd
cd C:\path\to\my-flutter-app
C:\path\to\flutter-toolkit\scripts\install.bat# Windows PowerShell
cd C:\path\to\my-flutter-app
powershell -ExecutionPolicy Bypass -File C:\path\to\flutter-toolkit\scripts\install.ps1# macOS / Linux
cd /path/to/my-flutter-app
bash /path/to/flutter-toolkit/scripts/install.shThe installer registers a logon-trigger service (Windows scheduled task / macOS LaunchAgent / Linux systemd-user) so the web UI is up at every login without touching a terminal.
If you only want the toolkit without autostart, run the installer from any
directory that has no ftk.yaml - it stops cleanly after pip install.
Each project has an ftk.yaml at its root. Every section is optional. See
examples/ftk.minimal.yaml and examples/ftk.full.yaml - the full file
documents every section inline.
Omitting sections hides UI affordances:
- no
flavors:→ every flavor picker disappears - no
integrations.deploy→ Deploy tab hidden - no
integrations.sonar→ Sonar tab hidden - no
integrations.backup→ Backup tab hidden
ftk projects add /path/to/app1 --id app1
ftk projects add /path/to/app2 --id app2
ftk projects list
ftk projects remove myapp
ftk --project app2 build --webWhen ≥2 projects are registered, the web UI shows a project-switcher dropdown in the header.
Everything automated lives in scripts/. Three lifecycles, one file each:
install.*- install package + (when run from a project) install OS service + start it + open browser.reset.*- restart the OS service in place.uninstall.*- remove OS service + kill listener + pip-uninstall + clean PATH + optionally wipe~/.ftk.
See INSTALL.md for the full install / config / uninstall walkthrough.
MIT - see LICENSE.