Kailash DataFlow - Zero-Config Database Framework
DataFlow is a zero-config database framework built on Kailash Core SDK that automatically generates workflow nodes from database models.
Overview
- Automatic Node Generation: 11 nodes per model (@db.model decorator)
- Multi-Database Support: PostgreSQL, MySQL, SQLite (SQL) + MongoDB (Document) + pgvector (Vector Search)
- Enterprise Features: Multi-tenancy, multi-instance isolation, transactions
- Zero Configuration: String IDs preserved, deferred schema operations
- Developer Experience: Enhanced errors (DF-XXX codes), strict mode validation, debug agent, CLI tools
Quick Start
Express API (Recommended for Simple CRUD)
from dataflow import DataFlow
# Zero-config initialization
db = DataFlow("sqlite:///app.db", auto_migrate=True)
@db.model
class User:
name: str
email: str
active: bool = True
await db.initialize()
# Async Express (default) — 23x faster than workflow primitives
result = await db.express.create("User", {"name": "Alice", "email": "alice@example.com"})
user = await db.express.read("User", str(result["id"]))
users = await db.express.list("User", {"active": True})
count = await db.express.count("User")
await db.express.update("User", str(result["id"]), {"name": "Bob"})
await db.express.delete("User", str(result["id"]))
# Sync Express (CLI scripts, non-async contexts)
result = db.express_sync.create("User", {"name": "Alice", "email": "alice@example.com"})
users = db.express_sync.list("User", {"active": True})
Workflow API (For Multi-Step Operations)
Use WorkflowBuilder only when you need multiple nodes with data flow between them.
from kailash.workflow.builder import WorkflowBuilder
from kailash.runtime.local import LocalRuntime
# Multi-node workflow with connections
workflow = WorkflowBuilder()
workflow.add_node("User_Create", "create_user", {
"data": {"name": "John", "email": "john@example.com"}
})
# Execute with context manager (recommended for resource cleanup)
with LocalRuntime() as runtime:
results, run_id = runtime.execute(workflow.build())
user_id = results["create_user"]["result"] # Access pattern
Generated Nodes (11 per model)
Each @db.model class generates:
{Model}_Create - Create single record
{Model}_Read - Read by ID
{Model}_Update - Update record
{Model}_Delete - Delete record
{Model}_List - List with filters
{Model}_Upsert - Insert or update (atomic)
{Model}_Count - Efficient COUNT(*) queries
{Model}_BulkCreate - Bulk insert
{Model}_BulkUpdate - Bulk update
{Model}_BulkDelete - Bulk delete
{Model}_BulkUpsert - Bulk upsert
Critical Rules
- ✅ String IDs preserved (no UUID conversion)
- ✅ Deferred schema operations (safe for Docker/async)
- ✅ Multi-instance isolation (one DataFlow per database)
- ✅ Result access:
results["node_id"]["result"]
- ❌ NEVER use truthiness checks on filter/data parameters (empty dict
{} is falsy)
- ❌ ALWAYS use key existence checks:
if "filter" in kwargs instead of if kwargs.get("filter")
- ❌ NEVER use direct SQL when DataFlow nodes exist
- ❌ NEVER use SQLAlchemy/Django ORM alongside DataFlow
Reference Documentation
Getting Started
- dataflow-quickstart - Quick start guide
- dataflow-installation - Installation and setup
- dataflow-models - Defining models with @db.model
- dataflow-connection-config - Database connection
Core Operations
- dataflow-crud-operations - Create, Read, Update, Delete
- dataflow-queries - Query patterns and filtering
- dataflow-aggregation - SQL aggregation queries (COUNT/SUM/AVG/MIN/MAX GROUP BY)
- dataflow-bulk-operations - Batch operations
- dataflow-transactions - Transaction management
- dataflow-connection-isolation - ⚠️ CRITICAL: ACID guarantees
Advanced Features
Data Fabric Engine
- dataflow-fabric-engine - External data sources (
db.source()), derived products (@db.product()), fabric runtime (db.start()), 5 source adapters, webhooks, SSRF protection, observability
Enterprise Features
- dataflow-derived-models - Application-layer materialized views (
@db.derived_model)
- dataflow-file-import - File ingestion (CSV/Excel/Parquet/JSON) +
db.express.import_file()
- dataflow-validation-dsl - Declarative validation (
__validation__ dict)
- dataflow-express-cache - Model-scoped Express caching with TTL
- dataflow-read-replicas - Read/write splitting with
read_url
- dataflow-retention - Data retention (archive/delete/partition policies)
- dataflow-events - Write event emission + Core SDK EventBus integration
Advanced Features
- dataflow-multi-instance - Multiple database instances
- dataflow-multi-tenancy - Multi-tenant architectures
- dataflow-existing-database - Working with existing databases
- dataflow-migrations-quick - Database migrations
- dataflow-custom-nodes - Custom database nodes
- dataflow-sqlite-concurrency - SQLite connection pooling, WAL mode, read/write splitting, memory DB URI patterns
Developer Experience Tools
- dataflow-strict-mode - Build-time validation (4-layer, OFF/WARN/STRICT)
- dataflow-debug-agent - Intelligent error analysis (5-stage pipeline)
- ErrorEnhancer - Automatic error enhancement (40+ DF-XXX codes)
- Inspector API - Self-service debugging (18 introspection methods)
- CLI Tools - dataflow-validate, dataflow-analyze, dataflow-debug (5 commands)
Connection Pool & Monitoring
- dataflow-connection-config - Pool auto-scaling, env vars, override scenarios
- dataflow-monitoring - Pool utilization, leak detection, health checks, diagnostics
ML Integration
- dataflow-ml-integration - kailash-ml FeatureStore integration (ConnectionManager, point-in-time queries, polars interop)
Troubleshooting
- dataflow-gotchas - Common pitfalls
Database Support Matrix
| Database |
Type |
Nodes/Model |
Driver |
| PostgreSQL |
SQL |
11 |
asyncpg |
| MySQL |
SQL |
11 |
aiomysql |
| SQLite |
SQL |
11 |
aiosqlite |
| MongoDB |
Document |
8 |
Motor |
| pgvector |
Vector |
3 |
pgvector |
Not an ORM: DataFlow generates workflow nodes, not ORM models. Uses string-based result access and integrates with Kailash's workflow execution model.
Integration Patterns
With Nexus (Multi-Channel)
from dataflow import DataFlow
from nexus import Nexus
db = DataFlow(connection_string="...")
@db.model
class User:
id: str
name: str
# Auto-generates API + CLI + MCP
nexus = Nexus(db.get_workflows())
nexus.run() # Instant multi-channel platform
With Core SDK (Custom Workflows)
from dataflow import DataFlow
from kailash.workflow.builder import WorkflowBuilder
db = DataFlow(connection_string="...")
# Use db-generated nodes in custom workflows
workflow = WorkflowBuilder()
workflow.add_node("User_Create", "user1", {...})
When to Use This Skill
Use DataFlow when you need to:
- Perform database operations in workflows
- Generate CRUD APIs automatically (with Nexus)
- Implement multi-tenant systems
- Work with existing databases
- Build database-first applications
- Handle bulk data operations
Related Skills
Support
For DataFlow-specific questions, invoke:
dataflow-specialist - DataFlow implementation and patterns
testing-specialist - DataFlow testing strategies (NO MOCKING policy)
- ``decide-framework
skill - Choose between Core SDK and DataFlow
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: dataflow3description: Kailash DataFlow - zero-config data operations framework with automatic model-to-node generation and Data Fabric Engine. Use when asking about 'database operations', 'DataFlow', 'database models', 'CRUD operations', 'bulk operations', 'database queries', 'database migrations', 'multi-tenancy', 'multi-instance', 'database transactions', 'PostgreSQL', 'MySQL', 'SQLite', 'MongoDB', 'pgvector', 'vector search', 'document database', 'RAG', 'semantic search', 'existing database', 'database performance', 'database deployment', 'database testing', 'TDD with databases', 'external data sources', 'data products', 'db.source', 'db.product', 'db.start', 'fabric engine', 'source adapters', 'REST source', 'webhooks', or 'data fabric'. DataFlow is NOT an ORM - it generates 11 workflow nodes per SQL model, 8 nodes for MongoDB, and 3 nodes for vector operations. Use when this capability is needed.4---56# Kailash DataFlow - Zero-Config Database Framework78DataFlow is a zero-config database framework built on Kailash Core SDK that automatically generates workflow nodes from database models.910## Overview1112- **Automatic Node Generation**: 11 nodes per model (@db.model decorator)13- **Multi-Database Support**: PostgreSQL, MySQL, SQLite (SQL) + MongoDB (Document) + pgvector (Vector Search)14- **Enterprise Features**: Multi-tenancy, multi-instance isolation, transactions15- **Zero Configuration**: String IDs preserved, deferred schema operations16- **Developer Experience**: Enhanced errors (DF-XXX codes), strict mode validation, debug agent, CLI tools1718## Quick Start1920### Express API (Recommended for Simple CRUD)2122```python23from dataflow import DataFlow2425# Zero-config initialization26db = DataFlow("sqlite:///app.db", auto_migrate=True)2728@db.model29class User:30 name: str31 email: str32 active: bool = True3334await db.initialize()3536# Async Express (default) — 23x faster than workflow primitives37result = await db.express.create("User", {"name": "Alice", "email": "alice@example.com"})38user = await db.express.read("User", str(result["id"]))39users = await db.express.list("User", {"active": True})40count = await db.express.count("User")41await db.express.update("User", str(result["id"]), {"name": "Bob"})42await db.express.delete("User", str(result["id"]))4344# Sync Express (CLI scripts, non-async contexts)45result = db.express_sync.create("User", {"name": "Alice", "email": "alice@example.com"})46users = db.express_sync.list("User", {"active": True})47```4849### Workflow API (For Multi-Step Operations)5051Use WorkflowBuilder only when you need multiple nodes with data flow between them.5253```python54from kailash.workflow.builder import WorkflowBuilder55from kailash.runtime.local import LocalRuntime5657# Multi-node workflow with connections58workflow = WorkflowBuilder()59workflow.add_node("User_Create", "create_user", {60 "data": {"name": "John", "email": "john@example.com"}61})6263# Execute with context manager (recommended for resource cleanup)64with LocalRuntime() as runtime:65 results, run_id = runtime.execute(workflow.build())66 user_id = results["create_user"]["result"] # Access pattern67```6869## Generated Nodes (11 per model)7071Each `@db.model` class generates:72731. `{Model}_Create` - Create single record742. `{Model}_Read` - Read by ID753. `{Model}_Update` - Update record764. `{Model}_Delete` - Delete record775. `{Model}_List` - List with filters786. `{Model}_Upsert` - Insert or update (atomic)797. `{Model}_Count` - Efficient COUNT(\*) queries808. `{Model}_BulkCreate` - Bulk insert819. `{Model}_BulkUpdate` - Bulk update8210. `{Model}_BulkDelete` - Bulk delete8311. `{Model}_BulkUpsert` - Bulk upsert8485## Critical Rules8687- ✅ String IDs preserved (no UUID conversion)88- ✅ Deferred schema operations (safe for Docker/async)89- ✅ Multi-instance isolation (one DataFlow per database)90- ✅ Result access: `results["node_id"]["result"]`91- ❌ NEVER use truthiness checks on filter/data parameters (empty dict `{}` is falsy)92- ❌ ALWAYS use key existence checks: `if "filter" in kwargs` instead of `if kwargs.get("filter")`93- ❌ NEVER use direct SQL when DataFlow nodes exist94- ❌ NEVER use SQLAlchemy/Django ORM alongside DataFlow9596## Reference Documentation9798### Getting Started99100- **[dataflow-quickstart](dataflow-quickstart.md)** - Quick start guide101- **[dataflow-installation](dataflow-installation.md)** - Installation and setup102- **[dataflow-models](dataflow-models.md)** - Defining models with @db.model103- **[dataflow-connection-config](dataflow-connection-config.md)** - Database connection104105### Core Operations106107- **[dataflow-crud-operations](dataflow-crud-operations.md)** - Create, Read, Update, Delete108- **[dataflow-queries](dataflow-queries.md)** - Query patterns and filtering109- **[dataflow-aggregation](dataflow-aggregation.md)** - SQL aggregation queries (COUNT/SUM/AVG/MIN/MAX GROUP BY)110- **[dataflow-bulk-operations](dataflow-bulk-operations.md)** - Batch operations111- **[dataflow-transactions](dataflow-transactions.md)** - Transaction management112- **[dataflow-connection-isolation](dataflow-connection-isolation.md)** - ⚠️ CRITICAL: ACID guarantees113114### Advanced Features115116### Data Fabric Engine117118- **[dataflow-fabric-engine](dataflow-fabric-engine.md)** - External data sources (`db.source()`), derived products (`@db.product()`), fabric runtime (`db.start()`), 5 source adapters, webhooks, SSRF protection, observability119120### Enterprise Features121122- **[dataflow-derived-models](dataflow-derived-models.md)** - Application-layer materialized views (`@db.derived_model`)123- **[dataflow-file-import](dataflow-file-import.md)** - File ingestion (CSV/Excel/Parquet/JSON) + `db.express.import_file()`124- **[dataflow-validation-dsl](dataflow-validation-dsl.md)** - Declarative validation (`__validation__` dict)125- **[dataflow-express-cache](dataflow-express-cache.md)** - Model-scoped Express caching with TTL126- **[dataflow-read-replicas](dataflow-read-replicas.md)** - Read/write splitting with `read_url`127- **[dataflow-retention](dataflow-retention.md)** - Data retention (archive/delete/partition policies)128- **[dataflow-events](dataflow-events.md)** - Write event emission + Core SDK EventBus integration129130### Advanced Features131132- **[dataflow-multi-instance](dataflow-multi-instance.md)** - Multiple database instances133- **[dataflow-multi-tenancy](dataflow-multi-tenancy.md)** - Multi-tenant architectures134- **[dataflow-existing-database](dataflow-existing-database.md)** - Working with existing databases135- **[dataflow-migrations-quick](dataflow-migrations-quick.md)** - Database migrations136- **[dataflow-custom-nodes](dataflow-custom-nodes.md)** - Custom database nodes137- **[dataflow-sqlite-concurrency](dataflow-sqlite-concurrency.md)** - SQLite connection pooling, WAL mode, read/write splitting, memory DB URI patterns138139### Developer Experience Tools140141- **[dataflow-strict-mode](dataflow-strict-mode.md)** - Build-time validation (4-layer, OFF/WARN/STRICT)142- **[dataflow-debug-agent](dataflow-debug-agent.md)** - Intelligent error analysis (5-stage pipeline)143- **ErrorEnhancer** - Automatic error enhancement (40+ DF-XXX codes)144- **Inspector API** - Self-service debugging (18 introspection methods)145- **CLI Tools** - dataflow-validate, dataflow-analyze, dataflow-debug (5 commands)146147### Connection Pool & Monitoring148149- **[dataflow-connection-config](dataflow-connection-config.md)** - Pool auto-scaling, env vars, override scenarios150- **[dataflow-monitoring](dataflow-monitoring.md)** - Pool utilization, leak detection, health checks, diagnostics151152### ML Integration153154- **[dataflow-ml-integration](dataflow-ml-integration.md)** - kailash-ml FeatureStore integration (ConnectionManager, point-in-time queries, polars interop)155156### Troubleshooting157158- **[dataflow-gotchas](dataflow-gotchas.md)** - Common pitfalls159160## Database Support Matrix161162| Database | Type | Nodes/Model | Driver |163| ---------- | -------- | ----------- | --------- |164| PostgreSQL | SQL | 11 | asyncpg |165| MySQL | SQL | 11 | aiomysql |166| SQLite | SQL | 11 | aiosqlite |167| MongoDB | Document | 8 | Motor |168| pgvector | Vector | 3 | pgvector |169170**Not an ORM**: DataFlow generates workflow nodes, not ORM models. Uses string-based result access and integrates with Kailash's workflow execution model.171172## Integration Patterns173174### With Nexus (Multi-Channel)175176```python177from dataflow import DataFlow178from nexus import Nexus179180db = DataFlow(connection_string="...")181@db.model182class User:183 id: str184 name: str185186# Auto-generates API + CLI + MCP187nexus = Nexus(db.get_workflows())188nexus.run() # Instant multi-channel platform189```190191### With Core SDK (Custom Workflows)192193```python194from dataflow import DataFlow195from kailash.workflow.builder import WorkflowBuilder196197db = DataFlow(connection_string="...")198# Use db-generated nodes in custom workflows199workflow = WorkflowBuilder()200workflow.add_node("User_Create", "user1", {...})201```202203## When to Use This Skill204205Use DataFlow when you need to:206207- Perform database operations in workflows208- Generate CRUD APIs automatically (with Nexus)209- Implement multi-tenant systems210- Work with existing databases211- Build database-first applications212- Handle bulk data operations213214## Related Skills215216- **[01-core-sdk](../01-core-sdk/SKILL.md)** - Core workflow patterns (canonical node pattern)217- **[03-nexus](../03-nexus/SKILL.md)** - Multi-channel deployment218- **[04-kaizen](../04-kaizen/SKILL.md)** - AI agent integration219- **[17-gold-standards](../17-gold-standards/SKILL.md)** - Best practices220221## Support222223For DataFlow-specific questions, invoke:224225- `dataflow-specialist` - DataFlow implementation and patterns226- `testing-specialist` - DataFlow testing strategies (NO MOCKING policy)227- ``decide-framework` skill` - Choose between Core SDK and DataFlow228229---230> Converted and distributed by [TomeVault](https://tomevault.io/claim/integrum-global) — claim your Tome and manage your conversions.231<!-- tomevault:4.0:skill_md:2026-04-13 -->