pizza-bot README

The project's README from github.com/pizza-bot-app/pizza-bot. As one markdown file: README.md.

Pizza Bot

Pizza Bot

An inbox for long-running AI work.
Start or schedule a task, walk away, and come back to finished work in Unread and decisions waiting for you in Action.

CI status Latest release Apache 2.0 license Runs on macOS, Windows, and Linux Requires Node.js 24 or newer GitHub Discussions

Download · Quick start · Why Pizza Bot · Extend · Architecture · Contributing · Roadmap · Discussions

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

Agents keep working when you navigate away or disconnect; only the api-server process must remain running. A stateful DeepAgents/LangGraph runtime serves the same React experience in Electron and the browser, and the desktop app, web app, and terminal CLI all talk to the api-server over HTTP/SSE.

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

Why Pizza Bot?

Download

Installers are attached to every release, with a SHA256SUMS to check a download against.

Platform Packages Notes
macOS (Apple silicon, Intel) .dmg, .zip Signed and notarized
Windows (x64) -setup.exe
Linux (x64, arm64) .deb, .rpm Not signed; verify against SHA256SUMS

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

Security and data

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.

pizza-bot (pizza-bot-app/pizza-bot)

Searching Database…

What is this?An open-source, local-first inbox for long-running AI agent work, built with DeepAgents and LangGraph. You start or schedule a task, walk away, and come back to finished work in an Unread queue and decisions waiting in Action.
Is it a desktop app or something I open in a browser?Both, plus a terminal CLI. One stateful DeepAgents/LangGraph runtime serves the same React experience in Electron and the browser, and the desktop app, web app, and CLI all talk to the api-server over HTTP/SSE.
How do I get it running?Grab an installer from the releases page (.dmg/.zip for macOS, -setup.exe for Windows x64, .deb/.rpm for Linux) or run npm run dev with Node.js 24+. Then configure a model under Settings > Providers before your first live run.
Do I need to bring my own model provider or API key?Yes. A running api-server needs at least one provider — Amazon Bedrock, Anthropic, Google Gemini, OpenAI, OpenRouter, or Ollama — configured under Settings > Providers; the browser and CLI clients themselves need none.
What happens if I close the app while an agent is mid-task?The run keeps going: agents continue when you navigate away or disconnect, and checkpointed runs survive client disconnects. Only the api-server process must stay running, and cron or webhook triggers can even start work with no conversation open.
Is this an Amazon internal tool, or can anyone use it?Anyone. It was developed at Amazon, where more than 2,000 employees tested earlier versions, and it is now open-sourced under Apache 2.0 with signed installers for macOS, Windows, and Linux.
Where does my data end up?Stays local by default: the api-server binds to 127.0.0.1, and threads, checkpoints, memories, attachments, and logs live under ~/.pizza-bot-oss. Only requests to the providers and endpoints you configure leave the machine; non-loopback binding requires authentication.
How do I extend it with new tools or agents?Add MCP servers from the UI or a .mcp.json file, drop Agent Skills under /skills, or install plugins that bundle MCP servers and skills together. Skills become tool-scoped subagents whose progress shows up in the Activity panel.
Can the agent read my files?Only folders you explicitly grant under Settings > Files, and each stays read-only unless you allow writes. There is no default home-directory access, and remote grants name paths on the backend host.
Why call it an inbox instead of a chat app?Because results and decisions queue up for you: completed work lands in Unread, durable approval requests land in Action, and you can group threads into folders without hiding matching work from those global queues.
How are my provider API keys stored?The desktop protects entered secrets with Electron safeStorage, and server-side configuration persists only environment-variable references rather than the keys themselves.
Size
11.4 MB
Stars
500
Age
3mo
Commits · 90 Days