1 · Name
DoneLetters, digits and _ . : / < > -, up to 128. Dvar sees this name in health checks, so don't include customer names or secrets. Only a member creates a workflow.
Dvar uses this to name topics and draft the rubric. Don't include personal data. You can change it later from Traffic.
2 · Which models should Dvar use to score your traffic?
DoneChange them on the workflow's Models page.
3 · How do we capture traffic?
Done+ import dvar+ dvar.configure(workflow="abcl-servicing-intent")from openai import AzureOpenAI- client = AzureOpenAI(...)+ client = dvar.wrap(AzureOpenAI(...))+ @dvar.trace # one turndef answer(messages):return client.chat.completions.create(model="gpt-4.1", messages=messages)def handle(chat_id, messages):+ with dvar.session(conversation_id=chat_id): # one request of the chatreturn answer(messages)
DVAR_COLLECTOR_URL=https://dvar-collector.bank.internal DVAR_INGEST_TOKEN=dvar_ingest_••••••••••••••••
Create token makes one for this workflow. It is shown once; Dvar keeps only its last 4. Only a member creates a token.
Get the SDK: it is the dvar-sdk package, not on PyPI yet. Install it from a dvarapp checkout with pip install ./sdk/python, or pip install "dvar-sdk @ git+https://github.com/dvarai/dvarapp#subdirectory=sdk/python".
4 · Connect
DoneConnector pairing
Paired · data plane dp_3f9a…c21e
Last health check 18 s ago · every 60 s · portal.dvarlabs.ai
- An admin opens portal.dvarlabs.ai › Data planes › Get pairing code. It is valid for 15 minutes and works once.
- The admin enters it on this data plane's Dvar connector.
- The Dvar connector swaps it for a revocable data-plane credential (
dvar_dp_…). Never advar_live_key.
Pairing is once per data plane, not per workflow. Health checks send only the workflow name and call counts.
5 · Data sharing
Off by defaultThe Dvar connector's local policy file decides: the file the Dvar connector starts with (-policy; in make demo, link/policy.json in the run folder). The default allows only pairing and health checks to portal.dvarlabs.ai. Every call is logged, allowed or denied. You can change this later.
Masked text (<PERSON_1> stays a token). Once images are on, judge, alternative reply and comparison calls also send the customer's images unmasked. Topic naming and rubric drafting send text only. One rule per provider and purpose covers every workflow. Never a Dvar origin.
- OpenRouter
- judge · Not allowed
- topic naming · Not allowed
- rubric drafting · Not allowed
- alternative reply · Not allowed
- comparison · Not allowed
{
"message": "model_call",
"purpose": "judge",
"destination": "https://openrouter.ai",
"provider": "openrouter"
},
{
"message": "model_call",
"purpose": "topic_naming",
"destination": "https://openrouter.ai",
"provider": "openrouter"
},
{
"message": "model_call",
"purpose": "rubric_drafting",
"destination": "https://openrouter.ai",
"provider": "openrouter"
},
{
"message": "model_call",
"purpose": "alternative_reply",
"destination": "https://openrouter.ai",
"provider": "openrouter"
},
{
"message": "model_call",
"purpose": "comparison",
"destination": "https://openrouter.ai",
"provider": "openrouter"
}Keep the existing rules. Fill in <your model endpoint> if it is there: a policy that fails its schema takes the Dvar connector fully offline.
Allowed by the default policy; a connector admin can remove the rules. Pairing sends a one-time code; health checks send workflow names and call counts only.
Ids and counts only. Lets a member start a talk with a Dvar engineer.
Stored, masked conversations of this workflow. Never the original values.
Turning one on drafts a rule for egress-policy.json. A connector admin applies it. The console does not change the policy.