What is VirtuousAI?
The execution backbone for AI-powered data workflows
What is VirtuousAI?
VirtuousAI is the execution backbone for the BAIO platform — a set of composable primitives designed for reliable background data extraction, agentic tool execution, and automation workflows.
Go Further Faster
VirtuousAI helps you close the execution gap between knowing what to do and actually achieving it. Every action makes the next smarter. Every decision makes your operations stronger.
Design Principles
| Principle | What It Means |
|---|---|
| Composable | Same primitives work across LLM tool calls, automations, and direct API requests |
| Reliable | Lease-based ownership, cooperative cancellation, and watchdog recovery ensure jobs complete or fail gracefully |
| Strongly Typed | Pydantic models provide compile-time and runtime validation |
| Multi-Tenant | All resources are tenant-scoped with strict isolation |
| Secure | Envelope encryption for credentials, tenant isolation at every layer |
Core Primitives
VirtuousAI is built around four composable primitives that work together:
Templates
Global, immutable blueprints that define how to configure actions or connections
Connections
Tenant-scoped, encrypted credentials for external systems with flexible resolution
Actions
Saved, reusable action configurations that execute as ActionRuns
Automations
DAG orchestration of multiple actions with triggers and conditional logic
How Primitives Work Together
Templates provide blueprints. When you use a template, a snapshot is stored for audit purposes — even if the template changes later, you know exactly what configuration was used.
Connections store encrypted credentials and can be referenced flexibly: by ID, by slug (LLM-friendly), or by provider (auto-resolves to your default).
Actions are atomic units of work. Each ActionRun represents a single operation with defined inputs and outputs. Complex workflows are composed by Automations, which orchestrate multiple actions.
Automations own all DAG/workflow logic — branching, fan-out, dependencies, and conditional execution. Actions stay simple; composition happens at the automation layer.
Execution Entry Points
The same primitives work uniformly across all entry points:
| Entry Point | How It Works |
|---|---|
| Chat (LLM Tools) | Agent calls a tool → ActionRun created with turn_id + message_id |
| Automation Steps | DAG executes → ActionRun created with automation_run_id + step_key |
| Direct API | POST /action-runs → ActionRun created and executed |
| Scheduled | Cron trigger → Automation runs → ActionRuns created |
What You Can Build
| Use Case | Primitives Used |
|---|---|
| Data Extraction | Connection + Action (dlt_extract) → Bronze parquet files |
| AI-Powered Workflows | Chat → Action → Connection → Results |
| ETL Pipelines | Automation with extract → transform → load steps |
| Human-in-the-Loop | Actions with approval policies → User approves → Execution continues |