type: message

role: user

type: text

text: can you summarize this page for me https://pi.dev/packages/@demigodmode/pi-web-agent?name=pi-web-agent


role: assistant

type: thinking

thinking: Need to summarize pi.dev page for @demigodmode/pi-web-agent package. Use ctx_fetch_and_index then ctx_search per hierarchy.

thinkingSignature: reasoning

text: I'll fetch that page and summarize it for you.

type: toolCall

source: pi-web-agent-page

api: openai-completions

provider: ollama

stopReason: toolUse


role: toolResult

text:
Fetched and indexed **8 sections** (5.6KB) from: pi-web-agent-page::https://pi.dev/packages/@demigodmode/pi-web-agent?name=pi-web-agent
Full content indexed in sandbox — use ctx_search(queries: [...], source: "pi-web-agent-page::https://pi.dev/packages/@demigodmode/pi-web-agent?name=pi-web-agent") for specific lookups.

---

@demigodmode/pi-web-agent · Packages · Pi

[Packages](/packages?name=pi-web-agent)

extension

Install `@demigodmode/pi-web-agent` from npm and Pi will load the resources declared by the package manifest.

[npm](https://www.npmjs.com/package/@demigodmode/pi-web-agent) [repo](https://github.com/demigodmode/pi-web-agent)[home](https://github.com/demigodmode/pi-web-agent#readme) [report](https://github.com/earendil-works/pi/issues/new?template=package-report.yml&labels=package-report&title=Package+Report%3A+%40demigodmode%2Fpi-web-agent&package-name=%40demigodmode%2Fpi-web-agent&package-version=1.5.1)

`$ pi install npm:@demigodmode/pi-web-agent`Copy

Package

`@demigodmode/pi-web-agent`

Version

`1.5.1`

Published

Jun 22, 2026

Downloads

3,741/mo · 957/wk

Author

demigodmode

License

AGPL-3.0-only

Types

extension

Size

209.5 KB

Dependencies

5 dependencies · 2 peers

Pi manifest JSON

{
  "extensions": \[
    "./dist/extension.js"
  \]
}

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

# pi-web-agent

[![CI](https://github.com/demigodmode/pi-web-agent/actions/workflows/ci.yml/badge.svg)](https://github.com/demigodmode/pi-web-agent/actions/workflows/ci.yml) [![npm version](https://img.shields.io/npm/v/@demigodmode/pi-web-agent)](https://www.npmjs.com/package/@demigodmode/pi-web-agent) [![Docs](https://img.shields.io/badge/docs-github%20pages-blue)](https://demigodmode.github.io/pi-web-agent/)

`@demigodmode/pi-web-agent` is a Pi package for web access.

Most agent web tools blur search, fetch, browser rendering, and research into one vague thing. `pi-web-agent` exposes one public research tool, `web_explore`, and keeps search/fetch/headless work inside that bounded workflow.

The point is keeping the model-facing boundary simple: ask `web_explore` to research a question, and it handles direct links, discovery, HTTP reads, targeted browser rendering, source ranking, source-quality checks, and caveats internally.

That sounds obvious, but a lot of agent tooling gets fuzzy right there. This package is meant to be stricter about what it actually did and more willing to say when a read was not good enough to trust. Bot-check pages, narrow source sets, unreadable threads, and cautionary/conflicting evidence should show up as caveats instead of fake confidence.

## Install

Compatibility notice: current `pi-web-agent` requires Pi 0.74+ because Pi packages moved to the `@earendil-works/*` scope. Update Pi before updating this package. If you are on an older Pi version, stay on `@demigodmode/pi-web-agent@0.6.x` until Pi is updated.

```bash
pi install npm:@demigodmode/pi-web-agent
```

After installing, reload or restart Pi. Run `/web-agent` for the action menu, or `/web-agent doctor` to check whether the package loaded cleanly and which web backends are configured.

Headless rendering first tries a detectable Chromium-family browser: Chrome, Chromium, Edge, or Brave. If none is found, it falls back to Playwright-managed Chromium and still launches he

…[truncated — use ctx_search() for full content]


text: The page has more content that got truncated. Let me search for the key details to get a complete picture.

queries:
tools exposed
web_explore command
slash commands available
configuration backends
caveats and limitations


text:
## tools exposed

--- [current-session | 2026-07-04 11:22 | pi-web-agent-page::https://pi.dev/packages/@demigodmode/pi-web-agent?name=pi-web-agent] ---
### pi-web-agent

# pi-web-agent

[![CI](https://github.com/demigodmode/pi-web-agent/actions/workflows/ci.yml/badge.svg)](https://github.com/demigodmode/pi-web-agent/actions/workflows/ci.yml) [![npm version](https://img.shields.io/npm/v/@demigodmode/pi-web-agent)](https://www.npmjs.com/package/@demigodmode/pi-web-agent) [![Docs](https://img.shields.io/badge/docs-github%20pages-blue)](https://demigodmode.github.io/pi-web-agent/)

`@demigodmode/pi-web-agent` is a Pi package for web access.

Most agent web tools blur search, fetch, browser rendering, and research into one vague thing. `pi-web-agent` exposes one public research tool, `web_explore`, and keeps search/fetch/headless work inside that bounded workflow.

The point is keeping the model-facing boundary simple: ask `web_explore` to research a question, and it handles direct links, discovery, HTTP reads, targeted browser rendering, source ranking, source-quality checks, and caveats internally.

That sounds obvious, but a lot of agent tooling gets fuzzy right there. This package is meant to be stricter about what it actually did and more willing to say when a read was not good enough to trust. Bot-check pages, narrow source sets, unreadable threads, and cautionary/conflicting evidence should show up as caveats instead of fake confidence.

--- [current-session | 2026-07-04 11:22 | pi-web-agent-page::https://pi.dev/packages/@demigodmode/pi-web-agent?name=pi-web-agent] ---
### pi-web-agent > Settings

…Global:  ~/.pi/agent/extensions/pi-web-agent/config.json
Project: .pi/extensions/pi-web-agent/config.json
```

Precedence:

*   built-in defaults
*   global config
*   project config

Project config overrides global config.

Example:

```json
{
  "presentation": {
    "defaultMode": "compact",
    "tools": {
      "web_explore": { "mode": "verbose" }
    }
  }
}
```

Backend config is also supported. Defaults remain DuckDuckGo search, plain HTTP fetch, and local-browser headless fallback with managed Chromium fallback configured. If you have a Brave Search API key, Brave can be selected as a h…

---

## web_explore command

--- [current-session | 2026-07-04 11:22 | pi-web-agent-page::https://pi.dev/packages/@demigodmode/pi-web-agent?name=pi-web-agent] ---
### pi-web-agent > Settings

## Settings

Primary UI:

```text
/web-agent settings
```

Helper commands:

```text
/web-agent doctor
/web-agent show
/web-agent changelog
/web-agent reset project
/web-agent reset global
/web-agent mode preview
/web-agent mode web_explore verbose
/web-agent mode web_explore inherit
```

Config files:

```text
Global:  ~/.pi/agent/extensions/pi-web-agent/config.json
Project: .pi/extensions/pi-web-agent/config.json
```

Precedence:

*   built-in defaults
*   global config
*   project config

Project config overrides global config.

Example:

```json
{
  "presentation": {
    "defaultMode": "compact",
    "tools": {
      "web_explore": { "mode": "verbose" }
    }
  }
}
```

Backend config is also supported. Defaults remain DuckDuckGo search, plain HTTP fetch, and local-browser headless fallback with managed Chromium fallback configured. If you have a Brave Search API key, Brave can be selected as a hosted search backend while `web_explore` still handles page reading, ranking, and caveats itself.

Backend settings can be changed from:

```text
/web-agent settings
```

Choose **Backends** to edit search/fetch providers, fallback behavior, and SearXNG or Firecrawl base URLs interactively. Brave Search uses `PI_WEB_AGENT_BRAV…

--- [current-session | 2026-07-04 11:22 | pi-web-agent-page::https://pi.dev/packages/@demigodmode/pi-web-agent?name=pi-web-agent] ---
### pi-web-agent

# pi-web-agent

[![CI](https://github.com/demigodmode/pi-web-agent/actions/workflows/ci.yml/badge.svg)](https://github.com/demigodmode/pi-web-agent/actions/workflows/ci.yml) [![npm version](https://img.shields.io/npm/v/@demigodmode/pi-web-agent)](https://www.npmjs.com/package/@demigodmode/pi-web-agent) [![Docs](https://img.shields.io/badge/docs-github%20pages-blue)](https://demigodmode.github.io/pi-web-agent/)

`@demigodmode/pi-web-agent` is a Pi package for web access.

Most agent web tools blur search, fetch, browser rendering, and research into one vague thing. `pi-web-agent` exposes one public research tool, `web_explore`, and keeps search/fetch/headless work inside that bounded workflow.

The point is keeping the model-facing boundary simple: ask `web_explore` to research a question, and it handles direct links, discovery, HTTP reads, targeted browser rendering, source ranking, source-quality checks, and caveats internally.

That sounds obvious, but a lot of agent tooling gets fuzzy right there. This package is meant to be stricter about what it actually did and more willing to say when a read was not good enough to trust. Bot-check pages, narrow source sets, unreadable threads, and cautionary/conflicting evidence should show up as caveats instead of fake confidence.

---

## slash commands available

--- [current-session | 2026-07-04 11:22 | pi-web-agent-page::https://pi.dev/packages/@demigodmode/pi-web-agent?name=pi-web-agent] ---
### pi-web-agent > Settings

## Settings

Primary UI:

```text
/web-agent settings
```

Helper commands:

```text
/web-agent doctor
/web-agent show
/web-agent changelog
/web-agent reset project
/web-agent reset global
/web-agent mode preview
/web-agent mode web_explore verbose
/web-agent mode web_explore inherit
```

Config files:

```text
Global:  ~/.pi/agent/extensions/pi-web-agent/config.j…

---

## configuration backends

--- [current-session | 2026-07-04 11:22 | pi-web-agent-page::https://pi.dev/packages/@demigodmode/pi-web-agent?name=pi-web-agent] ---
### pi-web-agent > Settings

…extensions/pi-web-agent/config.json
```

Precedence:

*   built-in defaults
*   global config
*   project config

Project config overrides global config.

Example:

```json
{
  "presentation": {
    "defaultMode": "compact",
    "tools": {
      "web_explore": { "mode": "verbose" }
    }
  }
}
```

Backend config is also supported. Defaults remain DuckDuckGo search, plain HTTP fetch, and local-browser headless fallback with managed Chromium fallback configured. If you have a Brave Search API key, Brave can be selected as a hosted search backend while `web_explore` still handles page reading, ranking, and caveats itself.

Backend settings can be changed from:

```text
/web-agent settings
```

Choose **Backends** to edit search/fetch providers, fallback behavior, and SearXNG or Firecrawl base URLs interactively. Brave Search uses `PI_WEB_AGENT_BRAVE_API_KEY`. Firecrawl API keys should also stay in environment variables rather than being written into config files.

For the full backend config shape, including SearXNG, Brave, Firecrawl, and fallback behavior, see:

*   [https://demigodmode.github.io/pi-web-agent/self-hosted-backends](https://demigodmode.github.io/pi-web-agent/self-hosted-backends)

--- [current-session | 2026-07-04 11:22 | pi-web-agent-page::https://pi.dev/packages/@demigodmode/pi-web-agent?name=pi-web-agent] ---
### pi-web-agent > Install

## Install

Compatibility notice: current `pi-web-agent` requires Pi 0.74+ because Pi packages moved to the `@earendil-works/*` scope. Update Pi before updating this package. If you are on an older Pi version, stay on `@demigodmode/pi-web-agent@0.6.x` until Pi is updated.

```bash
pi install npm:@demigodmode/pi-web-agent
```

After installing, reload or restart Pi. Run `/web-agent` for the action menu, or `/web-agent doctor` to check whether the package loaded cleanly and which web backends are configured.

Headless rendering first tries a detectable Chromium-family browser: Chrome, Chromium, Edge, or Brave. If none is found, it falls back to Playwright-managed Chromium and still launches headless. Firefox/Safari-only systems can still use search and plain HTTP reads; browser-rendered fallback uses Chromium.

Later on, update installed packages with:

```bash
pi update
```

---

## caveats and limitations

--- [current-session | 2026-07-04 11:22 | pi-web-agent-page::https://pi.dev/packages/@demigodmode/pi-web-agent?name=pi-web-agent] ---
### pi-web-agent

# pi-web-agent

[![CI](https://github.com/demigodmode/pi-web-agent/actions/workflows/ci.yml/badge.svg)](https://github.com/demigodmode/pi-web-agent/actions/workflows/ci.yml) [![npm version](https://img.shields.io/npm/v/@demigodmode/pi-web-agent)](https://www.npmjs.com/package/@demigodmode/pi-web-agent) [![Docs](https://img.shields.io/badge/docs-github%20pages-blue)](https://demigodmode.github.io/pi-web-agent/)

`@demigodmode/pi-web-agent` is a Pi package for web access.

Most agent web tools blur search, fetch, browser rendering, and research into one vague thing. `pi-web-agent` exposes one public research tool, `web_explore`, and keeps search/fetch/headless work inside that bounded workflow.

The point is keeping the model-facing boundary simple: ask `web_explore` to research a question, and it handles direct links, discovery, HTTP reads, targeted browser rendering, source ranking, source-quality checks, and caveats internally.

That sounds obvious, but a lot of agent tooling gets fuzzy right there. This package is meant to be stricter about what it actually did and more willing to say when a read was not good enough to trust. Bot-check pages, narrow source sets, unreadable threads, and cautionary/conflicting evidence should show up as caveats instead of fake confidence.

--- [current-session | 2026-07-04 11:22 | pi-web-agent-page::https://pi.dev/packages/@demigodmode/pi-web-agent?name=pi-web-agent] ---
### pi-web-agent > Settings

…ig is also supported. Defaults remain DuckDuckGo search, plain HTTP fetch, and local-browser headless fallback with managed Chromium fallback configured. If you have a Brave Search API key, Brave can be selected as a hosted search backend while `web_explore` still handles page reading, ranking, and caveats itself.

Backend settings can be changed from:

```text
/web-agent settings
```

Choose **Backends** to edit search/fetch providers, fallback behavior, and SearXNG or Firecrawl base URLs interactively. Brave Search uses `PI_WEB_AGENT_BRAVE_API_KEY`. Firecrawl API keys should also stay in env…

> Throttle: call #1/8 in this window. 2 call(s) before soft cap. Prefer ctx_search(queries: [...]) array form for multi-query workloads — it counts as a single call.


text:
I have enough to give you a solid summary.

# Summary: `@demigodmode/pi-web-agent`

A Pi extension that gives the agent **web access** in a deliberately minimal way. Instead of exposing a grab-bag of search/fetch/browser tools, it exposes **one** research tool — `web_explore` — and handles search, HTTP fetch, headless rendering, source ranking, quality checks, and caveats internally.

**Why it exists:** Most agent web tools blur search, fetch, and browser rendering into one vague step. `pi-web-agent` keeps that boundary simple on the model side ("ask `web_explore` to research X") while being stricter underneath about what it actually read, surfacing bot-check pages, thin source sets, and conflicting evidence as **caveats** rather than fake confidence.

**Package details**
- Version **1.5.1**, published Jun 22, 2026 · ~3.7K downloads/month
- License: **AGPL-3.0-only** · 209.5 KB · 5 deps, 2 peers
- Type: Pi extension (manifest points at `./dist/extension.js`)
- Author: demigodmode · Repo: github.com/demigodmode/pi-web-agent

**Install**
```bash
pi install npm:@demigodmode/pi-web-agent
```
- Requires **Pi 0.74+** (older Pi users stay on `0.6.x`)
- After install, reload Pi and run `/web-agent` for the action menu, or `/web-agent doctor` to verify load + backends
- Headless rendering auto-detects Chrome/Chromium/Edge/Brave; falls back to Playwright-managed Chromium. Firefox/Safari-only systems lose browser rendering but keep search + plain HTTP.

**Settings & commands**
- Primary UI: `/web-agent settings`
- Helpers: `/web-agent doctor`, `show`, `changelog`, `reset project|global`, `mode preview`, `mode web_explore verbose|inherit`
- Config: `~/.pi/agent/extensions/pi-web-agent/config.json` (global) and `.pi/extensions/pi-web-agent/config.json` (project); project overrides global
- Precedence: built-in defaults → global → project

**Backends (configurable from `/web-agent settings` → Backends)**
- **Search:** DuckDuckGo by default; **Brave** available with `PI_WEB_AGENT_BRAVE_API_KEY`; **SearXNG** supported as a self-hosted option
- **Fetch:** plain HTTP by default; **Firecrawl** available (key in env, not config)
- **Headless:** local Chromium family → Playwright-managed Chromium fallback
- `web_explore` always owns page reading, ranking, and caveats itself, regardless of which backend fetched the page

**Caveats (per the package's own framing)**
- Will refuse to fake confidence on bot-check pages, narrow source sets, unreadable threads, and conflicting evidence
- API keys (Brave, Firecrawl) belong in env vars, not config files

Full backend config shape (SearXNG/Brave/Firecrawl/fallbacks): https://demigodmode.github.io/pi-web-agent/self-hosted-backends

stopReason: stop