Skip to content

A browser as a cell: any page streamed into the display, input routed back #610

Description

@mmeyerlein

Why

A display is a web page, so a page it wants to show is a frame: the link card of the first sidecar app renders the page it names in a sandboxed iframe, live and usable. That is as far as a frame goes. A page decides whether it may be embedded (X-Frame-Options, frame-ancestors), a growing share of the web says no, a blocked frame is indistinguishable from a loaded one from the parent, and nothing behind a login was ever reachable that way. Today the answer beside the frame is an anchor that opens the page in a browser tab — outside the screen the person is talking to.

Shape

A browser running as a cell: a page rendered where the colony runs (a headless Chromium in the cell's I/O half, the way the voice cell holds the audio), its picture streamed into the display card, pointer and keys routed back the same way. The screen then shows any page — not only the ones that permit it, and including a session somebody logged into once. What the cell owns: the browser process, a viewport per card, the stream (a frame sequence over the cell's own listener, like web and voice own their ports), input events in, and the cell's own contract for the display card (display section kind: link gains an interactive form, or a seventh kind). What it must never do: put a frame into a message.

Prior art to read before the first line: neko, Kasm, browserless — all three solve the streaming; none is a cell.

Not now

It waits on the sidecar display section being in daily use on an instance (#604), because that is what tells which pages a person actually asks for and how many of them refuse a frame. Roadmap entry under Later.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    architecture-extensionExtends the substrate contract; decided in an architecture session, implemented afterenhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions