Pi Durable

(earendil.com)

121 points | by paulsmith 2 hours ago

4 comments

  • lukebuehler 1 hour ago
    Very cool to see Pi build a durable agent harness too. I've been building in this space for quite some time myself [0][1] and it is a super interesting place of innovation. Less hype-y that on-your-machine coding agents, but all major players are building products in this space: LangChain Deep Agents, Vercel Eve, OpenAI Agents API, Anthropic Managed Agents, etc.

    The main reasons are:

    1) they are "durable", i.e. easier to make long-running in an unattended way, and easier to implement recovery, monitoring, etc

    2) separating the harness from the compute brings safety and scaling benefits

    3) easier to make multi-player.

    [0] https://github.com/smartcomputer-ai/lightspeed

    [1] https://github.com/smartcomputer-ai/agent-os/

    • the_mitsuhiko 59 minutes ago
      It's quite an interesting place to hack on, because it's both a well understood problem but with so many wrinkles to it. I can't count how many earlier designs we chewed through before we ended up with the final one and I would not be surprised if we learn even more about it.
      • lukebuehler 51 minutes ago
        Yes, from your release post I can tell that you put a lot of thought into it!

        I like your structured concurrency approach with tasks, which is similar to how I do it in Lightspeed too.

        Also, the durable state implementation as documents is elegant! Question, though: why directly write/read to the store, why not abstract it and do more of a reducer/redux pattern and hide the persistence of the documents?

        • the_mitsuhiko 45 minutes ago
          > why directly write/read to the store, why not abstract it and do more of a reducer/redux pattern and hide the persistence of the documents?

          We tried so many things. At one point it pulls in so much more complexity. At one point we had half of automerge's proxy system in there. In the end we felt like this is a reasonable line to draw, but we will see!

        • badlogic 27 minutes ago
          Things are still not settled, and while the API looks like store i/o it's actually more similar to Immer's drafts, just with a different encoding, as JSON patch can't deal with the kinds of data we encounter in our workloads, at least not in a way that keeps memory and perf within some bounds.

          The good thing is that this more low level API can be easily papered over with a nice sugary thing.

      • rcarmo 48 minutes ago
        I'm loving it. Already converted a few of my smaller tools to it, and am ripping out the guts of piclaw to replace them (in time)
  • ireadmevs 57 minutes ago
    > The entire source code, without tests, is about 15,000 lines, which comes out to about 150,000 tokens with GPT and about 250,000 with Claude.

    Woah, that big of a difference when it comes to token counting?

    • dnoberon 43 minutes ago
      Yeah don't get anyone going on the labs different tokenization schemes lol
  • vmg12 25 minutes ago
    Brilliant. I wish the the durable application state wasn't restricted to just the json documents though. There should be some sort of integrated way of implementing the outbox pattern so external stores can be synchronized with the conversation state.
  • saagarjha 34 minutes ago
    Nice! I made my own version of this for Pi but I’m excited to see if I can just replace it lol