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

All engines implement AnalysisEngine: language, load(), getDSL(), execute(), and dispose(). profile() is optional in the interface and implemented by the built-in engines.

These are engine-level methods. Application code normally uses AVA.source(), AVA.translate(), and AVA.query() rather than calling the engine directly.

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.