Lumen: a declarative agent framework where the LLM writes the pipeline, not just the query
Illuminate your data. Agent framework turning natural language into SQL, charts, dashboards and reports.
At a glance
- What is it?
- Lumen turns natural language into SQL, charts, tables and dashboards by having the model populate a declarative spec you can read, edit and share. The trade-off is that it is a HoloViz-stack tool: its value depends on how much of Panel and the Lumen spec you are willing to learn.
- Who is it for?
- Adopt Lumen if your team already lives in the HoloViz stack and wants LLM output that lands as an inspectable, serializable spec rather than a chat transcript. Do not adopt it if you need a single-shot text-to-SQL endpoint with no UI layer, or if you cannot take a Python and Panel dependency.
- Can I use it commercially?
- Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem Lumen is aimed at: LLM output that you can keep
Most text-to-SQL tools end at a result set. You ask a question, a model writes a query, you get rows back, and the query itself is disposable. Lumen takes a different position: the README describes it as an agent framework for chatting with data and for retrieval augmented generation, and the mechanism it leans on is a declarative data model. The claim in the README is that this declarative nature is what lets an LLM generate entire data transformation pipelines, visualizations and other output types, and that once generated those pipelines can be serialized.
That serialization is the actual product. A Lumen pipeline is a specification, so it can be shared, reopened in a notebook, or composed into a dashboard. The intended user is not someone who wants a one-off answer. It is someone who wants the answer plus the artifact that produced it, and who is willing to work inside the HoloViz ecosystem to get there. The README also frames extensibility as the differentiator: custom agents, analyses and tools, so that non-programmers can run domain-specific analyses without coding. That is a large claim, and it depends entirely on someone doing the customization work first.
How the declarative spec becomes the interface between the model and the output
The architecture visible in the README has three layers. At the bottom is a data source: local or remote files, SQL databases, or a data lake. In the middle is the declarative Lumen data model, which expresses multi-step transformations in SQL or Python. On top is Panel, the HoloViz rendering library, which the README says can render almost any type of output.
The LLM does not write a chart directly. It populates the middle layer, and the middle layer drives the top. That is why the README can list such different outputs in one breath: SQL pipelines, charts, data tables, dashboards, and summaries of results. They are all downstream of the same specification. The context side works the same way: you give Lumen access to documents so the model has the context it needs, which is the RAG half of the framework.
The README also states that all LLM outputs can be inspected for mistakes, refined, and manually edited. Read that as the honest description of how the system is meant to be used. The model proposes a spec; a human checks it. Nothing in the material suggests the generated pipeline is validated automatically before it runs.
Installing and starting a Lumen Explorer server
The README gives two install paths. The recommended one uses conda: `conda install -c pyviz lumen`. The PyPI path is `pip install 'lumen[ai]'`, and the extra matters, since the AI agent features are what the bracket pulls in. The README states Lumen works with Python 3 and above on Linux, Windows, or Mac.
To start a server, the README gives a single command: `lumen-ai serve data.csv`, with the note to replace `data.csv` with your own data. That is the whole documented getting-started surface. The README points to the docs at lumen.holoviz.org for more detail, and does not reproduce configuration keys, environment variables or model settings in the README itself.
That is worth flagging plainly. If you are evaluating Lumen, the README is not enough to judge the configuration story. Anything about which model providers are wired up, how credentials are supplied, or how the server is exposed beyond localhost has to come from the documentation site, and this review cannot confirm it from the supplied material.
The Panel dependency is the design, and also the constraint
Lumen is built on Panel, and the README presents this as a strength: rendering almost any output type becomes cheap, so even esoteric use cases are possible. The same sentence is the limitation. You are not adopting a query tool with a chart renderer attached. You are adopting a HoloViz application, and the rendering layer comes with it.
For a team already using Panel and the wider HoloViz stack, that is close to free. For a team running a Python service that returns JSON to a JavaScript frontend, it is a large dependency to carry for functionality they may not use. The declarative spec is the part they would want, and the spec is not separable from the framework in any way the README describes.
There is a second constraint in the same area. The README says the declarative model makes it easy for LLMs to populate custom components. Easy for the model is not the same as easy for the reviewer. A generated multi-step pipeline in SQL or Python still has to be read by a person before it is trusted, and the README's own framing, inspect, validate and edit, assumes that person exists.
Where Lumen is the wrong tool
Lumen is a poor fit when the requirement is a stateless text-to-SQL call. If your interface is a function that takes a question and returns rows, Lumen adds an agent loop, a specification format and a Panel server around that function. The README describes a framework for chatting with data, and chatting implies sessions, generated artifacts and a UI. Stripping that back to a single query is working against the design.
It is also a poor fit when the output must be a fixed, pre-approved report. Lumen's value comes from generating pipelines for questions you did not anticipate. If your questions are known in advance, a hand-written Lumen spec, or a plain SQL view, is cheaper and does not put a model in the path.
The third case is governance. The README states that outputs can be inspected and edited, which is a manual control. It does not describe an approval gate, a review queue, or a policy layer. If your environment requires that generated data transformations be reviewed before execution rather than after, the material here does not show that Lumen provides it.
How Lumen differs from a notebook-based LLM data assistant
The obvious alternative is the pattern most teams reach for first: an LLM assistant inside a notebook, writing pandas or SQL cells that the analyst runs. The difference is where the artifact lives. In the notebook pattern, the artifact is the cell history, which is ordered, stateful and awkward to hand to someone else. In Lumen, the artifact is a declarative specification that the README says can be serialized and shared, and that can be composed through a drag-and-drop interface into a dashboard.
That composition step is the real divergence. A notebook assistant produces analysis. Lumen produces a specification that can be assembled into a dashboard without rewriting the transformation logic. The cost is that you must express your transformations in Lumen's model rather than in whatever pandas code you already have, and the README does not claim that arbitrary Python translates cleanly into that model.
The second alternative is a dedicated text-to-SQL product. Those tend to be narrower and better at one thing: mapping a question onto a schema. Lumen's README claims a wider scope, SQL plus charts plus dashboards plus document retrieval, and wider scope means more surface to configure and more ways for a generated spec to be subtly wrong.
Release cadence, maintenance burden and the BSD-3-Clause licence
The release history shows v1.1.0 in March 2026, v1.2.0 in June 2026, and v1.3.0 in July 2026, with the last push to the repository in September 2026. That is a roughly quarterly minor-release rhythm across the three releases listed, and the repository is not archived. For a framework that sits on top of a fast-moving LLM ecosystem, that cadence is the thing to watch: each minor release can change how the agent layer behaves, and the README does not describe a compatibility policy.
The maintenance cost for an adopter is not the install. It is the custom agents, analyses and tools the README encourages you to write. Those are your code, and they are the part that has to track Lumen's internals across upgrades. Teams that only use the built-in agents carry less of that burden than teams that extend the framework, which is the opposite of the usual intuition.
Lumen is BSD-3-Clause, a permissive licence. That permits commercial use and modification, but this is not legal advice and the licence text governs; if you are redistributing Lumen inside a product, read the terms and any third-party dependency licences yourself. The README does not discuss licensing implications of the models or data sources you connect, which is a separate question from Lumen's own licence.
Editorial conclusion
Adopt Lumen if your team already lives in the HoloViz stack and wants LLM output that lands as an inspectable, serializable spec rather than a chat transcript. Do not adopt it if you need a single-shot text-to-SQL endpoint with no UI layer, or if you cannot take a Python and Panel dependency. Before committing, verify that lumen-ai serve starts against your own data source, that the generated pipeline spec is something your reviewers can actually read, and that the model you intend to use is one the docs list as supported.
Community notes