The ownership model
The Python SDK exposes two top-level building blocks:SovaraClientowns project identity and run-scoped helpers.tracewraps application functions that should appear as steps.
Top-level runs
Use one top-level run for one user request, conversation turn, eval sample, batch job, or other execution you want to inspect.with and
async with.
For a durable conversation or workflow, pass an application-owned correlation
ID. Reusing it appends new steps to the same canonical Sovara run.
client_run_id; use a stable ID such
as a chat, ticket, or job ID.
Steps and explicit tracing
Inside a run, supported provider and MCP calls become ordered steps with input, output, latency, status, and error data.trace adds the same visibility to
important application work that automatic instrumentation does not capture.
Subruns
Subruns organize child agents, delegated branches, parallel work, and coherent multi-step phases under the active run.client.run(...) calls are ignored with a warning. Use
client.subrun(...) when the child work should appear in the run tree.
Run metadata
Add the user-visible input/output and small scalar metrics from inside a run.Lessons
Automatic lesson injection is project-wide by default for supported model calls. Narrow retrieval withlesson_scope on a run or subrun:
inject_lessons(...) returns a prompt-ready string or "". Manual injection
suppresses automatic injection for that model call.
Controls and concurrency
sovara_client.with_context(...).
For concurrent top-level runs, set capture_logs=False to avoid mixing process
stdout/stderr between runs.