Show HN: Pizza Bot – 一个为后台运行的 AI 代理提供的收件箱
Show HN: Pizza Bot – An inbox for AI agents that work in the background

原始链接: https://github.com/pizza-bot-app/pizza-bot

Pizza Bot 是一个开源(Apache 2.0)平台,专为异步、长时间运行的 AI 任务而设计。它由亚马逊开发,充当 AI 代理的持久化“收件箱”,允许用户启动任务后离开,稍后再回来查看完成的工作或待处理的审批请求。 主要功能包括: * **持久化工作流:** 基于有状态的 LangGraph 运行时构建,Pizza Bot 可以处理即使在客户端断开连接后仍能持续运行的任务。 * **灵活的接口:** 通过桌面应用(Electron)、网页浏览器和终端 CLI 提供统一的体验,所有终端均与中心化的 `api-server` 通信。 * **模型无关:** 支持包括 Amazon Bedrock、Anthropic、OpenAI、Google Gemini、Ollama 和 OpenRouter 在内的多个提供商。 * **代理能力:** 用户可以委托给子代理“技能”,集成 MCP 服务器,并利用“人在回路”(human-in-the-loop)审批门控。 * **注重安全:** 采用“本地优先”模式,将数据保存在用户指定的目录(`PIZZA_DATA_ROOT`)中。它仅授予明确的文件访问权限而非系统级权限,并通过 Electron 的 `safeStorage` 对密钥进行加密。 Pizza Bot 非常适合需要稳健、持久且私密环境的用户,以管理复杂的、多步骤的 AI 工作流,从而摆脱标准聊天界面的局限性。

**Pizza Bot** 是一款新开源的自托管桌面应用程序,旨在管理在后台异步运行的 AI 智能体。它最初是亚马逊内部用于自动化重复任务的工具,现已重构为采用 Apache 2.0 许可证的开源项目。 该应用采用类似**电子邮件的界面**来组织智能体活动:已完成的工作会进入“未读”文件夹,而需要人工监督的任务则会出现在“待办”列表中。这使知识工作者无需在终端窗口或碎片化的工单线索之间来回切换,即可同时管理多个智能体。 **主要技术特点:** * **灵活的后端:** 用户可接入自己的 AI 模型提供商(例如 OpenAI、Anthropic、Ollama)。 * **架构:** 支持本地桌面使用和远程自托管服务器部署(如 Docker),方便用户从多台设备访问智能体。 * **标准化集成:** 利用 **MCP(模型上下文协议)**服务器与现有软件连接,智能体的记忆则以本地 Markdown 文件形式存储。 * **透明度:** 智能体的每一个动作和工具调用都会被记录并可审计,针对特定任务还可以设置可选的人工批准策略。 目前,该项目正寻求社区贡献,以构建一个实用的集成目录。
相关文章

原文

Pizza Bot is an inbox for long-running AI work. Start or schedule a task, return to your day, and let completed work collect in Unread while runs waiting for your decision collect in Action. Agents keep working when you navigate away or disconnect; the api-server process must remain running.

Pizza Bot inbox showing unread work, an approval request, a completed launch brief, and delegated agent activity

Pizza Bot uses a stateful DeepAgents/LangGraph runtime with the same React experience in Electron and the browser. The desktop app, web app, and terminal CLI all communicate with the api-server over HTTP/SSE.

Pizza Bot was developed at Amazon and is released under the Apache 2.0 license.

  • Work asynchronously. Switch conversations without stopping their runs.
  • Return to the right queue. Completed work lands in Unread; durable approval requests land in Action.
  • Organize conversations. Group threads into folders without hiding matching work from the global Unread and Action queues.
  • Resume real work. Checkpointed runs survive client disconnects, and cron or webhook triggers can start work without an open conversation.
  • Delegate to specialists. Skills become tool-scoped subagents whose progress appears in the Activity panel.
  • Bring your model provider. Amazon Bedrock, Anthropic, Google Gemini, OpenAI, OpenRouter, and Ollama are supported.
  • Keep control of consequential actions. Human-in-the-loop approvals, long-term memory, file attachments, and desktop notifications are built into the workflow.
  • Grant local access explicitly. Add individual read-only or writable folders under Settings > Files; Pizza Bot receives no default home-directory access.

Installers for macOS (Intel and Apple silicon), Windows, and Linux (x64 and arm64) are attached to every release, with a SHA256SUMS to check a download against. The macOS builds are signed and notarized; the Linux packages are not signed, so verify them against the checksums.

