Intro / The setup

Four nights in Warsaw turned out to be a real delight. My trips to new places usually look the same: around 12 hours a day of walking between museums and points of interest, evenings spent somewhere quiet with a book. This one was no different — except that this time, I wasn’t the one doing the planning.

My travel planner did the hard work. And it got smarter every day.

The ingredients were simple: an AI agent running at home, a small home server, and one app I installed mid-trip on the first evening. Here’s how it came together.

The Palace of Culture and Science against Warsaw's modern skyline

graph LR
    A[Claude plans route] --> B[We wander Warsaw]
    B --> C[Dawarich records reality]
    C --> A

The remote Claude rig

For the trip itself I packed only an iPad with a keyboard folio — for quiet evenings, note-taking, and the occasional quick coding session. The real machine stayed at home: my laptop, intentionally left awake with Claude Code (Anthropic’s AI agent that runs in a terminal) running and remote access enabled.

From past trips I knew these remote connections sometimes die — usually when the laptop sleeps and wakes. So this time I gave Claude one standing instruction: monitor your own connections, and repair them if anything breaks. My AI’s first job was keeping itself alive while I was away.

The last ingredient is Tailscale, an application that connects all my devices — laptop, phone, iPad, and my shoebox-sized home server — into one private network reachable from anywhere in the world. With that in place, a single Claude session can manage everything. (The home server deserves its own post — coming soon.)

graph TD
    subgraph Warsaw
        P[📱 Phone / iPad]
    end
    subgraph Home
        L[💻 Laptop<br>Claude Code, always awake]
        N[🗄️ NAS<br>shoebox-sized server]
    end
    P <-->|Tailscale private network| L
    P <-->|Tailscale private network| N
    L <-->|manages & reads| N

Evening one — deploying Dawarich mid-trip

The walk from the station to the apartment, luggage and all, already took us past a few of the smaller sights — out of the dozens we’d pinned on a shared Google Map before the trip. While unpacking that evening, I remembered Dawarich: a self-hosted location tracker — think Google Timeline, but the history lives on my own server. As a self-hosting enthusiast, I couldn’t resist the opportunity.

Managing a home server by hand from an iPad isn’t my idea of a holiday evening, so instead I had a quick planning session with Claude about what the app needed, and let it do the installing. Ten minutes later, several hundred kilometers away, a new service was running on my NAS and waiting for its first connection.

That first connection did need one manual fix — enabling HTTPS on my Tailscale network, something I’d never needed before. And just like that, my phone was reporting its location to my own little tracker back home.

Day 2 — Claude as route planner (blind)

The planning

I shared a public link to our Google Map with Claude and asked it to build a route for the day from our pins. It came back with more than a route: estimated time at each location, plus breakfast, lunch, and dinner suggestions with time slots. I also gave it freedom to research beyond our list — it filled the longer walking stretches with extra things to see and picked the more scenic streets to get there. Honestly, better than what I would have planned by hand.

Warsaw's Old Town Market Square, ringed by pastel townhouses and café umbrellas

The discovery

This was the first full day with Dawarich, so I kept glancing at my phone — partly to watch our trail draw itself across Warsaw, partly to make sure the app hadn’t been put to sleep and stopped tracking. It held up well. Wherever we lingered, it marked the place as a stop on the map — a nice optional feature — and it tracked us seamlessly across foot, metro, bus, and scooter.

The surprise came in the evening: Dawarich showed far more distance than my smartwatch — it looked like nearly double, though comparing them fairly is tricky, since Dawarich happily counts every metro and scooter ride as travel. Even accounting for that, the gap felt too large. To be fair, this isn’t quite the app’s fault: a passive tracker that samples your position periodically isn’t a precision fitness device. Still, I talked the gap through with Claude, and we adjusted a few settings to reduce GPS jumping and other artifacts inflating the numbers.

At this point, Dawarich was still just a toy — a map that drew my day for me. The next morning, it became something more.

Day 3+ — closing the loop

Overnight, Claude had gained a new tool. With a full day of Dawarich data on the server, it no longer had to plan blind: it could compare what was planned against where we actually went. And those two never match — we skipped some suggested places, and wandered into others that were never on any map.

So from day three on, morning planning worked differently. Claude cross-checked the heatmap against our Google Map pins: visited spots dropped off the list, skipped ones went back into the pool, and the route bent around where we’d really been. Plan, wander, record, re-plan — every day started from what actually happened, not what was supposed to happen.

We also kept one lever firmly in our own hands: the anchor of each day. We’d tell Claude that today was for the Royal Castle and tomorrow for Kolejkowo — the miniature Warsaw — and it would build the day around that anchor, filling the hours with nearby points from our list.

It wasn’t hands-free. Claude’s main vice was following our pins too literally — happily routing us across town to a pinned restaurant when we were hungry now. But I only had to say it once: don’t chase the pin, find a similar place along today’s route. Since the whole trip ran in a single Claude session, the instruction stuck — every later plan already respected it.

Each day’s route was published as a Claude artifact — a simple page on my phone. At the top, the preliminary route for the day, which made it easy to spot backtracking or a point that didn’t fit and ask for a replan. Below it, a table of every stop with a Google Maps link, so navigation from wherever we stood was one tap away.

A published route artifact: the day's route drawn over a schematic map of Warsaw, with a table of every stop, its time slot, and a Google Maps link

By the end, evenings had settled into a routine: a ten-minute session — build tomorrow’s route, quick review for sidetracks, done.

graph LR
    A[🤖 Claude plans<br>the day's route] --> B[🚶 We wander<br>Warsaw]
    B --> C[🗺️ Dawarich records<br>where we actually went]
    C --> D[🤖 Claude compares<br>plan vs. reality]
    D -->|skipped spots return,<br>visited ones drop off| A

Dawarich heatmap of four days walking around Warsaw

Verdict + what’s next

Would I travel this way again? Without hesitation — especially somewhere dense with small points of interest, where the freedom to wander matters. Dawarich turned out to be quietly motivating too: once your days draw themselves on a map, you start choosing different streets just to see new lines appear.

I’m keeping the tracker running in everyday life — partly to spot my own patterns, partly to tune the settings before the next bigger trip. Battery-wise, running it 24/7 cost me nothing I could notice.

The quiet superpower of the whole setup was composability. Open-source, self-hosted apps expose their data and their APIs — which is why an AI agent could wire a location tracker, a map of pins, and a home server into one custom workflow in a single evening. Try building this same loop out of closed platforms and locked-down apps, and it becomes exponentially harder — if it’s possible at all.

And a closing aside: by the end of the trip Dawarich updated to 2.5.128, with big UI improvements. The project is clearly alive — which, for something you’re trusting with your location history, is exactly what you want.