Describe your data. Get production charts. Your data stays local.
Quickstart • API Reference • Examples • Changelog
--- NVEIL is an AI-powered data visualization toolkit. Write one line of natural language, and NVEIL processes your data and generates publication-ready visualizations — no chart code, no hallucinations, no data leaving your machine. ```python import nveil nveil.configure(api_key="nveil_...") # Pass a file path directly — no DataFrame loading required. spec = nveil.generate_spec("Revenue by region, colored by quarter", "sales.csv") fig = spec.render("sales.csv") # 100% local — no API call nveil.show(fig) # opens in browser ``` ### From your shell After `pip install nveil` the `nveil` command is on your `$PATH`: ```bash export NVEIL_API_KEY=nveil_... # Ground yourself on the dataset (shape / dtypes / head preview) nveil describe sales.csv # Generate HTML + PNG + a reusable .nveil spec, print the explanation nveil generate "Revenue by region, colored by quarter" \ --data sales.csv --format all --explain # Re-render an existing spec on fresh data — no API call nveil render chart.nveil --data new_sales.csv ``` ### For AI agents (Claude Code / Claude Desktop / Cursor / Codex / …) NVEIL ships first-class integrations: ```bash # Claude Code / Claude Desktop — install the bundled skill nveil install-skill # Claude Desktop, Cursor, any MCP client — add an MCP server: # {"mcpServers": {"nveil": {"command": "nveil", "args": ["mcp"]}}} nveil mcp # stdio server; launched by the MCP client ```
| ### 🧠 Two Engines in One Data processing (joins, pivots, aggregations, geocoding, time series) **AND** visualization generation from a single prompt. ### 🔒 Data Privacy by Design Raw data never leaves your machine. Only column names, types, and aggregate statistics are sent. ### 📈 Multi-Backend Rendering Auto-detects the best engine: **Plotly** (2D charts), **VTK** (3D/medical), **DeckGL** (geospatial). | ### 🧪 Auditable Results Powered by constraint solving, not random generation. Same input = same output, every time. ### ⚡ Offline Rendering `spec.render()` runs 100% locally with zero API calls. ### 💾 Reusable Specs Save to `.nveil` files, reload later, render on new data — no server needed. |