Mako
The AI-native SQL Client.
The Cursor for Data. Connect to any database, query with AI, and build live dashboards -- all from your browser.
Stop wrestling with complex SQL and slow, bloated database tools. Write queries in plain English, get instant results, and turn them into interactive dashboards with cross-filtering and scheduled refresh.

π Why Mako?
A modern SQL client built for the AI era, replacing slow desktop tools with a fast, collaborative, AI-powered experience.
- β¨ AI Query Generation: Write queries in natural language. Our schema-aware AI generates optimized SQL instantly.
- Replaces: DataGrip, DBeaver, Postico
- π AI Dashboards: Build interactive dashboards from conversation. Cross-filtering, scheduled data refresh, Parquet materialization -- powered by DuckDB in the browser.
- Replaces: Metabase, Looker, manual BI pipelines
- π§± dbt Transforms: Build, run, and schedule dbt Core projects in-app -- file IDE, jobs, run history, lineage, and GitHub sync.
- βοΈ React Apps: Ask the agent to build live React apps wired to your data through secure, credential-free bindings.
- Replaces: Lovable, v0, internal-tool builders
- π Version History: Every console and dashboard save is an immutable snapshot you can browse and restore.
- Replaces: Lost SQL files, manual backups
- π₯οΈ Mako Desktop: Native app that bundles a local agent so
localhost databases work out of the box.
- Replaces: SSH tunnels and bastion hops for local DBs
- π₯ Team Collaboration: Share connections, version-control queries, and work together in real-time.
- Replaces: Passing credentials around, lost SQL files
- β‘ Blazing Fast: No Java or Electron bloat. Opens instantly in your browser and runs smooth.
- Replaces: Slow desktop database tools
πΈ Screenshots
AI-powered console β ask in plain English, get a verified query and live results.

Transforms (dbt) β build, run, and schedule dbt Core projects with a file IDE, jobs, run history, and lineage.

Apps β build live React apps wired to your data, rendered in a sandboxed preview.

