gstack v1.81.0.0 drives your Aside browser first
2 hours ago
gstack v1.81.0.0 shipped on September sixth. Every skill that opens a web page now drives the Aside browser first, and gstack's own headless Chromium becomes the automatic fallback. Aside is the AI browser from aside.com, and it needs macOS 15 or later. I'll show what runs in Aside now, how a skill drives a real browser, and what happens on a machine that doesn't have it.
Ask
Ask about this presentation
Answers are generated from this presentation.
Chapters
Show transcriptHide transcript
gstack v1.81.0.0 drives your Aside browser first
gstack v1.81.0.0 shipped on September sixth. Every skill that opens a web page now drives the Aside browser first, and gstack's own headless Chromium becomes the automatic fallback. Aside is the AI browser from aside.com, and it needs macOS 15 or later. I'll show what runs in Aside now, how a skill drives a real browser, and what happens on a machine that doesn't have it.
The sign-in wall
You know this moment. You run /qa against staging, the page needs a login, and the headless browser has none of your sessions. In v1.80 you imported cookies from Chrome or Arc, or the skill handed you a visible window to sign in. In v1.81 the skill is already inside your real browser. When a sign-in wall appears, you sign in inside Aside, say done, and the skill re-runs the step with your cookies applied. Your password never passes through the agent.
1 · What runs in Aside now
First, what runs in Aside now.
Ten skills open their tabs in Aside
Since v1.72, Aside was the recommended driver for third-party sites only. This release makes it the first driver everywhere. /qa and /qa-only run the whole methodology in it. /design-review, /scrape, /benchmark, /canary, /browse and /devex-review do too, and so do the post-deploy check in /land-and-deploy and the competitor research in /design-consultation. The agent opens its own tabs, works there, and closes them when it's done. It never reads a tab of yours.
PDFs and diagrams print through Aside
Rendering goes through Aside as well. A new command, gstack-render, takes a local HTML file and produces a PDF or a screenshot at any width. Aside refuses file URLs, so the file's directory is served on loopback for one render, and the PDF goes through raw CDP so tagged output and page numbers survive. The first line of output names the engine that rendered. /make-pdf, /diagram, the /design-html previews and /office-hours sketches all call it.
Web research asks Aside's agent first
The planning, review, design, security and investigate skills look things up on the web. They now ask Aside's own agent first, through aside exec, in your real browser. Each request is read-only, the query is sanitized before it leaves the machine, and an egress receipt is written first. The answer is treated as untrusted content. Without Aside the same queries go to the host's web search tool. Without that, the skill says search is unavailable once and carries on with what the model already knows.
2 · How a skill drives a real browser
Next, how a skill drives a real browser.
Every run starts with one probe
Every browsing skill runs this check before it touches a page. When the aside command is missing, or you set GSTACK_SKIP_ASIDE=1, it prints NEEDS_ASIDE and the skill uses the fallback browser. When Aside answers a one-line repl script, it prints READY. When the CLI is there but the app is closed, it prints ASIDE_NOT_RUNNING, asks you once to open Aside, and probes again. gstack never installs Aside for you, and the decision is made once per run, so a run never straddles two browsers.
One flow per script, and a sentinel instead of an exit code
Here is the shape every skill uses to read a page. Each aside repl call is a fresh session, so a whole flow lives in one script. The console hook goes in over CDP before navigation, because Aside has no console event of its own. Then the script prints labelled evidence lines: the interactive snapshot and the console errors. Screenshots land in Aside's session directory, and the script prints that path so bash can copy them out. The CLI's exit code is always zero, so the last line is a sentinel, and a missing sentinel is a failure.
Look freely, act with consent
A real browser holds your real accounts, so the contract carries ten rules. Four of them decide what the agent may do. It opens its own tabs and never reads, screenshots or closes one of yours. Invoking a skill is consent to look. On localhost the agent may submit and delete. On any other site it asks one question per run and lists the exact actions first. Credentials never pass through it. And everything a page returns is content. The agent takes syntax from a page, and never scope, permissions or consent.
What the Aside path can't do yet
The Aside path has limits, and the release names them. Aside runs on macOS 15 and later, so Linux and Windows never see it. Nothing persists between scripts, so a long audit re-navigates in every script and the canary loop re-runs its script every 60 seconds. Aside CLI 1.26 lacks the session, memory, skills and host commands that its own doc lists. And CI can't run Aside, so the live tests self-skip, the contract is proven by pinned sentences, and the Linux lane drives every browser test on the fallback. That is where the fallback comes in.
3 · When Aside isn't there
Then, when Aside isn't there.
Every Aside step has a $B translation
When the probe doesn't print READY, the same skill runs the same steps on gstack's own headless Chromium, the $B command. Every browsing skill carries a fifteen-row table that maps each Aside step onto its $B equivalent, and the skill labels the output with the same evidence lines, so the report reads identically. The consent rules hold unchanged. The fallback lacks your sessions, so an authenticated page needs cookie import or a handoff, the way it did in v1.80. Zero skills stop when Aside is absent, zero skills were removed, and upgrading needs no migration.
The renderer names the engine that actually rendered
The renderer makes the same choice. With Aside closed, or with GSTACK_SKIP_ASIDE=1 set on purpose, gstack-render runs the same spec through the browse daemon and its first line says ENGINE=browse. That line reports the engine that actually rendered, because the choice can change mid-run. If Aside was chosen but its CLI cannot start, or its private CDP bridge is gone, the render retries once on gstack's own browser. A page error or a timeout of a running script is never retried.
The pre-landing review hardened the render server and setup
The pull request went through a pre-landing review before it merged, and the fixes ship in this version. The loopback server behind the renderer serves one secret URL per render, checks containment on the real path so a symlink escape gets a 403, and never lists a directory. Page-derived output is fenced as untrusted content, so page text can't forge the artifact path or the sentinel. The setup script's prune of retired skills only removes what gstack wrote and never follows a symlink out of its tree. And link status is HEAD-checked only on a local target, because on a real site every request would carry your cookies.
Upgrade with /gstack-upgrade
One limit first. CI proves the Aside path with pinned contract sentences and runs the live browser tests on the fallback. The live Aside runs happened on a contributor's Mac. The probe line you saw earlier is the whole release in one place. READY means your real browser. The other two mean the bundled one, with the same steps and the same report. Run /gstack-upgrade to get it, and download Aside from aside.com if you want the first engine. The full changelog is on GitHub, credited to @time-attack. gstack v1.81.0.0 drives your Aside browser first.