Concept
Capabilities
The registry of named tables and procedures the engine can address, and the data contract each one declares.
A capability is a named object the engine can address in SQL. Each has a logical name (alias), a physical binding to a data source, a column schema and access metadata. The set of capabilities is Kiwi Fabric's data contract: it turns "can we query this, push this filter down, safely write to this, and safely undo it" into an explicit, inspectable fact per table.
Kinds of capability#
| Kind | Role in queries | Role in sagas |
|---|---|---|
| Table | SELECT-able, with filter, projection and paging pushdown where the source supports it |
Insert, upsert, update and delete steps with snapshot-based compensation |
| SpRead | Runs a stored procedure; output columns are defined when you import it; inputs are supplied at query time as caller parameters | Not available in sagas |
| SpWrite | Never part of SQL generation | An execute step; parameters bind to literals, earlier step outputs or caller values; an optional compensation procedure is registered with it |
| StoredProcedure | Legacy kind; use SpRead or SpWrite for new imports |
What a capability declares#
- Schema: for each column its name, data type, whether it is the identity, whether it is nullable and (for vector stores) whether it is the vector target.
- Identity column: needed so generated keys can be referenced by later saga steps and so insert compensation can delete the right row.
- Predicate capability:
Full,BasicEqualityorNone, which controls how much filtering the planner pushes to the source. - Projection and paging pushdown: whether the source can return only the requested columns and pages.
- Write configuration (optional): which write modes are supported, whether compensation is implemented (
hasCompensation) and whether it is idempotent. - Vector configuration (vector stores such as Qdrant): embedding model, distance metric and collection parameters for semantic search queries.


Visibility and access#
Capability visibility and write access are controlled per role. SpWrite capabilities are further restricted: they appear only in saga contexts, never in the SQL query or SQL-generation pool.
Virtual tables#
A virtual table is a saved federated query registered under a name. You select from and join it like any other table. Virtual tables, together with capabilities, form the dependency graph shown by lineage. See Governance and lineage.
Where capabilities are stored#
Capabilities and data-source definitions are stored in Kiwi Fabric's registry using the Kiwi ORM, with the same schema on any supported backend. Schema migrations run idempotently on startup.