ORBI guide
Everything you need to plan trips with ORBI, and to run your own copy.
Getting started
What ORBI is
ORBI is a map-first trip planner. You plan each day as a timeline of places and activities, see the real routes between them on a map, and get arrival times that add up. An AI assistant can draft days, edit them, or turn an itinerary you already have into a trip.
It is free and open source (AGPL-3.0). Use the hosted version, or run your own copy: see Self-hosting.
Signing in
Click Log in and choose Continue with Google. ORBI only receives your name, email and profile photo. Every account has its own private trips; nobody else can see or open them.
Your account menu (your photo, top right) has Settings, this Help page, the app version and Log out.
Your first trip
- Open My Trips and click New Trip.
- Give it a name and a region (for example "Cebu, Philippines").
- Pick start and end dates, or leave them empty and set the number of days. Add a budget if you want ORBI to track costs.
- Click Create trip. The trip opens with its days ready to fill.
Planning
My Trips
Every trip is a card with a countdown, dates, days, places and budget. Use the search box and the Upcoming / Past / All filter to find one. The buttons on each card edit, duplicate (a full copy with every stop) or delete the trip.
On the right, Timezones shows live clocks. Click + to add up to five cities and hover a clock to remove it. Upcoming trips lists your next trips by date.
Days and the timeline
Inside a trip, pick a day from the day menu. The day header shows the distance, number of places, end time and cost. The sliders button opens the day's title, start time and travel mode (walking or driving).
The day is a timeline: numbered dots are places, icons are activities. The time on each card is when you arrive. Between places you see the travel distance and time. Drag a dot on the line to reorder; times and routes update straight away.
Adding places
Use Add a place on the right of the trip. Search by name (results near the day you are viewing come first), then choose Add to Day N or Save as idea. Ideas wait in the trip until you schedule them on a day.
Click a place card to highlight it on the map. The pencil edits its name, visit length, fixed arrival time, category, cost, opening hours and notes, and lets you move it to another day. The arrow button opens the place in Google Maps for directions.
Activities
Activities are moments without a place on the map: wake up, breakfast, lunch, dinner, rest, free time, check in or out, transfers. Click Add activity under the timeline, pick a type (the duration fills in for you) and optionally a label like "at the hotel". Activities take time in the schedule but add no travel.
The map
The map shows the selected day's stops and routes. Use Satellite on the map to switch to aerial imagery and back. In Settings → Map you can make the map follow the app theme, or always use light, dark or satellite.
Budget and editing a trip
The trip header shows the estimated total against your budget, and turns red when you go over. The pencil next to the trip name opens Edit trip: name, region, dates, budget, day start and end, pace, daily travel limit, interests and planning notes. Interests and notes also guide the AI.
AI assistant
Connecting your AI key
ORBI uses your own AI provider, so you control the cost. Open Settings → Integrations, choose a provider (OpenRouter, OpenAI, Anthropic or Google), paste your API key and pick a model. The list only shows free and low-cost models.
Drafting and editing days
In a trip, the AI assistant box takes a request like "historic sights, local food and a beach day within ₱10,000". Draft days plans full days in time order: wake up, breakfast, sights, lunch, dinner. Suggest edits changes what you already have, for example "make day 2 less tiring".
You review every suggestion before it is saved: untick anything you don't want, then apply. Every place is checked against map data; places that can't be found are marked and skipped.
The chat
The round button at the bottom right opens the ORBI on every page. Ask travel questions, or:
- Paste an itinerary ("Day 1: …, Day 2: …") and ORBI creates the whole trip with every stop on the map.
- Edit a trip by name ("add a seafood lunch to my Cebu weekend"), or say "this trip" while one is open. Chat edits apply straight away.
Minimize the chat with –: a reply keeps running and a small pill shows its progress; a dot on the button means a reply is waiting. The conversation is saved in your browser until you clear it. The assistant only discusses travel.
More
Settings
- General: light, dark or system theme; 24-hour or 12-hour times; kilometres or miles.
- Map: map style.
- Integrations: your AI provider and key.
- Account: who you are signed in as, and log out.
Using ORBI on your phone
The web app works on phones: the map sits on top and the plan below. On iPhone, open ORBI in Safari, tap Share → Add to Home Screen. An Android app is part of the project (see Android app).
Privacy and your data
Trips are tied to your Google account and stored in the ORBI database. Your AI key, chat history and display settings stay in your browser. Place search and routing use OpenStreetMap services; map tiles come from OpenFreeMap and satellite imagery from Esri.
Self-hosting
Run it on your computer
You need Node.js 26 and pnpm 11. Then:
git clone https://github.com/kaizenics/orbi.git orbi
cd orbi
pnpm install
pnpm devOpen http://localhost:3000. The API runs inside the web app and keeps data in apps/web/data/orbi.db, created automatically. Sign-in is off on your computer until you add Google credentials. Optional demo trip:
ORBI_DATABASE_URL=file:../web/data/orbi.db pnpm --filter @orbi/server db:seedDeploy for free (Vercel + Turso)
- Database: create a free database at turso.tech, copy its URL and a token, and create the tables:
ORBI_DATABASE_URL=libsql://<db>.turso.io ORBI_DATABASE_AUTH_TOKEN=<token> \ pnpm --filter @orbi/db db:migrate - Google sign-in: in Google Cloud Console create an OAuth client (Web application) and add
https://<your-domain>/auth/google/callbackas an authorized redirect URI. Publish the consent screen so any Google account can sign in. - Vercel: import the repository, choose the
webapp (root directoryapps/web), add the variables below and deploy.
| Variable | Value |
|---|---|
| ORBI_DATABASE_URL | Your Turso URL |
| ORBI_DATABASE_AUTH_TOKEN | Your Turso token |
| GOOGLE_CLIENT_ID | From Google Cloud |
| GOOGLE_CLIENT_SECRET | From Google Cloud |
| GEO_CONTACT_EMAIL | Your email (asked for by the free place-search service) |
| ORBI_API_TOKEN | Optional: a random secret, only for the Android app |
db:migrate command again before deploying.Your own server (Docker)
To run the API on a server or VM instead, use the included Docker setup (Caddy provides HTTPS):
cp infra/.env.example infra/.env # set ORBI_DOMAIN, ORBI_API_TOKEN
docker compose -f infra/docker-compose.yml up -d --buildThen set ORBI_API_URL=https://<server-domain> and the same ORBI_API_TOKEN in the web app so it forwards API calls to your server. Maps, search and routing can also point at your own OpenFreeMap, Nominatim/Photon and OSRM instances.
Android app
The Android app needs Android Studio and a development build. Point it at your server in apps/mobile/.env, then build:
EXPO_PUBLIC_API_URL=https://<your-domain>/api
EXPO_PUBLIC_API_TOKEN=<ORBI_API_TOKEN>
pnpm --filter mobile androidTroubleshooting
- "Continue with Google" shows a redirect error
- Add your site's /auth/google/callback address to the OAuth client's authorized redirect URIs.
- Only some Google accounts can sign in
- Your OAuth consent screen is in testing mode. Publish it in Google Cloud Console.
- Trips fail to load after an update
- The database needs the latest migrations. Run the db:migrate command against your database.
- The AI says the key was rejected
- Check the key in Settings → Integrations, and that the chosen model is available to it.
- A place can't be found
- Try the official name plus the city, or add it with the map search and keep the AI suggestion's details.