Node.js 24 or newer is required.

npm install
npm run build
npm run dev

npm run dev starts the Vite frontend and Electron desktop shell. The shell forks and supervises its own api-server, matching the packaged application's process model. Configure a model under Settings > Providers before starting a live run.

See Running from source for isolated data roots, browser and CLI development, desktop packages, and remote backends.

Experience Best for Start here
Electron desktop Local inbox with an embedded backend npm run dev
Browser Web development or static deployment Browser development
Terminal CLI Scripts, terminals, and remote backends CLI
Standalone backend Remote Electron, browsers, containers, or Linux services Backend guide

A running api-server needs access to at least one model provider; HTTP clients do not. Configure Amazon Bedrock, Anthropic, Google Gemini, OpenAI, OpenRouter, or Ollama in Settings > Providers. Bedrock accepts an AWS profile, AWS access keys, or a Bedrock API key, with an optional region override; otherwise AWS_REGION or us-west-2 is used. Bedrock combines its native catalog with the regional Mantle catalog and routes models through Converse, OpenAI Responses or Chat Completions, or Anthropic Messages according to their advertised API family. OpenAI and Anthropic also accept custom base URLs for compatible endpoints; OpenAI can explicitly select Responses or Chat Completions, and Anthropic supports x-api-key or bearer authentication. Select a model with PIZZA_MODEL=<provider>:<id>. The desktop protects entered secrets with Electron safeStorage; server configuration persists only environment-variable references.

Add MCP servers from the UI or <PIZZA_DATA_ROOT>/.mcp.json. Add Agent Skills under <PIZZA_DATA_ROOT>/skills, or install plugins that package MCP servers and skills together. Skills become available after their declared tools are enabled and connected. A custom skill can replace a Built-in or Plugin skill with the same id without modifying the original; removing the customization reveals the Built-in or Plugin version again. The Built-in Pizza Bot Guide can explain features, suggest workflows, help with setup, and point to project documentation.

See Extending Pizza Bot for configuration, environment references, skill authoring, approval gates, and plugin installation.

apps/        api-server (Hono) | cli | desktop-shell (Electron) | web (React)
packages/    core | runtime-langgraph | inference-providers | plugin-api | plugin-sdk | storage | logging
plugins/     bundled Plugin packages and their packaging workspace
skills/      optional Built-in Agent Skills
tests/       LangGraph compatibility and protocol conformance

The production graph engine is isolated to packages/runtime-langgraph; frontends consume protocol projections rather than importing runtime or model bindings.

  • Running - desktop, browser, CLI, and package commands.
  • Extending - MCP servers, skills, and plugins.
  • Architecture - system boundaries, event model, persistence, transports, and design decisions.
  • Standalone backend - authentication, remote Electron, static browser deployment, Docker, Compose, and Kubernetes.
  • Contributing - development setup, CI checks, worktrees, releases, and layering rules.
  • Security - network defaults, credentials, local data, and plugin trust.
  • Logging - diagnostics, retention, viewing, and redaction.
  • Roadmap - exploratory directions and the principles used to evaluate them.
  • Code of Conduct - community participation expectations.
  • Local-first by default. The api-server binds to 127.0.0.1; non-loopback binding requires authentication and an explicit origin allowlist.
  • Application state stays local. Threads, checkpoints, memories, attachments, and logs live under <PIZZA_DATA_ROOT> (~/.pizza-bot-oss by default). Model and tool requests go to the providers and endpoints you configure.
  • Local folders require an explicit grant. Each folder added under Settings > Files is read-only unless you allow writes. Remote grants name paths on the backend host.
  • MCP servers and plugins are trusted. Their commands and materializers can execute with your user account's permissions. Install only sources you trust.

See SECURITY.md for the complete security model and vulnerability reporting process.

Pizza Bot was designed, built, and brought into the open by its Executive Chefs and Sous Chefs:

Joseph Dolivo (@JoeDo) Igor Fil (@igorfil)

Flávio Schuindt (@flavioschuindt) Jacob Wert (@jwert-aws) Michael Karachewski (@michaelkarachewski) Itzik Paz (@spideron)

Pizza Bot was also shaped by more than 2,000 users across Amazon who tested earlier versions and shared feedback from real-world use. Their bug reports, ideas, and candid input helped make Pizza Bot ready for a broader community. Thank you to everyone who contributed.

Apache-2.0. See NOTICE for attribution notices.

联系我们 contact @ memedata.com