π Integrations
Databases
| Integration | Status | Description |
|---|
| PostgreSQL | β
Live | Connect to PostgreSQL for relational data queries |
| MongoDB | β
Live | Connect to MongoDB for flexible document-based data |
| BigQuery | β
Live | Analyze large datasets with Google BigQuery |
| ClickHouse | β
Live | Fast OLAP queries on ClickHouse |
| MySQL | β
Live | Query MySQL databases with natural language |
| Redshift | β
Live | Query Amazon Redshift data warehouses |
| Cloud SQL | β
Live | Connect to Google Cloud SQL (Postgres) |
| Cloudflare D1 | β
Live | Query Cloudflare D1 SQLite databases |
| Cloudflare KV | β
Live | Browse and query Cloudflare Workers KV |
Data Connectors
Sync external SaaS data into Mako's data warehouse for querying and dashboards.
| Integration | Status | Description |
|---|
| Stripe | β
Live | Track payments, subscriptions, and billing data |
| PostHog | β
Live | Analyze product analytics and user behavior |
| Close.com | β
Live | Sync CRM data (leads, opportunities, activities) |
| Claap | β
Live | Sync recordings and workspace data |
| Calendly | β
Live | Sync events, invitees, and event types |
| GraphQL | β
Live | Query any GraphQL API with custom endpoints |
| REST | β
Live | Query any REST API with custom endpoints |
| BigQuery | β
Live | Sync BigQuery datasets into the warehouse |
ποΈ Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Frontend (React + Vite) β
β ββββββββββββ ββββββββββββββββ βββββββββββββββββββββββ β
β β Console β β Dashboards β β AI Chat (Vercel β β
β β (Monaco) β β (DuckDB + β β AI SDK) β β
β β β β Mosaic) β β β β
β ββββββββββββ ββββββββββββββββ βββββββββββββββββββββββ β
β β² β² β² β
β β Parquet/Arrow β β
β β via OPFS cache β β
βββββββββββββΌβββββββββββΌβββββββββββββββββββΌβββββββββββββββ
β β β
βββββββββββββΌβββββββββββΌβββββββββββββββββββΌβββββββββββββββ
β API (Hono + Node.js) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Unified Agent (expertise modes: Query / β β
β β Dashboard / Sync Flow / React App / Transforms β β
β β / Explore, switched via enable_mode) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β ββββββββββββββββ βββββββββββββββββ ββββββββββββββββ β
β β DB Drivers β β Connectors β β Dashboard β β
β β (9 drivers) β β (8 sources) β β Engine β β
β β β β β β (DuckDB β β
β β β β β β + Parquet) β β
β ββββββββββββββββ βββββββββββββββββ ββββββββββββββββ β
β β² β
β βββββββ΄βββββββ β
β β Inngest β (scheduled refresh, β
β β β incremental sync) β
β ββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
ββββββββ΄βββββββ βββββββ΄βββββββββββ
β MongoDB β β User DBs β
β (metadata, β β (PG, BQ, CH, β
β warehouse)β β MySQL, etc.) β
βββββββββββββββ ββββββββββββββββββ
Key technology choices:
- DuckDB (both server-side via
@duckdb/node-api and browser-side via @duckdb/duckdb-wasm): powers dashboard SQL execution, Parquet artifact generation, and in-browser cross-filtering with OPFS caching
- Mosaic (
@uwdata/mosaic-core): coordinates cross-filtering across dashboard widgets
- Apache Arrow / Parquet: server materializes query results into Parquet, served to browser as Arrow IPC for zero-copy rendering
- Inngest: event-driven job queues for scheduled dashboard refresh and incremental data sync
- Hono: lightweight, fast HTTP framework for the API
- Monaco Editor: VS Code's editor for the SQL console
- Vercel AI SDK: multi-provider LLM abstraction (OpenAI, Anthropic, Google)
π Dashboard Engine
Dashboards are a core feature. The AI agent creates interactive dashboards from natural language:
- Agent creates a dashboard spec with widgets, layouts, and SQL queries
- Server materializes query results into Parquet artifacts (stored on filesystem, GCS, or S3)
- Browser loads Parquet data into DuckDB-WASM, cached in OPFS for instant reloads
- Mosaic cross-filtering lets users click on one chart to filter all others
- Inngest cron keeps data fresh with scheduled re-materialization and stale-run detection
Dashboard Artifact Storage
Dashboard materialization stores Parquet artifacts on the backend. Three storage backends:
filesystem -- default; stores files on local disk
gcs -- Google Cloud Storage
s3 -- S3-compatible bucket
DASHBOARD_ARTIFACT_STORE=filesystem
# Optional shared settings
DASHBOARD_ARTIFACT_PREFIX=dashboards
DASHBOARD_ARTIFACT_DIR=/absolute/path/to/artifacts # filesystem only
Google Cloud Storage
DASHBOARD_ARTIFACT_STORE=gcs
GCS_DASHBOARD_BUCKET=your-bucket-name
DASHBOARD_ARTIFACT_PREFIX=dashboard-artifacts/prod
See the docs for full GCS/S3 provisioning instructions.
π οΈ Quick Start
-
Clone & Install
git clone https://github.com/mako-ai/mako.git
cd mako
pnpm install
-
Configure Environment
Copy .env.example (if available) or create .env:
# Local development connects to the shared `dev` database, an Atlas DB that is
# refreshed nightly from production. Grab the `dev` connection string from the
# team vault. (`staging` backs non-migration PR previews; never point local at
# `production`.)
DATABASE_URL=mongodb+srv://<user>:<password>@<cluster>.mongodb.net/dev
ENCRYPTION_KEY=your_32_character_hex_key_for_encryption
WEB_API_PORT=8080
BASE_URL=http://localhost:8080
CLIENT_URL=http://localhost:5173
-
Start Services
# Start the local notebook Python kernel so notebook `code` cells run
# locally. Requires the KERNEL_* vars from .env.example in your .env.
# (The dev database is hosted MongoDB Atlas, set via DATABASE_URL.)
pnpm run docker:up
# Start the full stack (API + App + Inngest)
pnpm run dev
-
Analyze
- Open http://localhost:5173 to access the app.
- Add a Data Source (e.g., Stripe or Close.com).
- Use the chat interface to ask questions about your data.
π IP Whitelisting
If your database requires IP whitelisting, add the following static IP to your allowlist: