omiid
homenotebookai usage

Using puppeteer executable for GSTS

June 08, 2024 · Updated on August 09, 2026

GSTS lets you use Google Workspace as a credential provider for your AWS CLI. It drives a browser in the background to complete the SAML login, then writes short-lived credentials for the role you asked for. If you manage multiple AWS accounts in one organization, Google Workspace SAML federation validates the login for all of them, so the AWS CLI SAML login is the same flow everywhere.

First, install GSTS:

npm install --global gsts

Then add this credential_process line to your ~/.aws/config:

[default]
credential_process = gsts --idp-id=<your_idp_id> --sp-id=<your_sp_id> --aws-role-arn=arn:aws:iam::111111112222222:role/role-name

I write short, practical notes like this one. Get the next one by email:

Unsubscribe anytime.

The first login fails when Playwright has no browser installed

GSTS uses MS Playwright to open a browser and handle the authentication. On my first login it failed, because Playwright had never downloaded a browser on that machine. The error looked like this:

Error when retrieving credentials from custom-process: [...] ERROR gsts: browserType.launchPersistentContext: Executable doesn't exist at [...]/Caches/ms-playwright/chromium-1105/chrome-mac/Chromium.app/Contents/MacOS/Chromium
╔═════════════════════════════════════════════════════════════════════════╗
║ Looks like Playwright Test or Playwright was just installed or updated. ║
║ Please run the following command to download new browsers:              ║
║                                                                         ║
║     npx playwright install                                              ║
║                                                                         ║
║ <3 Playwright Team                                                      ║
╚═════════════════════════════════════════════════════════════════════════╝

Point GSTS at a Chromium executable path you already have

The message tells you to run npx playwright install, which downloads a second browser. I already had Puppeteer installed for some automation processes, and I prefer working with that instead of installing Playwright for this one thing. GSTS takes a flag for the browser binary, so you can pass any Chromium executable path: the one from puppeteer.executablePath(), or the Homebrew Chromium on macOS. Add --playwright-engine-executable-path /opt/homebrew/bin/chromium to the end of the credential command:

[profile sts]
credential_process = gsts --idp-id=<your_idp_id> --sp-id=<your_sp_id> --aws-role-arn=arn:aws:iam::111111112222222:role/role-name  --playwright-engine-executable-path /opt/homebrew/bin/chromium

This way, you can use your existing Chromium installation and avoid setting up Playwright separately.

TL;DR

GSTS simplifies using Google Workspace as a credential provider for AWS CLI, especially when managing multiple AWS accounts. Installation is straightforward, but you might encounter a hiccup with Playwright during the first-time setup. A quick fix is to use Puppeteer if you have it already installed, saving you the hassle of setting up another browser automation tool.

Join My Newsletter

Occasional notes on software, tools, and things I learn. No spam.

Unsubscribe anytime.

Continue Reading
  • Tuning Postgres and pgvector: the three knobs that matter08-18-2026 · Most pgvector performance problems come down to three settings. This post shows how to read an ANN query plan and tune ef_search, shared_buffers, and work_mem in the right order.
  • AI text watermarking: how it works and what it can't do08-16-2026 · Claude now watermarks its text. The watermark changes where the randomness in word choice comes from, not what the model can say. Here is the whole pipeline, with simulations you can poke at.
  • HNSW vs IVFFlat: choosing and building your pgvector index08-14-2026 · Past a few hundred thousand rows, an exact scan stops being fast enough. Here is how to pick between HNSW and IVFFlat and build the index without locking the table.
  • Vector search relevance: chunking, metadata, and the 0.81 problem08-11-2026 · Most bad vector search results come from one of three failure modes: chunking, modality mismatch, or a confused model. Each one has a specific diagnostic and a specific fix.
  • pgvector setup: your first multimodal query in TypeScript08-03-2026 · One Postgres table can hold text and screenshot embeddings in the same vector column. This post sets up the schema, the Voyage embedding call, and the first query that returns both.