Jan 22 2026 · Piotr PƂoƄski, Aleksandra PƂoƄska

New version of Mercury (3.0.0) - a framework for sharing discoveries

Python notebook is a popular tool for data analysis. It is used in many different ways, ranging from data preparation and exploration to data visualization, report creation, and Machine Learning pipeline training. It is a tool for creating new discoveries.

However, it is not suitable for non-technical users. When new insights are found in the Python notebook, it is necessary to convert the Python code into a more user-friendly artifact. The common way is to export the notebook to PDF or HTML, or simply copy charts and tables into a report, email, or presentation slides. In many cases, the specialized applications are created based on findings from Python notebooks. In all those cases, it requires additional work to translate the Python notebook into a user-friendly, easy-to-understand, and visually appealing format for presenting the final results.

We created the Mercury framework to help technical users share their findings with non-technical team members. The Mercury converts a Python notebook into a web application. It hides Python code, leaving only outputs visible. It provides a collection of widgets so users can interact with the notebook, and a predefined layout so the web application looks beautiful and professional. Mercury solves the problem of building beautiful web apps directly from Python notebooks, and technical users don't have to worry about styles or frontend technologies. A technical user can use the language they already know - Python. And the final result is a product for a non-technical user, who can see the findings, not the code.

We are writing this article to let you know that we have released version 3 of Mercury. It is a complete rewrite of the previous version. We would like to share with you some history of Mercury's evolution and what is new in Mercury 3.0.

Evolution of Mercury - framework for converting Python notebook to web app

We currently have third major release of Mercury - we hope the last one with such big rewrite :) Let's look closer how Mercury evoluated.

Mercury version 1

The first version of Mercury was created in January, 2022. It was using a YAML header for widget definitions. You need to provide YAML in the notebook's first cell. Based on YAML and user selections, the notebook was rendered to HTML using the nbconvert tool and displayed in the frontend. The widgets part was always displayed in the sidebar. We were using Django for the backend and React for the frontend.

The Python notebook example with YAML header and widget definition:

The notebook generated as interactive web app:

Users loved the Mercury because of its simplicity and style. But version 1 of Mercury has a major drawback: users can't create widgets from Python code. The widget definition needs to be done at the beginning of the notebook in the YAML. That's why we started to work on the next version of Mercury.

Mercury version 2

The next version (2.0.0) of Mercury had a Python API for widgets. Yes! It was much more advanced. It was released in June 2023. We gave a poster presentation on Mercury at JupyterConf 2023 in Paris! This version offers greater flexibility in how widgets can be created; it can be all dynamic.

The Python notebook example with Python API for widgets:

The notebook generated as interactive web app with Mercury 2:

The Mercury 2 used React to render widgets in the frontend. The backend was using Django Channels for communication with the frontend. After the widget update, the cells below the updated widget were re-executed. We were using nbexec from AnswerAI (FastAI) for cell execution. The outputs were rendered to HTML with nbconvert, and the results were sent via websockets to the frontend.

We hit over 4,000 GitHub stars with this release. Many companies used this solution. We see a common pattern among users with extensive domain knowledge who want to create tools for non-technical team members. We created a paid service for 1-click deployment, called Mercury Cloud. It was a success.

Version 2 of Mercury had a drawback. The native widgets (ipywidgets) from the Jupyter ecosystem were not fully supported. The user can't fully use all the goodies from the Jupyter world.

Mercury version 3

Version 3 of Mercury was released in January 2026. It has full support for ipywidgets. We moved from a Django-based solution to Tornado as the backend. The frontend and backend are developed with Jupyter components - everything in Jupyter is an extension. This simplified the architecture of the Mercury framework. We hope that the whole usage of the framework will be easier as well.

Thanks to using extensions, we were able to providea live app preview during notebook development. You can see notebook code on one side, and live app preview on second side. It makes development a real pleasure. See example screenshot below:

In version 3 of Mercury, we would like to focus on making it easy to build chat-based applications. We would like to make it easy to connect AI to your existing data sources. For example, make a chat app that can do plots based on your data:

We would like to make it easy to develop coding AI agents, in the screenshot below you see app that generates SVG code. The application has two columns in the main view. It has chat display in the left column and code and preview in the right column.

We would like to provide more examples of AI agents created with Mercury framework in the near future.

Example app wtih Mercury 3

Building apps with Mercury 3 is very simple. Below is echo chat bot example. It simply respond with the same value as prompt. As you can see it is four cells and just few lines of Python code.

In the first cell we will import Mercury with mr alias.

# import package import mercury as mr

Let's create a chat display:

# create Chat widget chat = mr.Chat()

User will provide input with ChatInput widget, which will be displayed in the bottom:

# create chat prompt prompt = mr.ChatInput()

Every new prompt from prompt widget will re-execute cells below. It will trigger the code below, which creates user and assistant messages. Messages are added to chat display.

if prompt.value: # user message user_msg = mr.Message(prompt.value, role="user") chat.add(user_msg) # assistant message (echo) response_msg = mr.Message( f"Echo: {prompt.value}", role="assistant", emoji="đŸ€–", ) chat.add(response_msg)

You can see the live app preview during development by clicking button with 🎉 in the top bar:

Please run command mercury in the terminal to serve notebook as web app (without code).

Mercury 3 deployment

The Mercury can be easily deployed using Docker containers. Example dockerfile for mercury server:

FROM python:3.12-slim # Install Mercury RUN pip install mercury # You can also install needed packages here, # For example install pandas # RUN pip install pandas # Directory where notebooks will be mounted WORKDIR /workspace # Mercury default port EXPOSE 8888 # Start Mercury server CMD ["mercury", "--ip=0.0.0.0", "--no-browser", "--allow-root"]

We also created a managed service with 1-click deployment option. It is available on our website MLJAR Platform in Pages section after login.

Future of Mercury

Mercury is a great tool for building dashboards, reports, and AI web apps directly from Python notebook. We would like to make it easy to everyone to share their insights with non-technical users.

We are also working on our Python notebook software - it is called MLJAR Studio. It is complete Python environment with no-code extensions. You can read more on our website mljar.com/studio.

About the Authors

Piotr PƂoƄski
Piotr PƂoƄski
Piotr PƂoƄski is a software engineer and data scientist with a PhD in computer science. He has experience in both academia—working on neutrino experiments at leading research labs and collaborating on interdisciplinary projects—and in industry, supporting major clients at Netezza, IBM, and iQor. In 2016, he founded MLJAR to make data science easier and more accessible, creating tools like AutoML, Mercury, and MLJAR Studio.
Aleksandra PƂoƄska
Aleksandra PƂoƄska
Graphic designer and manager known for her outstanding organizational skills and creative vision. Aleksandra is amazing at crafting user experiences, designing impactful visuals, data graphics, and infographics.