vccs
Vue 3용 차트 컴포넌트 모음, Recharts에서 포팅
ETL·dbt 오케스트레이션·SQL 클라이언트·대시보드·앱 빌더를 하나의 오픈소스 플랫폼에 통합하고, 스키마를 아는 AI 에이전트를 제공
ETL, dbt orchestration, a SQL client, dashboards, and an app builder — one open-source platform with an AI agent that knows your schema. Replaces five tools.
데이터TypeScript · JavaScriptGitHub @mako-ai온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Free and open-source SQL client built for AI and the web. The new way to query your data.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
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.
A modern SQL client built for the AI era, replacing slow desktop tools with a fast, collaborative, AI-powered experience.README 전문 보기 ↗The Cursor for Data. Connect to any database, query with AI, and build live data apps -- 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 live React apps with scheduled data refresh.
A modern SQL client built for the AI era, replacing slow desktop tools with a fast, collaborative, AI-powered experience.
localhost databases work out of the box.
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.
| 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 |
Sync external SaaS data into Mako's data warehouse for querying and apps.
| 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 |
┌─────────────────────────────────────────────────────────┐
│ Frontend (React + Vite) │
│ ┌──────────┐ ┌──────────────┐ ┌─────────────────────┐ │
│ │ Console │ │ Apps │ │ AI Chat (Vercel │ │
│ │ (Monaco) │ │ (React + │ │ AI SDK) │ │
│ │ │ │ DuckDB) │ │ │ │
│ └──────────┘ └──────────────┘ └─────────────────────┘ │
│ ▲ ▲ ▲ │
│ │ Parquet/Arrow │ │
│ │ via OPFS cache │ │
└───────────┼──────────┼──────────────────┼──────────────┘
│ │ │
┌───────────┼──────────┼──────────────────┼──────────────┐
│ API (Hono + Node.js) │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Unified Agent (expertise modes: Query / │ │
│ │ Sync Flow / React App / Transforms / │ │
│ │ Explore, switched via enable_mode) │ │
│ └──────────────────────────────────────────────────┘ │
│ ┌──────────────┐ ┌───────────────┐ ┌──────────────┐ │
│ │ DB Drivers │ │ Connectors │ │ App binding │ │
│ │ (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/node-api and browser-side via @duckdb/duckdb-wasm): powers Parquet artifact generation for app bindings and in-browser SQL over themApp data bindings (and app deployments, dbt outputs, and chat attachments) are materialized into an artifact store on the backend. The configuration names below predate apps -- they come from the since-removed dashboards feature -- and are kept so existing deployments keep working. Three storage backends:
filesystem -- default; stores files on local diskgcs -- Google Cloud Storages3 -- S3-compatible bucketDASHBOARD_ARTIFACT_STORE=filesystem
# Optional shared settings
DASHBOARD_ARTIFACT_PREFIX=dashboards
DASHBOARD_ARTIFACT_DIR=/absolute/path/to/artifacts # filesystem only
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.
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
If your database requires IP whitelisting, add the following static IP to your allowlist:
34.79.190.46
This IP is used by Mako's cloud service for all outbound database connections.
| Command | Description |
|---|---|
pnpm run dev | Start API, frontend, and Inngest dev server |
pnpm run app:dev:scan | Start the frontend with React Scan and render debug logging |
pnpm run migrate | Run database migrations |
pnpm run docker:up | Start the local notebook Python kernel (run notebook code cells) |
pnpm run test | Run test suite |
pnpm run build | Build all packages |
pnpm run docs:dev | Start documentation site locally |
Use React Scan when working on render churn, streaming chat responsiveness, Monaco console performance, or explorer/result table interactions:
pnpm run app:dev:scan
This enables the React Scan Vite plugin via VITE_REACT_SCAN=true and turns on Mako's render-debug logs via VITE_RENDER_DEBUG=true. React Scan highlights components that re-render in the browser, while render-debug logs summarize why hot components such as Chat, ResourceTree, Console, and ResultsTable changed.
Keep React Scan off during normal development. The plugin and debug hooks are gated behind env flags so regular pnpm run app:dev runs without profiling overlays or extra debug logging.