Skip to main content

Portal

The Portal sidebar: tabbed web AI chats beside your work, a launchpad of configurable links, promoted dev previews that keep their session, and a dashboard of every dev server Daintree is running.

Reviewed

Overview

Daintree has two embedded browsing surfaces, and they answer different questions. The Portal (this page) is a sidebar that slides in from the right, holding tabbed web AI chats, promoted dev previews, and a dashboard of the dev servers you have running. Browser panels are a panel kind you place in the grid or the dock, built for looking at a local app with developer tooling; they have their own page, Browser Panels.

The distinction is worth holding onto: the Portal is a companion surface that sits beside the whole workspace, while a Browser panel is a panel like any other, sharing the grid with your terminals.

Opening the Portal

Toggle it with Command-\ Control-\ Control-\ , or from the Portal button in the toolbar. It slides in from the right side of the window and stays until you close it.

The launchpad

Open the Portal with no tabs and you get the New Chat launchpad: one row per enabled portal link, each opening that service in a new tab. Out of the box the links are Claude, ChatGPT and Gemini, but the launchpad renders whatever links are enabled, not a fixed trio. Middle-click, or hold Command Control Control , to open one in a background tab.

Disable every link and the launchpad becomes an honest empty state: "No AI agents configured", with an Add agent link button that takes you to the Portal settings.

Three rows here because three links are enabled; the launchpad renders the list, not a fixed trio
Tip
Pair the Portal with CopyTree for a fast feedback loop: copy your codebase context to the clipboard, then paste it into a chat in the Portal. The web AI gets the full project context and you never leave Daintree.

Tabs

Each tab keeps its own conversation and navigation history, and the Portal keys the tab's title and icon off the URL so you can tell services apart at a glance. Tabs can be dragged to reorder.

The + button opens a new tab. If you have set a Default New Tab Agent it goes straight there; otherwise the launchpad appears so you can pick.

ActionShortcut
Toggle the Portal Command-\ Control-\ Control-\
New tab Command-T Control-T Control-T
Close the active tab Command-W Control-W, or Control-F4 Control-W
Next tab Control-Tab Control-Tab Control-Tab
Previous tab Control-Shift-Tab Control-Shift-Tab Control-Shift-Tab

Right-click a tab for Duplicate, Reload, Copy URL, Open in Browser, and the three closing options: Close, Close Others, Close to Right. Right-clicking the Portal body itself offers New Tab, Close Tab, Close All Tabs, Reset Width, a Default New Tab submenu, and a link into Portal settings.

Note
Three tabs stay live at once. Open a fourth and the least recently used tab is evicted; it reloads from scratch when you return to it, so unsaved in-page state (typed input, scroll position) is lost. Hidden-but-live tabs are parked off-screen rather than torn down, which is what keeps their in-flight requests and websocket connections alive.

Width

Drag the left edge to resize. The Portal runs from 320px to 1200px and defaults to 480px. Focus the resize handle and ArrowLeft widens it while ArrowRight narrows it, in 10px steps. Right-click the Portal and choose Reset Width to go back to 480px. On launch, a saved width that would squeeze the editor canvas below 400px on the current viewport falls back to a viewport-safe size instead.

Dev servers dashboard

The server icon in the Portal toolbar toggles a Dev servers section at the bottom of the sidebar. It lists every dev-server session Daintree is running (across worktrees and across projects, not just the one in front of you) with the worktree name, the port, the status, and the server's most recent output line. Each row has restart and stop buttons.

Stopped sessions are hidden, with one deliberate exception: a session restored from the relaunch manifest stays listed, because that row is the offer to restart a server that was running when Daintree last closed. Errored rows are stoppable, which is how you clear one. See Dev Preview for what those states mean.

A Dev Preview panel can push its current page into a Portal tab with Open in Portal. The new tab runs on the dev preview's own session partition, so cookies, localStorage and IndexedDB carry across and you stay signed in; sessionStorage does not. The preview panel stays open: this gives you a second, wider view of the same running app, not a move.

Links with target="_blank", and window.open() calls from a page in the Portal, open in your system's default browser rather than spawning a window inside Daintree. Only http: and https: URLs are handed over.

Configuration

Portal behavior lives in Settings > Portal:

  • Default new tab agent: which service opens when you press +. Choose a link, enter a custom URL, or set it to none to show the launchpad instead
  • Default links: the built-in service links. Toggle their visibility in the tab bar and launchpad, and edit their target URLs
  • Custom links: your own links to AI services or documentation, each with a name, a URL and a visibility toggle

Agent and MCP control

The Portal is reachable from agents and external MCP clients. portal.listTabs is a Workbench-tier read. portal.openUrl, portal.newTab, portal.toggle and portal.toggleDevDashboard sit at the Action tier, because they change what you are looking at: the dashboard toggle in particular is a toggle rather than a set, so an agent calling it blind can hide a view you were reading. See MCP Server and Daintree Assistant for how tiers are drawn.

Note
Portal tabs share one Chromium session, so a login in one tab is a login in all of them. Browser panels are the opposite: each project gets its own partition. That difference is covered in Browser Panels.