Project-owned top-level runs
Create oneSovaraClient for a stable project name. Use one top-level run for
one user request, conversation turn, eval sample, batch job, or other execution
you want to inspect.
AsyncLocalStorage scope, and finalizes the run in
finally.
For a durable conversation or job, pass an application-owned correlation ID.
Reusing it within the same project appends to the canonical Sovara run.
runKey. clientRunId remains accepted as a
deprecated alias during the compatibility period. The returned runId is
Sovara’s durable canonical UUID.
Steps and explicit tracing
Supported provider, framework tool, and MCP calls inside a run become ordered steps. Wrap an important uncaptured application boundary withtrace:
Subruns
Usesovara_client.subrun(...) for child agents, delegated branches, parallel
work, and coherent multi-step phases:
Run metadata
Lessons
Automatic lesson injection is project-wide by default for supported model calls. Narrow retrieval with the run’slessonScope option:
sovara_client.lessonScope(...).
Sovara retrieves lessons independently for each supported model call and adds a
supplementary user message only to the copied request sent to the provider. It
does not change the conversation objects owned by your app.
Logs and concurrency
Log capture is enabled by default. Pass{ captureLogs: false } as the third
argument to run() for concurrent top-level runs to avoid mixing process output.