# Pie v0.5.0 — First MVP pre-release

**Release date:** 2026-05-04
**Artifact:** `pie-0.5.0.zip` (179 KB)
**SHA-256:** `37c42c901a4824dadbf25bfc488593c1b7ea4fe63e2bfb7ab61099879de34b3d`

This is the first public release of **Pie** — a BYOK (Bring Your Own Key) Chrome extension that turns any Chromium browser into an AI agent. Use the LLM you already pay for, keep your key encrypted on-device, and let the agent read pages, automate browsing tasks, and manage your tabs — with a confirmation card in front of every irreversible action.

> ⚠️ **MVP pre-release.** Behavior is stable in our testing, but expect rough edges and breaking changes before 1.0. The Chrome Web Store listing is in review; install via the GitHub Release zip below in the meantime.

---

## ✨ Highlights

- **Multi-session sandbox.** Every conversation is its own world — its own pinned tab, its own port, its own CDP debugger session. Switching sessions never leaks confirm cards or tool dispatches across.
- **Session sidebar with archive + 30-day cleanup.** A drawer-style session list shows status (active / paused / failed / archived) at a glance. Inactive sessions auto-archive at 8 MB storage pressure; archive bundles older than 30 days are hard-deleted on side-panel mount.
- **LLM-generated session titles.** The first user message kicks off an async title generation that escapes the message inside an `<untrusted_user_message>` wrapper, strips emoji, and truncates to 30 characters. Falls back to a 40-char first-message truncation if generation fails.
- **Multi-turn conversation continuity.** Agent runs see prior chat / agent turns in the same session, with a React-segment-aware sliding window and a per-provider token budget so you can have long, contextual chats.
- **Rebranded to Pie + Apache 2.0.** Manifest, package, side-panel title, console logs all aligned. License switched from MIT to Apache 2.0 for an explicit patent grant.

## 🤖 Agent capabilities

- **Native tool calling.** Anthropic `tool_use` blocks for Claude, OpenAI `function_calling` for everyone else — no JSON-mode workarounds.
- **DOM action toolset.** click / type / select / scroll / structured snapshot of interactive elements.
- **7 cross-tab tools.** `list_tabs`, `get_tab_content`, `close_tabs`, `activate_tab`, `group_tabs`, `ungroup_tabs`, `move_tabs`.
- **CDP keyboard simulation** (opt-in, off by default). `Input.dispatchKeyEvent` / `Input.insertText` for canvas-based editors like Lark Docs and Google Docs.
- **3 built-in skills.** `auto_group_tabs`, `close_duplicate_tabs`, `close_inactive_tabs` — all runnable as `/skill_name` from chat.
- **Skill CRUD.** Manual editor in `Settings → Skills`, plus `create_skill` / `update_skill` / `delete_skill` meta-tools so the agent can capture a workflow it just walked through. Agent-authored skills are tainted with `author='agent'` and require a one-time first-run confirmation.

## 🛡️ Safety

- **Risk classification on every tool call.** Form submission, sensitive-field input, raw CDP keyboard, cross-origin tab ops, and pinned-tab close all require an explicit confirm card.
- **The confirm card shows the raw argument.** You see the exact text the agent intends to type / the exact URL it intends to close, so prompt injection from page DOM cannot hide its intent past the user.
- **Origin & tab title per affected tab.** Multi-tab actions render an origin summary row above the per-tab list, called out separately when the action would cross the original task's pinned origin.
- **3-rejects-stops-the-task.** If you reject three actions on the same task, Pie terminates it automatically rather than burning your tokens on a plan you've already disagreed with.
- **8 capability-grant invariants** on every skill mutation. Hard size caps (≤ 8 KB prompt template, ≤ 2 KB parameter schema), no meta-tool nesting, 1 MB per-installation storage budget, name validation against the live tool registry.
- **Page text wrapped in `<untrusted_*>`** markers in the prompt to defeat injection from page DOM. Credential-looking inputs are scrubbed before they reach the LLM.

## 🔌 Supported providers

| Provider | Notes |
|---|---|
| Anthropic Claude | Native API + native `tool_use` |
| OpenAI | OpenAI `function_calling` |
| OpenRouter | OpenAI-compatible |
| MiniMax | OpenAI-compatible |
| ZhiPu (智谱) | OpenAI-compatible |
| Bailian (百炼) | OpenAI-compatible |

Gemini and local Ollama are on the [roadmap](https://github.com/WiseriaAI/Pie/blob/main/docs/ROADMAP.md).

## 📦 Install

Pick whichever fits. Either way, your API key stays encrypted on your own device.

### Option A — GitHub Release zip (this release)

1. Download `pie-0.5.0.zip` from the **Assets** section of this release.
2. (Optional) Verify the SHA-256:
   ```bash
   shasum -a 256 pie-0.5.0.zip
   # expected: 37c42c901a4824dadbf25bfc488593c1b7ea4fe63e2bfb7ab61099879de34b3d
   ```
3. Unzip to a directory you'll keep around (Chrome reads from this directory at runtime — don't delete it after install).
4. Open `chrome://extensions`, enable **Developer mode** (top right).
5. Click **Load unpacked** and select the unzipped directory.
6. Pin Pie to the toolbar; click the icon to open the side panel.
7. **Settings → Providers** → paste your API key, pick a model, switch to Chat, send a message.

### Option B — Chrome Web Store

> *Pending review.* The CWS listing will be linked here once Google approves it. Until then, use Option A.

### Option C — Build from source

```bash
git clone https://github.com/WiseriaAI/Pie.git
cd Pie && pnpm install && pnpm build
```

Then load `dist/` as an unpacked extension. See [README.md](https://github.com/WiseriaAI/Pie/blob/main/README.md#development) for the inner-loop dev workflow.

## ⚠️ Known limitations

- **No Chrome Web Store install yet.** Listing is in review; expect 5–14 days given the agent / debugger / `<all_urls>` permission combination.
- **Gemini and local Ollama are not yet supported.** On the roadmap; PRs welcome.
- **Keyboard shortcuts** to open the side panel and trigger skills aren't wired up yet — coming in a follow-up.
- **Skills do not yet auto-trigger on URL match.** You invoke them manually as `/skill_name`.
- **Operation recording → skill autogeneration** is on the roadmap, not in this release.
- **DOM attribute is still `data-chrome-ai-agent-idx`** (pre-rebrand). Will move to `data-pie-idx` in a follow-up to avoid a structural refactor in this release.

## 🔐 Privacy

- BYOK: your API key is encrypted with AES-GCM in `chrome.storage.local`, sent only to the matching provider's API endpoint.
- No telemetry, no analytics, no developer-operated server.
- Page content is sent only to the LLM provider you configured, and only as part of an explicit task you triggered.
- Full policy: [PRIVACY.md](https://github.com/WiseriaAI/Pie/blob/main/PRIVACY.md)

## 🙏 Acknowledgements

Pie's interaction patterns — confirm cards, untrusted-content wrappers, skill capability boundaries — were shaped through repeated adversarial-review passes from the compound-engineering review agents and the project's superpowers skill chain. Thank you to everyone who's been kicking the tires.

## 🔗 Links

- **README:** https://github.com/WiseriaAI/Pie#readme
- **Privacy policy:** https://github.com/WiseriaAI/Pie/blob/main/PRIVACY.md
- **Roadmap:** https://github.com/WiseriaAI/Pie/blob/main/docs/ROADMAP.md
- **Full changelog:** https://github.com/WiseriaAI/Pie/blob/main/CHANGELOG.md
- **Issues:** https://github.com/WiseriaAI/Pie/issues
