travel-animator
Render Travel Animator route animations to MP4 on a computer instead of a phone — the route drawing itself as it is travelled, a 3D vehicle following it, map labels, country flags, and the distance badge and watermark the app draws on top.
Two ways to use it:
- MCP server — an AI assistant plans the route, chooses how the animation looks and renders it for you. The only path that goes from nothing to a finished video.
- Command line —
render-bundleturns an already-prepared render bundle into an MP4, for pipelines that receive bundles from elsewhere.
It is a companion to Lascade's Travel Animator service, so it needs an account — and
rendering needs a premium one. This is not open-source software; see
Licence. The Python import path is tada_render.
Install
pip install travel-animator # command line
pip install "travel-animator[mcp]" # command line + MCP server
Python 3.12 or newer. Rendering also needs a platform wheel — see Rendering.
Use it from an AI assistant
Log in once from a terminal — the server cannot prompt you for credentials itself.
uvx travel-animator login
Register the server with your client. For Claude Code:
claude mcp add travel-animator -- uvx --from "travel-animator[mcp]@latest" travel-animator mcp
For Claude Desktop, or any other client that takes a JSON config:
{
"mcpServers": {
"travel-animator": {
"command": "uvx",
"args": ["--from", "travel-animator[mcp]@latest", "travel-animator", "mcp"]
}
}
}
@latest picks up the newest release on every launch. Drop it, or use a
pip-installed travel-animator as the command, to stay on a fixed version.
Then describe the animation you want — the route, the vehicle, the map style, the resolution. The assistant builds the project, reports progress while it renders, and hands back the finished MP4.
If the server fails to start from a desktop app, give the command's absolute path
instead: apps launched from a GUI do not inherit your shell's PATH, and which uvx
prints it.
Commands
travel-animator login # log in: magic link, or a bearer token for CI
travel-animator logout # remove credentials stored on this machine
travel-animator analytics # show, grant or revoke analytics consent
travel-animator render-bundle # render a prepared bundle to MP4
travel-animator mcp # run the MCP server (needs the mcp extra)
login uses the same account as the Travel Animator mobile app. Logging in is not
the same as being able to render: a free account can log in, browse the catalogues
and author a project, but only a premium account can render one.
Render bundles come from the Travel Animator service — this package renders them, it
does not create them. travel-animator render-bundle --help lists every flag.
When a newer release exists, a command upgrades itself to it after finishing and says
so on stderr; the new version applies to the next command. TADA_AUTO_UPGRADE=0 keeps
the notice without installing, TADA_UPDATE_CHECK=0 turns off both.
Rendering
Everything other than rendering — logging in, running the MCP server, authoring a project through it — needs only Python 3.12+ and this package.
Rendering needs a platform wheel. Those are published for Linux on x86-64 and arm64, macOS on Apple silicon, and Windows on x64; any other platform, including Intel macOS, gets a pure Python wheel that cannot render frames.
A platform wheel brings its own Java runtime, so there is nothing to install. It also bundles a graphics driver on macOS and Windows; on Linux it uses the system's own GLES driver, or Mesa for software rendering.
Rendering is not offline: the map's tiles, glyphs and sprites are fetched as frames
are drawn, then cached under ~/.cache/tada/render. Everything else a render needs
comes from the bundle itself.
If a machine cannot render at all, the MCP server can fall back to a server-side render — and it says so up front, before a project is built that the machine cannot finish.
Analytics
Usage analytics are optional, opt-in, and off until you turn them on. Nothing is
collected before that, and nothing at all is collected outside the MCP server. The
first interactive login asks once, and a decline is remembered rather than asked
again.
travel-animator analytics status # what is currently set, and what it covers
travel-animator analytics on # grant consent
travel-animator analytics off # revoke it, effective immediately
Collected: which tools an assistant calls, in what order, how long they take and whether they failed; render settings such as resolution, duration, animation style, map and vehicle; the number of points in a route and the set of countries it crosses.
One free-text exception: when an assistant asks for a tool this server does not have, the description it writes of what it was trying to accomplish is collected with that request (up to 2048 characters). The assistant writes that sentence about your task, so it can quote what you asked for. It is collected because a server cannot otherwise learn which capability it is missing, and it is sent only on that request — never as a reason attached to an ordinary tool call.
Never collected: route coordinates, place labels, route annotations, file paths, your media, the contents of any route you save or load, the names you give projects, and what a tool returned. These are excluded unconditionally, and consent does not unlock them: a route records where somebody has actually been.
Analytics data is processed in the United States by a third-party analytics provider.
Support
Questions, bug reports and feature requests go to connect@travelanimator.com.
Please include the command you ran, the error message it printed, and your operating
system. For an MCP problem, the failing tool's error_code is the most useful single
detail.
More about Travel Animator: https://travelanimator.com.
Licence
This is a limited use licence, not an open-source one. In short: you may install and
run travel-animator unmodified to prepare and render Travel Animator content and to
talk to Lascade's services. You may not redistribute it, modify it, or build a
competing service with it. The full terms ship inside the package at
tada_render/LICENSE.
The bundled fonts, the flag artwork and the libraries inside the renderer are
third-party works under their own licences, which that restriction does not touch.
Their notices and full licence texts are in tada_render/THIRD-PARTY-NOTICES.md.
For redistribution or modification rights, contact Lascade.
Release files for travel-animator 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| travel_animator-1.0.1-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| travel_animator-1.0.1-py3-none-manylinux_2_34_aarch64.whl | Python 3 | none | Linux glibc 2.34+ ARM64 | Details |
| travel_animator-1.0.1-py3-none-manylinux_2_28_x86_64.whl | Python 3 | none | Linux glibc 2.28+ x86-64 | Details |
| travel_animator-1.0.1-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
Total release size: 348.1 MB
Release files / travel_animator-1.0.1-py3-none-win_amd64.whl
| Download URL | travel_animator-1.0.1-py3-none-win_amd64.whl |
|---|---|
| Size | 87.3 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
433e8144a0726a858850a765b8cccb05528128ada9cb77759d51307701e17c77
|
|
BLAKE2b-256 checksum How to use checksums |
c17ca4117f0ddd10235c4b0c7592a496785d063efdea56a8fd9fcae09145063b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / travel_animator-1.0.1-py3-none-manylinux_2_34_aarch64.whl
| Download URL | travel_animator-1.0.1-py3-none-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 87.2 MB |
| Tags | Linux glibc 2.34+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
a1e4b284ffe6b4ff1f27719db060aa9914c102e38af622940e6a7d1cceecc5f6
|
|
BLAKE2b-256 checksum How to use checksums |
9f34cd00bf64dfa492ad4d91028cf6bdf59427d48316a13dc3bf57b88135b62e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / travel_animator-1.0.1-py3-none-manylinux_2_28_x86_64.whl
| Download URL | travel_animator-1.0.1-py3-none-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 88.1 MB |
| Tags | Linux glibc 2.28+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
72449e2bc626680f0b34c770a0cb64c4ce029c2a7d84339d37dddf86d3d6c28d
|
|
BLAKE2b-256 checksum How to use checksums |
a4cfb63a1931235c73c58a24163f0f6ef8a049e0673264ea14fe70e70591065e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / travel_animator-1.0.1-py3-none-macosx_11_0_arm64.whl
| Download URL | travel_animator-1.0.1-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 85.5 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
ae1e124828c03145e104756266ba3bd44952d2ec54cf1a38cfc15be2ee7fa080
|
|
BLAKE2b-256 checksum How to use checksums |
bf84079bf71eecc10244305eae600ee056e58165963599e272d39c4aaeb7e726
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|