We're thinking a lot about how we could provide a "Convex" like experience where we guide your coding agents to set up your agents in a way that maximizes the ability to rollback. For example, instead of continuously taking action, it's better that agents gather all required context, do the work needed to make a decision (research, synthesize, etc.), and then only take action in the real world at the end. If an agent did bad work, then this makes it easy to rollback to the point where the agent gathered all the context, correct it's instructions, and try again
One thing we've run into: the filesystem abstraction works well for code artifacts, but when agents interact with external services (APIs, databases), you need a separate "action journal" that logs intended mutations before executing them. This gives you rollback even for side effects that aren't file-based.
The harder unsolved problem is multi-agent state coordination. When Agent A writes to a shared workspace and Agent B reads it, the filesystem gives you structural persistence but not semantic ordering. Have you thought about adding lightweight event ordering (like a simple monotonic sequence) to the filesystem layer? Without it, agents can read stale state even when files are fresh.
Congrats on the launch — the decoupled storage model is the right primitive.
> Our biggest pain point with hosting agents was that you'd need to stitch together multiple pieces: packaging your agent, running it in a sandbox, streaming messages back to users, persisting state across turns, and managing getting files to and from the agent workspace.
The k8s ecosystem already handles most this and your agent framework the agent specifics. What you are talking about is valid, though a different axis imo. Quality and guardrails are important, but not discussed by OP.