Hacker News 熱門精选81

Show HN: Pizza Bot – An inbox for AI agents that work in the background

· 28天前
跳到正文

精选理由

深度 88 / 可操作性 84,来自 Hacker News 熱門。

AI 摘要

Hi HN - long-time lurker (since 2012!), first time poster. Pizza Bot is a self-hosted desktop app for Mac, Windows, and Linux that runs AI agents in the background and exposes them through an email-like UI. Finished work shows up in Unread, and anything waiting on your approval shows up in Action. It's Apache 2.0-licensed, there's no signup and no telemetry, and you bring your own model provider: Anthropic, Amazon Bedrock, Google Gemini, OpenAI, OpenRouter, or a local model through Ollama. There are builds on the releases page, or you can run it from source. Pizza Bot started as an internal passion project I worked on with a small team at Amazon. The whole thing came out of my frustration at having to manually log CRM activities through a browser form. I built a simple REST API called "JoeBot" that connected to my authenticated browser session over CDP and filled out the form for me using Playwright. Then I hacked up a quick Obsidian plugin so I could trigger it from my local notes (no AI and no MCP servers involved). This caught on quickly. My fellow AWS Solutions Architect Igor Fil joined up with me, and we rebranded the project as "Pizza Bot," named after Amazon's two-pizza teams. We started seeing what other automations we could build. We found a GraphQL API we could query and hacked up some "recipes" to pull data out of the CRM to help with meeting prep. That worked great, and it was right around the time MCP servers seemed to be taking off, so we decided to expose Pizza Bot as an MCP server instead, so it would be available to AI tools through natural language. This was a decent solution for technical users, but the Account Managers who live inside our CRM system wanted something too. We decided to rebuild Pizza Bot as an Electron desktop app modeled after an email inbox, so it would be familiar to non-technical users and would run on both Mac and Windows. We also bundled internal MCP servers as OCI images and hosted them in Amazon ECR as an "addon marketplace" so users could install them with one click without having to set up Amazon developer tooling. The project took off organically and expanded outside of AWS into the wider Amazon organization globally. More than 2,000 people ended up using it for meeting prep, email drafting, Slack summaries, CRM logging, prioritizing their day, and web research. Once apps like Claude Cowork and Amazon's own Quick Desktop came out, we realized the real growth opportunity was outside of Amazon. Rather than try to rip out the Amazon-specific integrations, we rebuilt Pizza Bot once more as an open source project. We leaned on coding agents heavily, which is the only reason a team our size could pull off a full rewrite. I'm pleased to say it's finally public, and we're hoping to bring in community members and see where it goes. We'd like to do for knowledge workers what Claude Code and Codex have done for programmers. A couple of things to know up front. Most of what made Pizza Bot useful on day one inside Amazon came from that internal catalog of skills and MCP servers for Amazon's own systems, and none of it could come out with the app. So it ships thinner than the version those 2,000 people used, and building that catalog back up for tools other people actually use is where we need the most help. It's also a community project and not an AWS service, so there's no support or SLA behind it. The Windows and Linux builds aren't signed yet either. On the technical side, Pizza Bot is a server and a client. The desktop app bundles both, or you can point a client at a remote backend; personally, I self-host the server on my home network and reach it from my phone over Tailscale. The server owns the thread lifecycle and checkpoints state with DeepAgents and LangGraph, and clients rehydrate from it as needed, so you can disconnect mid-run and pick the thread back up from another client. Approval pauses outlive the session that created them and collect in an Action filter, so you can answer an hour later from a different device. The agent you talk to has a sandboxed QuickJS interpreter that can reach your filesystem only if you grant it a folder, but its main job is to delegate. Each subagent is a 1:1 mapping of a Skill, and an Activity bar shows that subagent and the tool calls it's making as it works. Memory is opt-in and stored as plain markdown files on your machine. Every tool call is explicit, including looking up a memory - we err on the side of transparency to reduce surprises. Tools come from MCP servers, and skills are ordinary SKILL.md files with a per-tool approval policy, so existing skills that don't require a code interpreter should still work. What I'd most like to hear about is where the app itself gets in your way, the kind of problem you can't fix by writing a skill or an MCP server. I'm around today to answer questions! Comments URL: https://news.ycombinator.com/item?id=49713894 Points: 15 # Comments: 5

正文

Pizza Bot OSS

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.

Why Pizza Bot?

  • 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.

Download

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.

Quick start

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.

Ways to run

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.

Extend it

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.

Project layout

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.

Documentation

  • 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.

Security and data

  • 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.

Contributors

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

Executive Chefs

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

Sous Chefs

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.

License

Apache-2.0. See NOTICE for attribution notices.

查看原文(Hacker News 熱門)