Skip to main content

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-bundle turns 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.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for travel-animator 1.0.2
File
travel_animator-1.0.2-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
travel_animator-1.0.2-py3-none-manylinux_2_34_aarch64.whl Python 3 none Linux glibc 2.34+ ARM64 Details
travel_animator-1.0.2-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details
travel_animator-1.0.2-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details

Total release size: 348.2 MB

Release files / travel_animator-1.0.2-py3-none-win_amd64.whl

Download URL travel_animator-1.0.2-py3-none-win_amd64.whl
Size 87.3 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
a0f5bfb02424aa1e4350324ff00230d9dda62a5e3016afd1d1219606b086afdc
BLAKE2b-256 checksum
How to use checksums
98703800c61f9ea86e985566f811ba2abbaaa27ecd5dad96a5a425220702a0f7
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.2-py3-none-manylinux_2_34_aarch64.whl

Download URL travel_animator-1.0.2-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
34c3b32a0c9c0c6d73d2b36c54ad2daa8dd02616b40c9419273eaf67a500fc75
BLAKE2b-256 checksum
How to use checksums
8316190c157b6dc9a6c8d1b531c69176452f42b291121c4ddd2e37b7a8b710a2
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.2-py3-none-manylinux_2_28_x86_64.whl

Download URL travel_animator-1.0.2-py3-none-manylinux_2_28_x86_64.whl
Size 88.2 MB
Tags Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
d21a3b9cb667f30e26f2122f9814831aaf4131404691008b53d2481cdcb6c381
BLAKE2b-256 checksum
How to use checksums
6d73c5c0eb8ba4a21f1109802719708f4b6997226179638ddb1ea80d43b541d6
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.2-py3-none-macosx_11_0_arm64.whl

Download URL travel_animator-1.0.2-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
be5f806c4a7e7e9a92af42f1f5fc985332266e67f85787a7f18398300e07cd8f
BLAKE2b-256 checksum
How to use checksums
cc5a586dd9fb3cdf84c8f9633099308cae7bda1daa8648672e1e324037fb281b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page