Major version upgrades to Tasking Manager may involve changes to the application stack, database schema, or both. Migrations are designed and tested by the core team but are not considered production-ready out of the box — environment-specific data volumes and configurations can introduce unexpected issues.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/hotosm/tasking-manager/llms.txt
Use this file to discover all available pages before exploring further.
- v4 → v5
- v3 → v4
- v2 → v3
Migrate from Version 4 to Version 5
Version 5 is a major stack upgrade. The v4 backend was a synchronous application built with Flask and thepsycopg2 database driver. Version 5 replaces this with an asynchronous FastAPI backend using asyncpg. No specific database schema changes are required for this migration, but the application server and startup command have changed.Back up the database
Although no schema changes are required, a backup before any major transition is strongly recommended:For AWS RDS deployments, you can also take a manual snapshot from the RDS console before proceeding.
Pull the latest code
Use the
main branch for the most stable release, or develop for the latest development build:Rebuild and restart services
Rebuild the containers to pick up the new Dockerfile and Python dependencies:The
The
--env-file tasking-manager.env flag is important. Docker Compose uses .env as its default environment file, and the non-standard filename tasking-manager.env will not be loaded automatically. Omitting the flag can cause a database health-check warning about the PostgreSQL user not existing.tm-migration container runs alembic upgrade head automatically before the backend starts. Watch its logs to confirm migrations complete cleanly:Switch from WSGI to ASGI
Version 5 is incompatible with WSGI servers such as gunicorn’s default worker class. The Dockerfile has been updated to use The
uvicorn as the ASGI server. If you have a custom startup command or init script referencing gunicorn, replace it with:TARGET_TAG build argument controls the Docker build target. Use debug for development and prod for production deployments: