Move data between systems
Read from one place, shape it, write to another. Relational joins, change detection, and SQL-like filtering are first-class — ETL without the glue code.
Zenvara serves three jobs organisations usually buy three platforms for. You describe the work in a small YAML file; Zenvara compiles it to a typed graph, runs it on schedule, logs every step, and rolls it back if something breaks partway through.
Move data between systems
Read from one place, shape it, write to another. Relational joins, change detection, and SQL-like filtering are first-class — ETL without the glue code.
Call any service
HTTP/OpenAPI, SOAP/WSDL, GraphQL, SFTP, S3, Kafka, and every major SQL and NoSQL database — each one a typed, audited, retryable step.
Run AI as a pipeline step
One ai connector with typed inputs and outputs — not a plugin. The
model vendor is a connection field, so an LLM call composes like a
database query and switches provider without a flow rewrite.
Reason about every run
Compiled YAML catches reference and type errors before the flow ever runs. Every write connector carries a compensating action, so failed runs self-roll-back.
Pull yesterday’s orders from Postgres, ask the configured AI provider to summarise them, email the result — three connectors, three steps, one file:
status: active
using: - environment/prod - zenvara/postgresql - zenvara/ai - zenvara/email
input: date: !str
output: report: !str
steps: - $orders: invoke: postgresql.query on: warehouse with: Query: "SELECT id, customer, total FROM orders WHERE order_date = '${date}'"
- $summary: invoke: ai.call on: ai with: Prompt: "Summarise these orders in two paragraphs:\n${orders.rows}"
- $email: invoke: email.send on: smtp with: Subject: "Daily order summary for ${date}" Body: "${summary.content}"
- return: report: "${summary.content}"References between steps — ${orders.rows}, ${summary.content} — are checked at compile time, before the flow ever runs. The same file runs against dev, staging, or production by changing the environment at run time; nothing in the flow names a host or a credential.