- https://github.com/pizza-bot-app/pizza-bot/issues/99
- https://github.com/pizza-bot-app/pizza-bot/issues/100
Thanks again!
26 karma · joined March 12, 2012
- https://github.com/pizza-bot-app/pizza-bot/issues/99
- https://github.com/pizza-bot-app/pizza-bot/issues/100
Thanks again!
I could maybe see that being the case for LangChain, specifically, if you’re just thinking about abstracting the LLM provider’s APIs. But here, we’re specifically using LangGraph to handle checkpointing and state management. This is a much more difficult challenge to get right in a sufficiently complex application like Pizza Bot.
Case in point: for the internal-only version, we wrote this ourselves. It works for the most part, but there are subtle edge cases and bugs that we’ve had to tackle like a game of whack-a-mole.
For the open source release, we looked at a few frameworks and deliberately settled on LangGraph (and DeepAgents). I’ve never been so happy to throw away code. :)
In our experience so far, it’s been rock solid. Most of the issues/bugs we’ve had have come from streaming to the frontend, so a simple Cmd-R / Ctrl-R will get you back up and running without having to worry about your data being lost.
It seemed fitting to build Pizza Bot on top of LangChain’s tech, given the inspiration. :)
The bigger proof point for me was the adoption we saw from less technical folks at Amazon. Most of them immediately “got it.”
I’ve been describing Pizza Bot as an “inbox” because it captures the UX, but this does seem to cause confusion and undercuts the fact that Pizza Bot actually is an agent harness itself, not just an orchestrator of agents hosted elsewhere.
Let me know if that makes sense!
The internal-only predecessor actually did let you specify the individual model for the subagent calls. DeepAgents supports this, so it shouldn’t be a big lift. I’ll add an issue on GitHub. Thanks for the request!
In our case, we wanted to borrow the UX of email (to be intuitive to knowledge workers) but not necessarily the implementation.
Full control of your data was a design principle from the beginning, including being able to run fully offline with local models, so we didn’t want to add a dependency on email.
With that said, you can certainly hook up an MCP server and have the agents read and send emails (with human-in-the-loop approval) on your behalf.
It's an interesting alternate UX framing, for sure. It's possible there are scenarios where a different abstraction makes more sense, but I'm personally curious to see how far we can extend the email idiom!
In our case, we wanted to borrow the UX of email (to be intuitive to knowledge workers) but not necessarily the implementation.
Was there a particular workflow you had in mind here?
We do ship a QuickJS code interpreter, but otherwise, sandboxing is something we deferred until after launch to make sure we have time to get it right. LangGraph / DeepAgents, which we’re built on, already have the right hooks in place, though. :)
Think of Pizza Bot as the "harness"/interface your agents actually run in. You'd still hook up Linear via their MCP server (https://linear.app/docs/mcp) for "what needs doing." Pizza Bot is what handles the run itself (scheduling the interaction, routing tool-call approvals to you, and holding conversation/agent state).
The part that's actually different from "agent in a terminal" or "agent posting to Slack" is that it's built for having a bunch of these running at once. Instead of N terminal tabs or N ticket comment threads to figure out which agent is stuck waiting on you, they land in one inbox — jump between threads, see which ones are paused on an approval or a question, answer, and move on.
Let me know if that helps to clarify things!
Some context for the HN crowd -- Pizza Bot started as a hacky Playwright script I wrote at Amazon to stop manually logging CRM activities. It eventually grew into an internal tool with a couple thousand internal users, and we rebuilt it from scratch in order to open source it. I'd like to do a proper Show HN to tell that story soon, but in the meantime, ask me anything!