Skip to content

Data handling

Analysis is entirely local. analyze(), save_html(), save_json() and save_screenshots() never open a network connection, and the HTML report is self-contained — it works from a file:// URL with no internet at all.

Only the optional AI documentation sends anything, and only to the provider you configured yourself. Nothing is configured by default: a call without base_url= or provider= raises AiDocError instead of picking an endpoint.

What each call sends

Call Sent
document() Per node: formula, computed value, precedent/dependent labels, formula decomposition, stretched-group extent, and extracted VBA code
document_workbook() Sheet statistics, the largest formula patterns, defined names, VBA procedures, unresolved references, analysis warnings
document_workbook() with include_context=True (default) Also the first rows and columns of every sheet, cell comments and their authors, merged ranges, frozen panes, hidden columns

That last row means cell contents leave the machine, not only formulas and structure. It is on by default because an overview written without them is not worth reading — the titles, labels and comments a reader actually sees are what make it a description of the file rather than of a dependency graph.

Two ways to narrow it:

# Keep cell contents local, still send the lineage
overview = result.document_workbook(base_url=..., model=..., include_context=False)

# Or keep the whole run local — a local runtime receives everything, and it
# never leaves your machine
overview = result.document_workbook(
    base_url="http://localhost:11434/v1", model="llama3.1"
)

Sheet screenshots are never uploaded. They are rendered for a human to look at in the report; the model is given the same facts in text, read from the file by openpyxl.

Where it goes

Configuration Destination
Nothing configured Nowhere — AiDocError is raised and the message lists the options
base_url= on a local runtime (Ollama, vLLM, LM Studio) Your own machine
base_url= on a hosted endpoint or gateway That operator, under their terms — read them
provider= Wherever your own callable sends it

linexcel takes no position on which is acceptable, because only you know what is in the workbook. Do not enable AI documentation for a file whose contents must stay local unless the provider you configured satisfies that requirement.

Credentials

API keys are read from the argument you pass or from the environment (LINEXCEL_AI_API_KEY, OPENAI_API_KEY); they are never written to the report, the JSON export, or any log. The generated HTML contains the graph, your chosen interface language and the AI text — never a key, a URL or a model name you configured.

Reporting a problem

Please report vulnerabilities privately per SECURITY.md. Do not attach sensitive workbooks or credentials to public issues.