VibeSQL
SQL:1999 compliant database in Rust, 100% AI-generated
Live Demo | CLI Guide | Python Bindings | Conformance Report
Highlights
- 100% SQL:1999 Core compliance - 739/739 sqltest tests passing
- 100% SQLLogicTest conformance - 623 files (~5.9M tests)
- 4,800+ unit tests - comprehensive test coverage
- Real-time subscriptions - Convex-like reactivity with delta updates
- HTTP REST & GraphQL API - Full CRUD and query endpoints
- Vector search - AI/ML embeddings with similarity search
- File storage - Blob storage with SQL integration
- Full-featured CLI with PostgreSQL-compatible commands
- TypeScript SDK with React hooks and Drizzle ORM adapter
- Python bindings with DB-API 2.0 interface
- WebAssembly - runs in the browser
- 327,000+ lines of Rust across 11 crates
Built entirely by AI agents using Claude Code and Loom.
Quick Start
# Clone and build
# Run the CLI
# Or try the web demo
&& &&
CLI Example
));
));
;
| | |
| | |
| | |
See CLI Guide for meta-commands, output formats, and import/export.
Python
=
=
# [(1, 'Hello')]
See Python Bindings Guide for full API reference.
Features
Real-Time Subscriptions
Subscribe to SQL queries and receive automatic updates when data changes—Convex-like reactivity with full SQL power.
import { VibeSqlClient } from '@vibesql/client';
const db = new VibeSqlClient({ host: 'localhost', port: 5432 });
await db.connect();
// Subscribe to a query - get updates when data changes
const subscription = db.subscribe(
'SELECT * FROM messages WHERE channel_id = $1 ORDER BY created_at DESC LIMIT 50',
[channelId],
{
onData: (messages) => setMessages(messages),
onDelta: (delta) => {
// Efficient incremental updates
if (delta.type === 'insert') addMessage(delta.row);
if (delta.type === 'delete') removeMessage(delta.row);
},
}
);
// React hook for easy integration
function ChatRoom({ channelId }) {
const { data, isLoading } = useSubscription(db,
'SELECT * FROM messages WHERE channel_id = $1',
[channelId]
);
return <MessageList messages={data} />;
}
Features:
- Delta updates (only changed rows sent)
- Automatic reconnection with subscription restoration
- Configurable limits, quotas, and backpressure handling
- HTTP SSE endpoint for REST API consumers
- React hooks (
useSubscription,useQuery)
SQL Support
- Queries: SELECT, JOINs (INNER/LEFT/RIGHT/FULL/CROSS), subqueries, CTEs, UNION/INTERSECT/EXCEPT
- DML: INSERT, UPDATE, DELETE, TRUNCATE
- DDL: CREATE/ALTER/DROP TABLE, views, indexes, schemas
- Aggregates: COUNT, SUM, AVG, MIN, MAX with GROUP BY/HAVING
- Window functions: ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD
- Transactions: BEGIN, COMMIT, ROLLBACK, savepoints
- Security: GRANT/REVOKE with full privilege enforcement
Advanced Features
- Views with OR REPLACE and column lists
- Stored procedures and functions (IN/OUT/INOUT parameters)
- Full-text search (MATCH AGAINST)
- Spatial functions (ST_* library)
- Triggers (BEFORE/AFTER)
- Scheduled functions (SCHEDULE AFTER/AT, CREATE CRON)
- Vector types for AI embeddings (VECTOR(n), distance functions)
- Blob storage with STORAGE_URL/STORAGE_SIZE functions
Performance
- Columnar execution with SIMD acceleration
- Cost-based join reordering
- Hash joins for equi-joins
- Predicate pushdown
- Expression caching
Benchmarks
VibeSQL achieves 75,404 TPS on TPC-C (38x faster than SQLite) and passes 100% of TPC-H and TPC-DS queries.
Test Coverage
| Suite | Coverage | Tests |
|---|---|---|
| SQL:1999 Core | 100% | 739/739 sqltest |
| SQLLogicTest | 100% | 623 files (~5.9M tests) |
| Unit Tests | - | 4,800+ tests |
| TPC-DS | 100% | 99/99 queries |
| TPC-H | 100% | 22/22 queries |
| TPC-C | 100% | All transactions |
TPC-C (OLTP Transactions)
| Database | TPS | vs SQLite |
|---|---|---|
| VibeSQL | 75,404 | 38x faster |
| SQLite | 1,984 | baseline |
| DuckDB | 347 | 6x slower |
Scale Factor 1, 10-second duration. Stock-Level transaction latency: 173µs (36x under 1ms target).
TPC-DS (Complex Analytics)
99/99 queries passing (100%) at SF 0.001. All queries complete within timeout.
Peak memory: ~141 MB. See full results.
TPC-H (Decision Support)
22/22 queries passing (100%). All queries optimized with columnar execution and cost-based join reordering.
Running Benchmarks
# Build release binaries first
# Run all benchmarks
# Individual benchmarks
# With custom parameters
SCALE_FACTOR=0.01 PROFILING_ITERATIONS=3
TPCC_SCALE_FACTOR=1 TPCC_DURATION_SECS=10
See Benchmarking Guide for details on parameters and profiling.
Development
# Full build, test, and benchmark (runs in background)
# Individual targets
Documentation
| Guide | Description |
|---|---|
| TypeScript SDK | Real-time subscriptions & React hooks |
| Drizzle ORM | Type-safe queries with Drizzle adapter |
| HTTP API | REST, GraphQL, and SSE endpoints |
| CLI Guide | Command-line interface |
| Python Bindings | Python API reference |
| Scheduled Functions | Cron jobs and scheduled tasks |
| Vector Search | AI/ML embeddings and similarity search |
| File Storage | Blob storage with SQL integration |
| ODBC/JDBC | Database connectivity |
| Roadmap | Future plans |
| History | Development timeline |
Project Background
This project originated from a challenge about AI capabilities: implement a NIST-compatible SQL database from scratch. Core SQL:1999 compliance was achieved in under 2 weeks (Oct 25 - Nov 1, 2025).
Inspired by posix4e/nistmemsql.
License
MIT OR Apache-2.0. See LICENSE-MIT and LICENSE-APACHE.
Contributing
See CLAUDE.md for development workflow with Loom AI orchestration.