In environments like Cloud Run or containers without persistent volumes, LocalFileStore either fails or falls back to InMemoryFileStore, which means the full EventLog (including tool_call/tool_result events) is lost between requests. This makes proper multi-turn resume impossible.
Proposal: add PostgreSQLFileStore as an optional FileStore backend (pip install openhands-sdk[postgresql]) that persists the EventLog to a PostgreSQL table, namespaced by conversation ID. Locking uses pg_try_advisory_lock so it's safe across multiple processes/instances.
store = PostgreSQLFileStore(dsn=..., namespace=str(conversation_id))
conv = LocalConversation(agent=agent, workspace=workspace, file_store=store)
Happy to open a PR if this direction looks reasonable.
In environments like Cloud Run or containers without persistent volumes,
LocalFileStoreeither fails or falls back toInMemoryFileStore, which means the full EventLog (includingtool_call/tool_resultevents) is lost between requests. This makes proper multi-turn resume impossible.Proposal: add
PostgreSQLFileStoreas an optionalFileStorebackend (pip install openhands-sdk[postgresql]) that persists the EventLog to a PostgreSQL table, namespaced by conversation ID. Locking usespg_try_advisory_lockso it's safe across multiple processes/instances.Happy to open a PR if this direction looks reasonable.