Skip to main content
Every superserve run creates a session - an isolated sandbox running your agent, with its own filesystem and process state. Sessions persist after the conversation ends. Come back hours or days later and resume where you left off.

Resume a conversation

$ superserve sessions list my-agent

ID             TITLE                              STATUS   MSGS   LAST ACTIVE
--------------------------------------------------------------------------------
a1b2c3d4e5f6   Review auth module error handling   idle     4      2 minutes ago
f6e5d4c3b2a1   Refactor database migrations        idle     12     1 hour ago
$ superserve sessions resume a1b2

Resumed: "Review auth module error handling" (my-agent)

You> Did you apply both fixes?

Yes both issues in auth/middleware.py are fixed. Line 47 now returns
a generic 500 with the original exception logged via structlog. Line 82
uses `except Exception:` instead of bare `except:`.

Completed in 2.1s
The agent remembers the full conversation. Files it created or modified are still in the workspace.

How persistence works

Sessions use two layers of persistence:
  1. Workspace filesystem - Superserve persists the sandbox’s /workspace directory. Files your agent reads, writes, or modifies survive across turns and restarts.
  2. Conversation memory - Make sure your agent supports multi-turn conversations so it remembers context across messages. Most frameworks handle this automatically when configured correctly.
# Claude Agent SDK — continue_conversation enables conversation memory
options = ClaudeAgentOptions(..., continue_conversation=True)

Session lifecycle

StatusMeaningResumable?
activeProcessing a message right nowNo
idleWaiting for the next messageYes
completedEnded by userYes - fresh sandbox, same workspace
failedCrashed or timed outYes - fresh sandbox, same workspace
# View details
superserve sessions get a1b2

# End a session (workspace is preserved)
superserve sessions end a1b2

Sessions in the SDK

You can also manage sessions programmatically with the TypeScript SDK:
import Superserve from "superserve"

const client = new Superserve({ apiKey: "your-api-key" })
const session = await client.createSession("my-agent")

const r1 = await session.run("What files handle authentication?")
const r2 = await session.run("Add rate limiting to the login endpoint")

await session.end()
The session maintains context between run() and stream() calls - the agent remembers previous messages and the workspace retains all files.