The transformation
file (JSON/JSONL/CSV)
→ npx instadash push
→ hosted grid at https://instadash.io/<handle>/<slug>
→ agent reads via /rows, /llms.md, or MCP
No web framework, no database, no auth code. The file is the input; the grid is the API.
Push patterns by source format
JSON array
cat data.json | npx instadash push \
--key "$INSTADASH_API_KEY" \
--name my-gridEach element becomes a row. Object keys become columns.
JSONL (one row per line)
npx instadash push \
--key "$INSTADASH_API_KEY" \
--name my-grid \
--file events.jsonlStreams memory-flat — fine for files larger than RAM.
CSV
npx instadash push \
--key "$INSTADASH_API_KEY" \
--name my-grid \
--file customers.csvHeaders map to column names. Type inference treats empty strings as null.
Database query (DuckDB, Postgres, BigQuery)
DuckDB to JSONL to push:
duckdb -c "COPY (SELECT * FROM orders WHERE date >= '2026-01-01') TO '/dev/stdout' (FORMAT JSON, ARRAY false)" \
| npx instadash push --key "$INSTADASH_API_KEY" --name q1-ordersPostgres:
psql -c "COPY (SELECT * FROM orders) TO STDOUT WITH (FORMAT csv, HEADER)" \
| npx instadash push --key "$INSTADASH_API_KEY" --name orders --format csvFrom a Python script
import requests, json
rows = [{"id": i, "name": f"row-{i}"} for i in range(1000)]
requests.post(
"https://instadash.io/ingest",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
"X-Grid-Slug": "my-grid",
},
data=json.dumps(rows),
)What the agent sees
After the push completes, the grid is reachable four ways:
| Surface | URL | Use case |
|---|---|---|
| HTML | /<handle>/<slug> | Humans, crawlers |
| JSON | /<handle>/<slug>/rows | Code, downstream agents |
| Markdown | /<handle>/<slug>/llms.md | LLM context windows |
| Plain text | /<handle>/<slug>/llms.txt | Plaintext crawlers |
| MCP tool | instadash_read via mcp.instadash.io/mcp | MCP-aware agents |
Filters and pagination work on all the read surfaces. The agent doesn't need to know about ingestion — it just reads.
Common automation pattern
Run a nightly job (cron, GitHub Actions, your scheduler of choice) that:
- Queries the source system.
- Pipes JSONL into
instadash push. - Tags the grid with a date.
The agent always points at the same URL and gets fresh data. See /recipes/github-actions-nightly for a copy-paste template.