You’re planning a two-week trip across Iceland with three friends. The spreadsheet has 14 tabs, the Google Doc has 8 contributors, half the budget is in a Splitwise group, the packing list is in someone’s Notes app, and nobody can agree on where you stayed in Reykjavik last time. TREK is the self-hosted answer to all of that — one app where the four of you edit the trip in real time, the map shows every reservation, budgets split per-person and per-currency, and packing lists are templated. The unusual twist for 2026: TREK ships an OAuth-secured MCP server, so Claude or any MCP-aware AI can plan trips on your behalf with explicitly-granted scopes.

What is TREK?

TREK is a self-hostable travel planner with real-time collaboration. WebSocket sync means every change across multiple users appears instantly; addons cover budgets, packing lists, document attachments, group chat, vacation calendars, visited-country atlases, and a magazine-style travel journal. Built on Node.js 22 + React 18, single Docker container, AGPL-licensed.

“A self-hosted, real-time collaborative travel planner — with maps, budgets, packing lists, a journal, and AI built in.”

TREK on GitHub TREK Live Demo TREK Discord

What makes it different

  • 🔄 Real-time WebSocket sync — multi-user edits appear instantly across all connected devices
  • 🗺️ 3D maps — Leaflet (default) or Mapbox GL with 3D buildings, terrain, photo markers, clustering, route visualization
  • 💰 Multi-currency budgets — per-person / per-day splits, category pie charts, multi-currency awareness
  • 🧳 Packing lists — categories, templates, user assignment, progress tracking, optional bag weight distribution
  • 📓 Travel journal — magazine-style entries, photos from Immich or Synology, maps, moods (Journey addon)
  • 🌍 Atlas addon — world map of visited countries, bucket list, travel stats, streak tracking
  • 🤖 OAuth 2.1 MCP server — 150+ tools, 30 resources, 27 scopes across 13 permission groups; addon-aware
  • 📱 PWA — installable on iOS / Android, offline support via Workbox-managed Service Worker
  • 🆔 OIDC SSO — Google, Apple, Authentik, Keycloak, generic; TOTP 2FA built in
  • 🌍 15 languages — including Arabic with RTL support
  • 🛡️ Hardened composeread_only: true, cap_drop: ALL, no-new-privileges, tmpfs /tmp
  • ⚖️ AGPL-3.0 — fully open source

The MCP angle (the genuinely novel feature)

The MCP addon is what sets TREK apart from every other self-hosted travel planner. When enabled, TREK exposes an OAuth 2.1-authenticated MCP server with:

  • 150+ tools — create trips, plan days, build packing lists, manage budgets, mark countries visited
  • 30 resources — readable surfaces (trip details, reservations, budget summaries)
  • 27 OAuth scopes across 13 permission groups — fine-grained “Claude can read trips but not delete them”
  • Pre-built promptstrip-summary, packing-list, budget-overview
  • Addon-aware — only exposes tools for addons that are actually enabled

This is the connective tissue between the self-hosting world and the AI agent world we’ve covered elsewhere on this site. Hook up Claude Desktop or any MCP-aware AI assistant (OpenClaw , Hermes , custom agents) to your TREK instance, grant the scopes you want, and the AI can plan a trip end-to-end on your behalf. Granular scopes mean you don’t have to trust the AI with everything to give it some access.

The natural pairings on this site

If you have… TREK pairs because…
Dawarich Dawarich tracks where you’ve been; TREK plans where you’re going. Together: full past + future travel coverage
Immich TREK’s Journey addon embeds Immich photos directly into trip entries
Nextcloud Document attachments work naturally with Nextcloud-served storage
An MCP-aware AI assistant TREK’s MCP server lets the AI plan trips, manage packing lists, update budgets via OAuth-granted scopes

Self-Hosting TREK with Docker

30-second quick start

ENCRYPTION_KEY=$(openssl rand -hex 32) docker run -d -p 3000:3000 \
  -e ENCRYPTION_KEY=$ENCRYPTION_KEY \
  -v ./data:/app/data -v ./uploads:/app/uploads \
  mauriceboe/trek

