Connecting Sources
Dinobase supports three categories of data sources.
| Category | Examples | Sync needed? | Storage |
|---|---|---|---|
| SaaS APIs | Stripe, HubSpot, GitHub | Yes | dlt syncs to parquet |
| Databases | PostgreSQL, MySQL, Snowflake | Yes | dlt syncs to parquet |
| File sources | Parquet, CSV, S3, GCS | No | DuckDB reads files directly |
The add command
Section titled “The add command”dinobase add <type> [credentials] [options]Credential resolution order
Section titled “Credential resolution order”- CLI flags —
--api-key sk_live_... - Environment variables —
STRIPE_SECRET_KEY - Interactive prompt — asks if neither is set
# These are equivalent:dinobase add stripe --api-key sk_live_...
export STRIPE_SECRET_KEY=sk_live_...dinobase add stripeCustom naming
Section titled “Custom naming”By default, the source name matches the type. Use --name for multiple instances:
dinobase add stripe --api-key sk_live_... --name stripe_proddinobase add stripe --api-key sk_test_... --name stripe_testCreates separate schemas: stripe_prod.* and stripe_test.*.
Sync intervals
Section titled “Sync intervals”Set per-source intervals (used with dinobase sync --schedule):
dinobase add stripe --api-key sk_live_... --sync-interval 30mdinobase add hubspot --api-key pat-... --sync-interval 1hSupported formats: 30s, 5m, 1h, 6h, 1d.
SaaS API sources
Section titled “SaaS API sources”Powered by dlt verified sources and REST API connectors.
dinobase add stripe --api-key sk_live_...dinobase add hubspot --api-key pat-na1-...dinobase syncAfter syncing, data is stored as parquet and queryable as stripe.*, hubspot.*, etc.
See SaaS APIs reference for all supported services.
Database sources
Section titled “Database sources”Connect via connection string (SQLAlchemy-compatible):
dinobase add postgres --connection-string postgresql://user:pass@host:5432/dbdinobase add mysql --connection-string mysql://user:pass@host:3306/dbdinobase add snowflake --connection-string snowflake://user:pass@account/db/schemadinobase add sqlite --path /path/to/database.dbSee Databases reference for all supported databases.
File sources
Section titled “File sources”No sync needed. DuckDB reads files at query time through views.
# Local directory of parquet filesdinobase add parquet --path ./data/events/ --name analytics
# Single CSV filedinobase add csv --path ./exports/report.csv --name report
# S3dinobase add parquet --path s3://bucket/prefix/ --name warehouse
# GCSdinobase add parquet --path gs://bucket/data/ --name warehousePath resolution
Section titled “Path resolution”| Input | Behavior |
|---|---|
Directory (./data/) | Finds all matching files recursively |
Single file (./data/events.parquet) | One table from the file |
Glob (./data/*.parquet) | Matches by pattern |
S3 URL (s3://bucket/prefix/) | DuckDB reads from S3 at query time |
GCS URL (gs://bucket/prefix/) | DuckDB reads from GCS at query time |
Each file becomes a table named after its filename: events.parquet becomes the events table.
See File Sources reference for more details.
Viewing configured sources
Section titled “Viewing configured sources”# List all available source typesdinobase sources
# See what's actually connected and loadeddinobase status --prettyRemoving a source
Section titled “Removing a source”Edit ~/.dinobase/config.yaml directly to remove a source entry. Data stays in DuckDB until overwritten.