playjev
Typed browser automation: Playwright acts, Jev decides.
Filed’s library keeps Playwright for everything deterministic and asks Jev only for the step that needs a judgment about the page.
PlayJev</h1>
<p align="center"><strong>Stagehand, but with Jev.</strong><br />Natural-language browser automation for Playwright, powered by Jev.</p>
<p align="center">
<a href="https://github.com/filedcom/playjev/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/filedcom/playjev/actions/workflows/ci.yml/badge.svg" /></a>
<a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/license-MIT-6f5cff" /></a>
<img alt="Status: experimental" src="https://img.shields.io/badge/status-experimental-f5a623" />
<img alt="Node 20+" src="https://img.shields.io/badge/node-%3E%3D20-c9ff57?labelColor=14121f" />
<img alt="TypeScript" src="https://img.shields.io/badge/TypeScript-strict-3178c6" />
</p>
<p align="center">
<a href="docs/guide/getting-started.md">Documentation</a> ·
<a href="docs/guide/getting-started.md">Quickstart</a> ·
<a href="docs/api/playjev.md">API</a> ·
<a href="docs/evals/index.md">Evals</a>
</p>
---
## What is PlayJev?
PlayJev is a TypeScript library for controlling websites with plain-English instructions while keeping the full Playwright API. Give it an existing Playwright page, then ask it to click controls, navigate websites, fill forms, inspect page state, or choose between visible options.
If you know Stagehand, the shortest explanation is: **PlayJev is Stagehand, but with Jev making the browser decisions instead of a generative LLM.**
```ts
await page.act("Open the pricing page");
await page.act("Complete the contact form", { fields });
await page.check("Did the form submit successfully?");
```
> [!IMPORTANT]
> PlayJev is a new, experimental project—not a production-stable release. The API is actively evolving as it is tested against broader browser benchmarks. It currently requires Chromium/CDP and