travel-agent

agent
Security Audit
Fail
Health Pass
  • License — License: Apache-2.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 14 GitHub stars
Code Fail
  • process.env — Environment variable access in .github/workflows/desktop-build.yml
  • fs module — File system access in .github/workflows/desktop-build.yml
  • exec() — Shell command execution in .pi/extensions/subagent-review/index.ts
  • rm -rf — Recursive force deletion command in .pi/extensions/subagent-review/index.ts
  • fs.rmSync — Destructive file system operation in .pi/extensions/subagent-review/index.ts
  • process.env — Environment variable access in .pi/extensions/subagent-review/index.ts
  • rm -rf — Recursive force deletion command in packages/browser-cli/package.json
  • fs.rmSync — Destructive file system operation in packages/browser-cli/scripts/build-client-bundles.ts
  • process.env — Environment variable access in packages/browser-cli/scripts/build-client-bundles.ts
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

An open-source travel agent that works on real websites: plan trips, book in a browser beside the chat, stop at the payment page. Desktop app for macOS, Windows and Linux.

README.md

Travel Agent — Route Penguin logo

Travel Agent

An open-source travel agent that works on real websites.

See the app · Download · Run from source · Chrome extension · Documentation · Contribute

Latest release   License: Apache 2.0   English · 简体中文

A browser beside your conversation

Travel Agent is a desktop travel assistant. Describe what you need, then follow the agent as
it navigates travel websites, reads pages and fills forms. The conversation and the browser are
part of the same workflow.

Travel Agent desktop showing a Beijing-to-Shanghai flight booking request beside Ctrip flight search results in the in-app browser.

Booking flights on Ctrip with Travel Agent: describe your trip in one message and follow the agent as it searches for flights in the browser beside your conversation.

“I'm travelling from Beijing to Shanghai for work tomorrow. Help me book the cheapest flight on Ctrip, without extra service packages.”

Two ways to browse

In-app browser · default Your Google Chrome · optional
Where the page opens Beside the conversation in the desktop app In your own Chrome window
Browser profile The app's own browser profile Your Chrome profile, including its website sign-ins
Setup Included with the desktop app Load the Chrome extension, then choose it in the app
Best fit Work and watch the page in one window Work with websites you already use in Chrome

Both modes start in Travel Agent Desktop. The extension connects the agent to your Chrome;
keep the desktop app running. Choose a browser for each conversation before starting a task.

From a question to a trip

New trip opens a conversation without an upfront form. Explore an idea, ask the agent to work
on a webpage, then choose Add to trip when you want to organize it. Discuss accommodation,
transport and daily plans in separate chats within the same trip: destination, dates, travellers,
budget and shared notes carry across them, while conversation histories stay separate.
Useful conversations can also be kept in Saved.

Task demos

01 · From Xiaohongshu tips to an Amap itinerary

Watch the demo: turn Xiaohongshu travel tips into a two-day Beijing itinerary and an Amap route.

Read travel posts, organize the stops into a two-day plan, then open the generated map link.

02 · Find a hotel on Ctrip, then stop at payment

Watch the demo: filter Ctrip hotels by budget, rating and cancellation policy, choose a room and continue to the payment page.

Compare hotels and room options, confirm a choice, then review the booking form. The user makes
the final payment.

Download

Desktop app · macOS, Windows and Linux · Bring your own model API key

The links below always point at the latest release;
SHA256SUMS there covers every installer.

Platform Download
macOS (Apple Silicon) travel-agent-darwin-arm64.dmg
macOS (Intel) travel-agent-darwin-x64.dmg
Windows (x64) travel-agent-win32-x64.exe
Linux (AppImage) travel-agent-linux-x86_64.AppImage
Linux (Debian / Ubuntu) travel-agent-linux-amd64.deb

The builds are not code-signed yet, so both desktop platforms warn on first launch:

  • macOS refuses to open the app at first ("Apple could not verify…"). Open System Settings →
    Privacy & Security
    , find the message about Travel Agent and choose Open Anyway — or run
    xattr -cr "/Applications/Travel Agent.app" once in Terminal.
  • Windows shows a SmartScreen warning. Choose More info → Run anyway.
  • Linux needs no bypass: chmod +x the AppImage, or
    sudo apt install ./travel-agent-linux-amd64.deb.

