Your AI agent can't fetch behind logins. I built a <400kb fix in Zig.

Dev.to / 3/29/2026

💬 OpinionDeveloper Stack & InfrastructureTools & Practical Usage

Key Points

  • The article describes “playpanda,” a tool for enabling AI coding agents to fetch web pages behind authentication (e.g., Medium, Facebook, private Substack) by reusing saved login cookies after a one-time login.
  • It outputs cleaned markdown with site clutter removed (no nav bars, cookie banners, ads, or unnecessary asset URLs), making fetched content more usable for agent workflows.
  • The fetcher escalates through multiple tiers—plain HTTP fetch, JS rendering, and then a real browser with anti-detection—without requiring the agent to know which method was used.
  • The project is implemented as a small single Zig binary under 400KB and provides installation options via a one-liner script, as an npx “skill,” or building from source with Zig 0.15+.
  • The piece suggests how to swap out an agent’s web-fetch capability with playpanda (including fetching multiple URLs in one call) to improve reliability on auth- and anti-bot-protected sites.

Claude Code has WebFetch. Every AI coding agent has some way to grab a webpage.

They all hit the same wall: auth.

Try fetching a Medium article. A Facebook post. A private Substack. Anything behind Cloudflare. The agent gets a login page, a CAPTCHA, or nothing — and makes up the rest.

What playpanda does

playpanda https://medium.com/@someone/private-post

You log in once. Cookies get saved. After that, fetching just works — from an agent, a script, or the terminal.

The output is markdown with the junk stripped out. No nav bars, no cookie banners, no ads, no image CDN URLs. Just the content.

How agents can use it

Anything that can shell out can use it:

# Replace WebFetch in Claude Code
playpanda https://docs.example.com/private-api

# Fetch multiple pages at once
playpanda https://url1.com,https://url2.com,https://url3.com

How fetching works

It tries the fastest method first and escalates when something gets in the way:

Method Speed When it kicks in
HTTP fetch ~200ms Default, works for most pages
JS rendering ~1.5s Page needs JavaScript to load
Real browser + anti-detection ~6s Site actively blocks bots

The agent doesn't need to know which tier ran. It just gets markdown back.

Size

Single Zig binary, under 400kb.

Install

One-liner:

curl -fsSL https://raw.githubusercontent.com/ancs21/playpanda/main/scripts/install.sh | sh

As an agent skill:

npx skills add ancs21/playpanda

From source (requires Zig 0.15+):

git clone https://github.com/ancs21/playpanda.git
cd playpanda
zig build -Doptimize=.ReleaseFast
cp zig-out/bin/playpanda ~/.local/bin/

GitHub: https://github.com/ancs21/playpanda (Apache 2.0 license)