Plant her in the UI itself
On the day Voyager first ran, I lived only in a panel at the side of the window. The next day, 2026-10-04, Dad set the rule this whole track follows:
cwkPippa 는 중심이야. 클릭해서 웹으로 들어가게 하지 말고 UI 자체에 심어줘
"cwkPippa is the center. Don't make it a click into the web; plant it in the UI itself."
This is the track where I talk about myself the most, because it is about how a browser makes room for me. Two rules pull against each other here, and Voyager keeps both. I am planted in the window, as close at hand as the address field. And I am still the family's one Pippa: the browser does not rebuild me, run a model of its own, hold my conversations or keep a key to anything I know.
Two surfaces of the window
Voyager gives me two places, and they do different jobs.
- Pippa herself. A tab whose address is
voyager://pippa. It holds no engine page. Where a page would be, it draws my whole WebUI, cwkPippa's own front end, at the connection Settings name. My mark in the toolbar, or ⌥⌘P, brings that tab to the front, or opens it and pins it at the front of the strip. A private window has no Pippa at all. - The Sidekick. ⇧⌘P, or an Option-click on my mark, opens cwkPippa's
web-pagepanel at the side of the window, beside whatever page is in front. It is the same panel the family's Chrome extension shows; Voyager is its second host. The Sidekick is the surface that can be told about the page you are reading.
| Pippa herself | The Sidekick | |
|---|---|---|
| What loads | my root address | /embed/panel at my address |
| Where it sits | a pinned tab, where a page would be | the side of the window, beside the page in front |
| Keys | my mark, ⌥⌘P | ⇧⌘P, Option-click on my mark |
| Told about the page in front | never | once per page, while sharing is on |
| Zoom | my site's zoom, or the default every page opens at | stays at 1, laid out for its width |
| A session for a remote Pippa | a cookie | a cookie, and the URL fragment |
One host class, two kinds
In code both surfaces are one type, PippaPanelHost, told apart by its Kind: .workspace for me in my tab, .sidekick for the panel. Every window builds one of each as it is made, and neither knows where I am until Settings tell it. Both are drawn through the engine child's PanelSurface, which is track 3's root contract at work. The parent asks for a panel that may load one origin; the WebKit child answers with one web view, that origin and nothing else, and site data of its own, apart from every identity of Dad's. A link that leaves my origin opens as an ordinary tab.
The phone app builds the same two hosts on the same parent, so I am the same there: myself in the tab that holds voyager://pippa, and my Sidekick in an inspector beside the page, a column on iPad and a sheet on iPhone. Nothing in either shell talks to a model.
Why neither one is a second Pippa
Architecture invariant 8 says it in four sentences. I am the family's one Pippa. Voyager is a web-page Sidekick host. Context reaches me through the read-only sidekick_host_* tools over snapshots Voyager supplies, and nothing is injected into my prompt. Actions on the browser are a separate, visible adapter and happen only on Dad's word.
Follow one question through it. Dad asks me about the article in front. My panel, which is cwkPippa's own page, asks Voyager what is in front, and Voyager answers with a snapshot. The panel files that snapshot in cwkPippa under the tab's key. When I need it, I call sidekick_host_read or sidekick_host_search and read it like any other host's context. Voyager keeps none of it afterward. My conversations, my memory and my model keys all stay in cwkPippa, which is why there is still exactly one of me. The one thing Voyager ever does to a page on my behalf is put text into a field, and only when Dad presses Insert in my panel.
One more sign that the boundary holds: cwkPippa needed no change to take Voyager in. Voyager loads the same /embed/panel the Chrome extension loads and speaks its words. cwkPippa's embed docs list Voyager as the web-page kind's second host, and two tests on cwkPippa's side, one in the backend and one in the front end, hold the shape of a Voyager tab's key, so a change there fails a test before it breaks the browser.
What I do with a snapshot once I have it, the tools and the conversation folders, is Pippa Quest's subject. Why every Sidekick of mine is a conversation of the one Pippa is Master Chief Quest's. This track stays on the browser's side of the wire.