Independent builder and OPC operator. Currently building SoloVault — a platform that helps solo founders discover what to build by turning weak market signals into validated startup ideas.
Exactly, and it’s worse than one dict. ADK has three in-memory defaults: sessions, long-term memory (InMemoryMemoryService, per worker and never fed) and artifacts. We had to move all three: sessions to Postgres, memory to the app database scoped by agent and user, artifacts to S3 with a local file fallback (main.py).
You’re also right that Postgres alone doesn’t save the half-finished task. It saves the conversation. The run that was in flight still dies with the pod. What changed is what happens next: its input is stored, it can’t stay “running” forever, and an agent run that already called a tool can’t be replayed unless a human forces it.
If you’ve hit this kind of trap in your own stack, issues and PRs are very welcome, and every contributor is credited by name: github.com/apowerb/apowerb
Update: the one gap still open, resuming an interrupted workflow from the node it was on, is now an issue, credited to you: github.com/apowerb/apowerb/issues/480. Contributions welcome!
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Eight restarts a day feels low until you realize one of them loses a half-finished task. The Python dict default in ADK is an easy trap.
Exactly, and it’s worse than one dict. ADK has three in-memory defaults: sessions, long-term memory (InMemoryMemoryService, per worker and never fed) and artifacts. We had to move all three: sessions to Postgres, memory to the app database scoped by agent and user, artifacts to S3 with a local file fallback (main.py).
You’re also right that Postgres alone doesn’t save the half-finished task. It saves the conversation. The run that was in flight still dies with the pod. What changed is what happens next: its input is stored, it can’t stay “running” forever, and an agent run that already called a tool can’t be replayed unless a human forces it.
If you’ve hit this kind of trap in your own stack, issues and PRs are very welcome, and every contributor is credited by name: github.com/apowerb/apowerb
Update: the one gap still open, resuming an interrupted workflow from the node it was on, is now an issue, credited to you: github.com/apowerb/apowerb/issues/480. Contributions welcome!