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. The assistant can do it in the conversation: it asks for the email address on your Travel Animator account, calls login, and asks you to read back the 6-digit code the email contains (or paste the whole link) for complete_login. Or do the same from a terminal:

uvx travel-animator login

Register the server with your client. For Claude Code:

claude mcp add travel-animator -e TADA_SOURCE=pypi -- 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"],
      "env": { "TADA_SOURCE": "pypi" }
    }
  }
}

@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.

TADA_SOURCE records which set of instructions this config came from — here, this page — so we can tell which of them are worth maintaining. It is optional and safe to delete; it carries nothing about you or your routes.

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.

Credits

Each rendered video costs one credit, whatever its length or resolution. The charge is made by the render service when it prepares the video, so nothing is spent by a project you build and never render, and re-rendering the same video within the hour is free.

get_credit_balance says how many are left, list_credit_packages what is on sale, and buy_credits returns a Stripe link to open in a browser. Credits are added once payment completes, so check the balance again afterwards rather than assuming. A render with an empty wallet is refused before anything starts.

A credit is consumed once the render service has prepared the video, even if the render then fails on your machine — a known limitation for now. The server retries a transient renderer failure once on its own before reporting it, and refuses configurations it can tell will not render (a duration below the route's minimum, an invalid setting) before anything is charged.

Analytics

Usage analytics are optional and on by default, and nothing at all is collected outside the MCP server. Turning them off takes one command, takes effect immediately — including in a server that is already running — and is remembered permanently. The first interactive login says so on the terminal; it does not ask, because there is nothing to answer.

travel-animator analytics status   # what is currently set, and what it covers
travel-animator analytics off      # turn it off, effective immediately and for good
travel-animator analytics on       # turn it back on

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. Like everything else here, it is collected by default; analytics off stops it along with the rest.

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, the output of travel-animator --version, and your operating system. For an MCP problem, the failing tool's error_code and the full error_message of await_render (which carries the renderer's own diagnostic after details:) are the most useful details.

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.3.0

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.3.0
File
travel_animator-1.3.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
travel_animator-1.3.0-py3-none-manylinux_2_34_aarch64.whl Python 3 none Linux glibc 2.34+ ARM64 Details
travel_animator-1.3.0-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details
travel_animator-1.3.0-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details

Total release size: 289.5 MB

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

Download URL travel_animator-1.3.0-py3-none-win_amd64.whl
Size 73.6 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
ccecaf3f3693a21df8c32c0285cd3e9182b54f643142f3c353527f0b06aad070
BLAKE2b-256 checksum
How to use checksums
8ff59d4035e485a61e65d5a9d20fef3dbe9736e259e04ec8ab3a7fafd0a146a4
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.3.0-py3-none-manylinux_2_34_aarch64.whl

Download URL travel_animator-1.3.0-py3-none-manylinux_2_34_aarch64.whl
Size 72.1 MB
Tags Linux glibc 2.34+ ARM64 Python 3
SHA-256 checksum
How to use checksums
bba25e7ecd3b5bdeedb561376fea8a10fcbadd28b28215db86586ce66103c80e
BLAKE2b-256 checksum
How to use checksums
c138fc0cb4a99f4eafa056073d823d76e51fde18959fa2dec78d091540b3fd6d
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.3.0-py3-none-manylinux_2_28_x86_64.whl

Download URL travel_animator-1.3.0-py3-none-manylinux_2_28_x86_64.whl
Size 73.0 MB
Tags Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
634ecc0b3d49e5b1657cba574ca25863859008552300a9d630802bde6b906e55
BLAKE2b-256 checksum
How to use checksums
bca0db6b3517a9584621f9f46c5a360781a54390e97b8b44678a78bb5a95f468
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.3.0-py3-none-macosx_11_0_arm64.whl

Download URL travel_animator-1.3.0-py3-none-macosx_11_0_arm64.whl
Size 70.8 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
458c8fd43c0fa14971364d602dd2b09382e216fbbc5aaa2c5eaaa018fcaaea82
BLAKE2b-256 checksum
How to use checksums
f8a8825054d50ca817e2781f8854ff7a75a58d23b7a2fd8e7133e378215a8dd8
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