Skip to content

TRAMES 1.1.0 — avoidance on by default

Choose a tag to compare

@KaraZajac KaraZajac released this 28 Jul 15:54

Navigation that routes around automated licence-plate readers — now with zero
setup and its camera layer on infrastructure we control.

What's new

ALPR avoidance is on by default. First launch seeds the routing engine and
points the driving profile at it: install, type a destination, and the route
already avoids camera fields of view at STRONG strength. No engine to create,
no URL to paste, no settings to find. The berth selector still adjusts strength
per-profile, and self-hosters can still point the engine anywhere. Seeding runs
exactly once — turning avoidance off or deleting the engine sticks, and
upgraders who configured an engine by hand keep it, custom berth and all.

The camera map layer no longer depends on public Overpass. On 2026-07-28
both public Overpass instances spent the day answering 504 to the ALPR query
while trivial queries worked — and the map went silently dark. Cameras are now
served from the TRAMES server itself (/cameras on the routing host), from the
same snapshot the routing graph's cones were built from: the map shows exactly
the cameras the router is avoiding, not a fresher OSM state the graph has never
seen. The public Overpass instances remain in the client as fallbacks, so the
layer still works against a self-hosted router with no camera endpoint.

Server-side, server/cameras/ is new: a stdlib Python bbox service speaking
enough of Overpass's protocol that the client cannot tell the difference,
answering the continental snapshot (120,838 cameras) in ~0.6 s through the
public endpoint, systemd-hardened and blast-radius-capped like the routing
unit.

Install

TRAMES-1.1.0-arm64-v8a.apk — 210 MB, Android 7.0+, arm64-v8a only

Verify before installing:

sha256  d3f2dcdaa8053058618dab828d9da8470cafc0b35537042115b2d1a1402e4dcd

Package org.soulstone.trames — installs alongside OsmAnd rather than
replacing it.

⚠️ Read this before you trust the build

This APK is signed with the public Android debug key (CN=Android Debug,
the well-known keystores/debug.keystore, password android).

That key is not secret. Anyone can build a modified APK signed with the
identical key, and Android will accept it as an update to this app. The
signature proves nothing about who built it.

For a tool whose users are specifically trying to avoid being tracked, that is
a real weakness and not a formality. Until a proper release key exists:

  • Verify the SHA-256 above against a build you make yourself, or
  • Build from source: ./setup-resources.sh && cd client && ./trames-build.sh

Camera and map data © OpenStreetMap contributors (ODbL), largely mapped by the
DeFlock community.