The app window signs in automatically. If you ever meet the sign-in page, every new installation
starts as traveler / traveler-2026 — change the password after your first sign-in. Then
follow steps 1–4 under Quickstart: the app needs your model API key before its
first conversation. Installed-app data lives in ~/.penguin/data.

Quickstart

Development preview · Run from source · Bring your own model API key

Install Node.js 24+ and pnpm 11, then run:

git clone https://github.com/Prism-Shadow/travel-agent.git
cd travel-agent
pnpm install
pnpm desktop

This builds the workspace and opens the desktop app with its embedded server and browser.
The app window signs in automatically; the sign-in page (for example pnpm dev in a browser)
takes the same initial credentials as an installed app, traveler / traveler-2026.

  1. Open Models and add your model provider's API key.
  2. Choose New trip. New conversations use the in-app browser by default.
  3. Ask the agent to open a travel page and help you explore it. Follow the webpage beside the chat.
  4. Choose Add to trip when you want to keep related conversations and plans together.

Source-run data lives in ~/.penguin/dev-data, separate from an installed app's ~/.penguin/data.
You can also configure ANTHROPIC_API_KEY or DEEPSEEK_API_KEY in a local .env file copied from
.env.example.

Travel Browser extension

Use your own Chrome, with the travel websites and accounts you already know. Travel Browser
connects Travel Agent to your Chrome profile so you can work with your existing website sign-ins.
Keep Travel Agent Desktop running while you use the extension.

Travel Browser welcome page in English, showing how to pin the extension, choose Chrome in Travel Agent and start a travel conversation.

The extension's welcome guide. The browser illustration shows an example connected tab.

Install in Chrome

The extension is included in this repository and is currently loaded from source. The desktop
command in Quickstart builds it along with the app.

  1. In Chrome, open chrome://extensions and enable Developer mode.
  2. Choose Load unpacked, then select packages/browser-extension/dist inside your checkout.
    Chrome lists the extension as Travel Browser.
  3. Open Chrome's puzzle menu and pin Travel Browser to the toolbar.

Desktop connects automatically and remembers the pairing across restarts. If multiple apps are
running, use Connection on the extension welcome page to choose one. After updating, restart
Desktop and reload the extension; Chrome may ask you to enable its local connection permission.

Start a travel task

  1. Open New trip in Travel Agent Desktop. Use the browser button after Budget to select
    Chrome extension before your first message.
  2. Send a request, such as “Help me compare hotels near the Bund in Shanghai.” The agent can open
    task tabs in your connected Chrome profile.

For an existing chat, choose My own Chrome (extension) in the Browser panel's menu
between tasks. New chats use the in-app browser by default.

Already have a webpage open? Click the Travel Browser icon on that tab to authorize the agent
to use it. The tab joins the cyan Travel Browser group. Click the icon again to disconnect
that tab.

After rebuilding the extension, click Reload on its card in chrome://extensions.
See the extension guide for more detail.

Your choices, your data

  • You decide at payment. The booking workflow is designed around options with reasons,
    your explicit selection, form filling and a stop at payment. Browser payment controls are
    blocked by an unconditional gate. Complete booking-flow validation is ongoing; see the
    acceptance plan.
  • Browser choice stays explicit. It is saved per conversation, stays fixed during a run and
    never silently switches when unavailable. Choosing Chrome and authorizing an existing tab are
    separate actions.
  • Your trip files stay on your disk. Model requests go to your configured provider, and browser
    tasks contact the websites they visit. Local storage does not mean offline processing. Advanced
    secret-entry capabilities remain gated pending the
    runtime isolation decision.

Contributing

The active UI is shared by web and desktop. For UI development with Vite, see the
web development guide; use the desktop app to work on and validate the
complete browser-control experience. The main pieces are:

Layer Packages
Product UI packages/web
Desktop and visible browser packages/desktop
Agent runtime and application API packages/core, packages/server
Browser control and Chrome bridge packages/browser-cli, packages/browser-extension
Built-in skills packages/skills

Start with the architecture, development plan or
known issues. Keep changes focused and update the owning spec when behavior changes.

pnpm typecheck
pnpm test
pnpm format:check

Built on

Travel Agent is built on PenguinHarness.

License

Apache License 2.0.

Reviews (0)

No results found