Skip to main content
A Session holds one or more environments. See Concepts → The lifecycle for how reset / login / evaluate fit together; this page is the API reference.

Creating

Provide exactly one of envs, testcase, or artifacts.
session = plato.sessions.create(envs=[Env.simulator("espocrm")])
session = plato.sessions.create(envs=[Env.artifact("artifact-abc123")])
session = plato.sessions.create(testcase="tc_abc123")
VMs are killed timeout seconds after creation (default 1800 = 30 min):
session = plato.sessions.create(envs=[...], timeout=3600)
testcase= auto-resets. envs= does not — call session.reset() first thing yourself.

Operations

reset()

Initialize mutation logging on every env. Call this before login and the agent run — see Concepts → Reset.
session.reset()

get_state()

Flush pending writes and return mutations per env.
state = session.get_state()
for job_id, env_state in state.results.items():
    print(env_state.mutations)

evaluate(value=None)

Score the session against its linked testcase. value is required for OUTPUT scoring; omit for MUTATION-only.
result = session.evaluate()
print(result.success, result.score)

get_public_url(port=None)

Browser-accessible URLs per env, keyed by alias.
urls = session.get_public_url()
# {"crm": "https://abc123--80.sims.plato.so", ...}
Link a testcase to a session created from envs= so evaluate() has scoring config to read.
session.link_testcase("tc_abc123")

login(browser) / desktop login

For app-sim sessions, pass a Playwright Browser. For desktop sessions, use desktop.sdk.login(session) instead — session.login(browser) raises if session.desktop_env is set. Full pattern: Examples → Full evaluation.

close()

session.close()
plato.close()
Idempotent. Wrap session work in try/finally so VMs go away on crash.

Accessing envs

for env in session.envs:
    print(env.alias, env.job_id)

crm = session.get_env("crm")           # by alias
desktop = session.desktop_env          # first env where is_desktop=True (or None)

Properties

PropertyTypeDescription
session_idstrUnique session identifier
task_public_idstr | NoneTest case ID if created from testcase=
envslist[Environment]All envs in the session
desktop_envEnvironment | NoneFirst env where is_desktop=True