Skip to content

Getting Started

Get up and running with Dinobase in under 5 minutes.

Terminal window
curl -fsSL https://dinobase.ai/install.sh | bash

Requires Python 3.10+.

Terminal window
dinobase init

This creates ~/.dinobase/ with a config file and DuckDB database.

The fastest way to start — no sync, no API keys:

Terminal window
dinobase add parquet --path ./data/events/ --name analytics
dinobase add csv --path ./exports/customers.csv --name customers

Connect with an API key:

Terminal window
dinobase add stripe --api-key sk_live_...
dinobase add hubspot --api-key pat-na1-...
dinobase sync

Or connect via OAuth (browser-based authorization):

Terminal window
dinobase auth hubspot
dinobase auth salesforce
dinobase sync
Terminal window
dinobase add postgres --connection-string postgresql://user:pass@host/db
dinobase sync
Terminal window
dinobase sources --available --pretty

Lists all 100+ supported sources grouped by category (SaaS APIs, databases, cloud storage, files). See Connecting Sources for full details and Sources Reference for the complete list.

Terminal window
# What sources are connected?
dinobase status --pretty
# Inspect a table's columns and types
dinobase describe stripe.customers --pretty

Example describe output:

stripe.customers (180 rows)
id VARCHAR -- Unique identifier for the object.
email VARCHAR -- The customer's email address.
Can be null
created INTEGER -- Time at which the object was created.
Unix timestamp. Use to_timestamp() to convert.
delinquent BOOLEAN -- Whether the customer has an overdue invoice.

Column descriptions come from source APIs — Stripe’s OpenAPI spec, HubSpot’s Properties API, Postgres column comments. See Schema Annotations for how to add your own.

Terminal window
dinobase query "SELECT COUNT(*) FROM stripe.customers" --pretty

Cross-source join:

Terminal window
dinobase query "
SELECT s.email, s.name, h.company, d.amount
FROM stripe.customers s
JOIN hubspot.contacts h ON s.email = h.email
JOIN hubspot.deals d ON h.id = d.contact_id
WHERE d.dealstage = 'closedwon'
ORDER BY d.amount DESC
LIMIT 10
" --pretty

All queries use DuckDB SQL syntax. Tables are referenced as schema.table. See Querying Data for more SQL patterns and join strategies.

Dinobase works with any AI agent. One command installs the MCP config for your client:

Terminal window
dinobase install claude-code

Or use the CLI directly — no configuration needed:

Terminal window
dinobase info # what data is available
dinobase describe X # column details
dinobase query "..." # execute SQL

See the Claude Code integration guide for full details.

Terminal window
dinobase install claude-desktop

Writes the config to your Claude Desktop config file automatically. See the Claude Desktop integration guide.

Terminal window
dinobase install cursor

Writes .cursor/mcp.json in your project root. See the Cursor integration guide.

Terminal window
openclaw skills install dinobase

See the OpenClaw integration guide.

Dinobase integrates with many AI frameworks. See the full list of integrations.

Set freshness thresholds and sync intervals per source:

Terminal window
dinobase add stripe --api-key ... --freshness 30m --sync-interval 15m

Run a background sync daemon:

Terminal window
dinobase sync --schedule --interval 30m

Or sync alongside the MCP server:

Terminal window
dinobase serve --sync --sync-interval 30m

See Syncing & Scheduling for freshness thresholds, live fetch, and scheduled sync details.

Generate realistic test data without any API keys:

Terminal window
pip install faker
python scripts/generate_sample_data.py
dinobase init
dinobase add parquet --path sample_data/ --name demo
dinobase query "SELECT COUNT(*) FROM demo.customers" --pretty