Skip to content
Browse documentation
Execution engines

Engine overview

Choose where data is loaded and how generated queries are executed.

Engine selection

Set the engine in the AVA constructor. In the JavaScript API, omitting it always selects DuckDB; source type does not change this selection automatically.

EngineSourcesRuntime
DuckDBInline data, files, MySQL, PostgreSQL, SQLite, MongoDBNode.js
JavaScriptInline CSV, JSON, textNode.js and browser
PythonInline CSV / JSON; CSV / JSON / Parquet / Excel filesNode.js + Python executor
SupabaseSupabase projectNode.js; remote PostgreSQL
ClickHouseClickHouse databaseNode.js; remote ClickHouse

Engine configuration

FieldTypeRequiredDefault / behavior
engine.type'duckdb' / 'javascript' / 'python' / 'supabase' / 'clickhouse' / a registered nameWhen engine is providedOmitting engine selects DuckDB.

Additional fields depend on type: DuckDB options and Python options. JavaScript, Supabase, and ClickHouse accept no additional constructor engine fields. Database credentials belong to source parameters.

To run Python in your own service, see Supply a Python executor. To supply an engine from your application, see Custom engines.

Shared contract

Engines load data, discover schema, compute profiles, generate queries from supplied context, execute them, and release resources. AVA owns schema/profile caching and decides when discovery or computation is needed.

Applications normally use the AVA API. Implementers should follow the engine contract, including separate load() and schema() methods.

Registration

The Node.js entry point registers all five engines; the browser entry point registers JavaScript only. The registry keeps the core AVA class independent of platform-specific imports.

For SDK extensions, call registerEngine('sales', SalesEngine), then select engine: { type: 'sales' }. See Custom engines for the contract and a complete example. The CLI accepts only built-in engine names.