- xeus-octave enables native GNU Octave execution within Jupyter environments, including JupyterLite, allowing users to run code directly in their browser without any setup.
- The integration supports rich output, enhanced visualization, and interactive help—making Octave practical for both education and advanced scientific work.
- Future advances target enhanced interactivity and full WebAssembly support, potentially offering Octave’s computing power on any website or device with no installation required.

If you’ve ever wished you could jump into GNU Octave and start crunching numbers—no matter where you are or what device you’re using—there’s some fantastic news coming from the open-source and scientific computing world. The arrival of advanced integrations between GNU Octave and JupyterLite means users can now run Octave code instantly inside a web browser, all thanks to the evolution of the xeus-octave project. This approach brings a new level of flexibility and accessibility to numerical computing and research collaboration.
Bringing Octave into the browser is about more than just convenience—it’s about democratizing access to powerful computational tools. With no need for installations, custom setups, or even client-side configuration, users from students to seasoned researchers can experiment, visualize, and share Octave code in real time. Let’s dive into how this integration works, what makes it special, and what you can do with it.
What is GNU Octave and Why Does It Matter?
GNU Octave has long been a favorite in the scientific and engineering communities for its compatibility with MATLAB syntax and its powerful, matrix-oriented scripting language. It supports built-in 2D and 3D plotting, extensive visualization tools, and a broad ecosystem of packages for scientific computing. What sets Octave apart is its open-source nature and the fact that it makes high-level numerical programming accessible without paid licenses.
By being freely available and widely compatible, Octave enables experimentation and education across disciplines. It’s a natural fit for the world of interactive computing—notably, the expanded Jupyter ecosystem. You can learn more about how computing in GNU Octave and JupyterLite can boost your knowledge.
Jupyter, JupyterLab, and JupyterLite at a Glance
The Jupyter Project has revolutionized how we interact with code in the sciences and engineering. Originally an offshoot of IPython, Jupyter now supports dozens of languages through “kernels”—software components that interpret and run code. Its main tools include:
- Jupyter Notebook: Browser-based interface for coding, notes, and data analysis.
- JupyterLab: A more advanced, flexible IDE with multi-tabbed workspaces and rich plugin support.
- JupyterLite: A lightweight distribution of JupyterLab that runs entirely in your browser without a backend server or installation.
Introducing xeus-octave: The Bridge Between Octave and Jupyter
The secret sauce behind this integration is xeus-octave, a native Jupyter kernel based on the Xeus C++ library. Unlike previous solutions—such as Calysto/Octave_kernel (which leveraged Python to bridge Jupyter and Octave)—xeus-octave is written in C++ and communicates directly with the internal Octave representation. This approach leads to a big jump in performance, interactivity, and capability. Rather than running Octave as a subprocess or relying on Python, xeus-octave operates more efficiently and exposes richer data structures to the user interface.
Key highlights of xeus-octave include:
- Native kernel implementation: Direct C++ integration with Octave’s APIs, skipping the overhead of forking processes or parsing standard output.
- Advanced visualization: Plots and figures render natively in notebooks, whether through static images or interactive Plotly-powered widgets (still experimental).
- Rich data display: Matrices can be shown as HTML or LaTeX tables; symbolic expressions as LaTeX formulas; and structured data as interactive trees.
- Interactive help system: Users can query the full Octave documentation with
?commands for efficient referencing. - Flexible installation: Packaged on conda-forge, xeus-octave is easy to install via mamba or conda.
Running Octave in the Browser: No Installations Needed
If you’re itching to try this out, you can launch xeus-octave directly in your browser on services like Binder or through Jupyter’s . This setup means:
- No client-side setup required. There’s no need to install Octave or JupyterLab locally. You can access Octave with a single click—ideal for sharing interactive demos, teaching, or collaborating with colleagues who may not have admin rights on their machines.
- Full compatibility with JupyterLab and JupyterLite. Whether you use a classic notebook environment or the fully browser-native JupyterLite, Octave code runs smoothly.
- Easy code sharing. Share links to live, executable Octave notebooks for workshops, tutorials, or publications.
This is especially powerful in education, where lowering the barriers to tool access is essential. Instructors can now offer live Octave sessions without worrying about installations or compatibility on students’ machines. .
Visualization and Interactive Outputs
One of Octave’s strong points in Jupyter is its great support for visual outputs. The xeus-octave kernel offers various ways to visualize data:
- Native plot rendering: Using Octave’s
notebookgraphics toolkit, you can generate plots and figures that appear as inline images in your notebook. - Experimental Plotly toolkit: For interactive plots, a developing toolkit leverages Plotly. This allows features like zoom, tooltips, and dynamically updating visualizations in the browser.
- Tables and equations: Results like matrices and symbolic expressions can be displayed as styled HTML tables or in LaTeX for high-quality mathematical publications.
Interactive visualization not only makes analysis more intuitive but also enhances the presentation of results for students and collaborators who are unfamiliar with the code.
Installation and Getting Started
Setting up xeus-octave is straightforward thanks to its availability on conda-forge. Here is a basic guide for those using mamba (a faster alternative to conda):
$ mamba create -n myenv -c conda-forge xeus-octave $ mamba activate myenv $ mamba install -c conda-forge jupyterlab
It is also possible to build xeus-octave from scratch, following the dependencies listed in environment-dev.yml in the . To expand your knowledge on integrating GNU Octave and JupyterLite, we recommend consulting this .
Recommendation: For the best experience, install xeus-octave in a clean environment (with Miniforge or Miniconda) to avoid conflicts, especially with the zeromq library which may be present in full Anaconda distributions.
Real-World Applications: Education, Research, and Beyond
The benefits of running Octave in JupyterLite are not just about convenience: they represent a fundamental shift in how scientific computing can be delivered. Interactive code exchange, instant demos, and research reproducibility are now much more accessible:
- Education: Educators can prepare interactive lessons and assignments where students execute code directly in the browser, ensuring a uniform environment and immediate feedback.
- Workshops and tutorials: Presenters share code ready to be executed by attendees, regardless of their platform.
- Publications: Including code examples in scientific articles and blogs encourages verifiable and shareable research.
- Colaboration: Teams can iterate on code without worrying about local configurations or compatibility.
Technical Details: How Does xeus-octave Work?
The xeus-octave kernel uses the xeus C++ library to communicate natively using the Jupyter kernel protocol. This means that:
- Performance: As a native executable, xeus-octave avoids the overhead of managing subprocesses or interpreting output via Python, achieving faster responses and smoother interactivity.
- Better Data Binding: Full access to Octave’s internal APIs allows the extraction of rich data, facilitating native visualizations such as tables, trees, or equations.
- Future Possibilities: Its design makes it easy to add new features, whether support for graphics libraries, interactive widgets, or dashboards.
Interactive Widgets and Future Development
A central development area is **interactive widgets**. The idea is that Octave users can create interactive panels and visualizations directly from their notebooks—similar to what ipywidgets offers in Python.
Work is underway on an **Octave backend for interactive widgets in Jupyter**, using the xwidgets project. When this is combined with Voila, it will be possible to turn notebooks into complete web dashboards, offering sophisticated and dynamic applications in the browser.
Pushing the Envelope: Octave in WebAssembly and JupyterLite
One of the most exciting prospects is the migration of Octave to **WebAssembly (Wasm)**. Thanks to projects like emscripten-forge, more and more scientific software is compiled to run entirely in the browser. This eliminates the need for server resources and facilitates deployments for mass audiences—such as MOOCs, online publications, or embedded widgets in documentation.
A Wasm version of Octave, alongside JupyterLite, means that scientific computing power can be offered on any web page. No servers, no cloud infrastructure, and no setup—users just open the browser and start computing.
Challenges, Observations, and the Road Ahead
While the integration of Octave into JupyterLite via xeus-octave is currently very promising, there are challenges and aspects to consider. **GPU acceleration for Octave in the browser is not yet a reality**: previous approaches using OpenCL did not succeed due to the lack of WebCL and the slow adoption of WebGPU as a successor. Accelerated GPU computing in-browser is not here yet, but advancements in web GPU—like GPUWeb—continue to open future possibilities.
This evolution is part of a broader conversation about the role of open-source tools, language design, and how advancements in AI and interactive computing can transform programming. **Octave’s concise, specific language offers a unique bridge between abstract mathematical ideas and legible, efficient code—especially when integrated into the browser through JupyterLite and xeus-octave**.
The xeus-octave project is open-source and welcomes community contributions. Documentation, development tips, and guides are available in the official documentation. Furthermore, it is licensed under GPL v3, ensuring it remains free and open for all.
The integration of GNU Octave with JupyterLite via xeus-octave represents an exciting step forward in accessible scientific computing in the browser. Whether for teaching, collaboration, or research, you can now work with Octave anytime, anywhere, and from any device with a browser. This progress reflects how open-source innovation continues to expand horizons for students, educators, and scientists worldwide.