Open http://localhost:3000. The admin account is auto-seeded — credentials are printed to docker logs trek unless you pass ADMIN_EMAIL / ADMIN_PASSWORD env vars.

Production Docker Compose

The compose below is adapted from the upstream README. The security flags are load-bearing — don’t strip them when copy-pasting:

services:
  app:
    image: mauriceboe/trek:latest
    container_name: trek
    read_only: true
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETUID
      - SETGID
    tmpfs:
      - /tmp:noexec,nosuid,size=64m
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - PORT=3000
      - ENCRYPTION_KEY=${ENCRYPTION_KEY:-}   # openssl rand -hex 32
      - TZ=${TZ:-UTC}
      - APP_URL=${APP_URL:-}                  # required for OIDC + email links
      # - FORCE_HTTPS=true                    # behind a TLS-terminating proxy
      # - TRUST_PROXY=1
      # - OIDC_ISSUER=https://auth.example.com
      # - OIDC_CLIENT_ID=trek
      # - OIDC_CLIENT_SECRET=supersecret
    volumes:
      - ./data:/app/data
      - ./uploads:/app/uploads
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://localhost:3000/api/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 15s

The security defaults shipped here are unusually strong for a self-hosted project:

  • read_only: true — the container filesystem is immutable; writes only through declared volumes
  • cap_drop: ALL + minimal cap_add — drops every Linux capability except the three needed for user/group ID handling
  • no-new-privileges:true — no escalation via setuid binaries
  • tmpfs /tmp with noexec,nosuid/tmp is in-memory and non-executable

Most projects ship docker-compose.yml files with none of these. Keep them.

Updating

docker compose pull && docker compose up -d

Data in data/ and uploads/ is preserved across updates. The maintainer’s auto-backup system creates scheduled snapshots regardless — visible in the admin panel.

Encryption key rotation

If you’re upgrading from an older version that derived encryption from JWT_SECRET:

docker exec -it trek node --import tsx scripts/migrate-encryption.ts

TREK vs the Alternatives

TREK Wanderlog Tripit Google Maps Saved
Self-hosted Yes No No No
Real-time multi-user collaboration Yes Partial No No
Budget with multi-currency splits Yes Partial No No
Packing lists Yes Yes No No
Travel journal Yes (Journey addon) Partial No No
Visited-countries atlas Yes (Atlas addon) No No No
MCP server for AI assistants Yes (OAuth 2.1) No No No
3D maps Yes (Mapbox GL) Yes No Limited
Self-hostable AGPL-3.0 SaaS only SaaS only SaaS only
Multi-language 15 incl. Arabic RTL Few Few Many

The honest read:

  • Pick TREK if you want self-hosted collaboration + the option to wire AI assistants in via MCP
  • Pick Wanderlog if you want the most polished commercial trip planner and don’t mind SaaS lock-in
  • Pick Tripit if you just need an itinerary inbox and don’t care about collaboration or planning
  • Pick Google Maps Saved if your “planning” is dropping pins on a map and zero collaboration

TREK occupies a niche no SaaS competitor does: a full-featured planner where the data is yours, the AI integration is open, and the collaboration model doesn’t require a paid tier per user.

Conclusion

TREK is the most feature-complete self-hosted travel planner currently shipping, and the MCP server addon is genuinely forward-looking — it puts TREK in the small group of self-hosted apps that ship a first-class AI integration via the open MCP standard rather than just calling an OpenAI API. The hardened Docker defaults are also a refreshing change from projects that publish docker-compose.yml with no security flags.

For groups of travelers who want their plans on their own server, with Dawarich-style historical context, Immich photos in their journal, and an AI assistant able to help plan via OAuth-scoped MCP — TREK is the right shape of tool today.

Related tools worth knowing:

  • Dawarich — where you’ve been (passive GPS); pairs naturally with TREK (where you’re going)
  • Immich — TREK’s Journey addon embeds Immich photos in travel journal entries
  • OpenClaw / Hermes Agent — MCP-aware AI assistants that can plan trips via TREK’s MCP server
  • Wanderlog — closest commercial competitor; SaaS, not self-hostable