Provisa / Data science access
Now the data scientists want all of it, and each dataset is a separate request.
Register the sources once and the whole team queries them from a notebook in SQL, GraphQL or Cypher, straight into a DataFrame. Arrow Flight streams record batches column by column, with nothing materialized on the server while you read.
Connect your data, query with Python and Arrow Flight, in five minutes
1. Install and start Provisa
Download the installer for your machine from the download section and run it. The first launch finishes a one-time setup with no internet needed. Then start the services and open the UI.
provisa start # every service, on your machine
provisa open # the UI, in your browser2. Connect the sources
In the UI, open Sources and add Postgres, Elasticsearch and Kafka. Provisa reads each source's catalog; pick the tables to register. Nothing is copied: queries go to the data where it lives.
3. Install the client
In the notebook's kernel:
%pip install "provisa-client[pandas]"4. Query into a DataFrame
Set PROVISA_URL and PROVISA_TOKEN in the shell before starting Jupyter, so no credential is saved in the notebook. Then load the cell magics and query:
%load_ext provisa_client.magics
%%sql
SELECT e.service, COUNT(*) AS errors, AVG(o.total) AS order_value
FROM logs e
JOIN orders o ON o.trace_id = e.trace_id
WHERE e.level = 'error'
GROUP BY e.service5. Pull large results over Flight
For millions of rows, read over Arrow Flight into pyarrow, pandas, Polars or DuckDB:
from provisa_client import ProvisaClient
import os
client = ProvisaClient(os.environ["PROVISA_URL"], token=os.environ["PROVISA_TOKEN"])
table = client.flight("SELECT * FROM events WHERE day >= '2026-10-01'")What stays true
- The notebook reads what the role reads, masked as the role's results are.
- To train without personal data, query the synthetic copy of a table instead.
- A query against one source goes straight to its driver.