https://github.com/zasper-io/zasper
4X Better IDE than Jupyterlab
https://github.com/zasper-io/zasper
data-science golang ide jupyter
Last synced: 9 days ago
JSON representation
4X Better IDE than Jupyterlab
- Host: GitHub
- URL: https://github.com/zasper-io/zasper
- Owner: zasper-io
- License: agpl-3.0
- Created: 2024-08-22T21:07:26.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-04-27T17:10:47.000Z (26 days ago)
- Last Synced: 2025-04-27T18:23:49.778Z (26 days ago)
- Topics: data-science, golang, ide, jupyter
- Language: TypeScript
- Homepage: https://zasper.io
- Size: 10.4 MB
- Stars: 2,033
- Watchers: 18
- Forks: 58
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-repositories - zasper-io/zasper - Supercharged IDE for Data Science (Go)
README
![]()
β‘ High Performance IDE π Massive concurrency π₯ Inspired by JupyterZasper is an IDE designed from the ground up to support massive concurrency. It provides a minimal memory footprint, exceptional speed, and the ability to handle numerous concurrent connections.
It implements [Jupyter's wire protocol](https://jupyter-client.readthedocs.io/en/latest/messaging.html) and can efficiently run Jupyter Notebooks.
**Currently Zasper is fully supported on MacOS and Linux.** Windows has limited support.
[](https://github.com/codespaces/new?repo=zasper-io/zasper)
# Benchmarks
How is Zasper better than JupyterLab ?

* Up to 5X Less CPU usage
* Upto 40X Less RAM usage
* Higher throughput
* Lower latency
* Highly resilient under very high loadsBenchmark comparision report can be accessed [here](https://github.com/zasper-io/zasper-benchmark?tab=readme-ov-file#benchmarking-zasper-vs-jupyterlab).
# π Why I built Zasper ?
There are several proprietary JupyterLab-like frontend tools available in the market, such as Databricks Notebooks and Deepnote Notebooks. However, none of them are free or open-source, and most require users to work in the cloud. Even the modest personal computers these days are typically equipped with at least 8 GB of RAM, an 8-core CPU, and a decent 4 GB GPU, I saw an opportunity to create a solution that works seamlessly on local machines. Thatβs why I decided to build Zasper which can effectively utilize the resources available and guarantee maximum efficiency.
Originally I wrote https://github.com/zasper-io/zasper_py (now in Private mode) to build a new frontend around Jupyter. During the process I realized, Go is the ideal choice to rebuild the Jupyter project. Go has excellent support for REST, RPC, WS protocols. Concurrency and Performance are the areas where Go shines.
Go's Concurrency: Better suited for applications requiring both concurrency and parallelism, as it leverages multiple cores effectively. It's easier to handle blocking operations without freezing the system.
Python's Event Loop: Ideal for I/O-bound applications that need to handle a lot of asynchronous tasks without blocking. However, it struggles with CPU-bound tasks and lacks native parallelism unless additional worker threads are used.
Hence the Go version of Zasper was born!
# Jupyter Kernels Supported
* Python Kernels
* Conda environments
* R kernels [(iR)](https://github.com/IRkernel/IRkernel)
* Julia Kernels [(iJulia)](https://julialang.github.io/IJulia.jl/stable/)
* Ruby kernels [(iRuby)](https://github.com/SciRuby/iruby)
* Javascript kernels [(Deno)](https://docs.deno.com/runtime/reference/cli/jupyter/)
* Go Kernels ([GoNb](https://github.com/janpfeifer/gonb))
* Compatible with all Jupyter kernels# Releases
Current release version: `v0.1.0-alpha`
| OS | Web App | Desktop App |
|-----------------|:-------:|:-----------:|
| Mac π Silicon | β | β |
| Mac AMD 64 | β | β |
| Debian AMD 64 | β | β |
| Debian ARM 64 | β | β |
| Debian i386 | β | β |
| Redhat AMD 64 | β | β |
| Redhat ARM 64 | β | β |
| Redhat i386 | β | β |
| Windows AMD 64 | β | β |
| Windows ARM 64 | β | β |
| Windows i386 | β | β |The missing distributions will be out soon.
## π· Screenshots
### Editor
### Terminal
### Launcher
### Jupyter Notebook
### Version Control
### Command Palette
### Dark Mode

## Architecture
## β‘οΈ Quick start
Zasper comes in two flavours:
1. Web App
2. Desktop App#### Initializing
Download `zasper` from Github and initialize the dependencies.
```
git clone https://github.com/zasper-io/zasper
cd zasper
make init
```#### Web App
```
make webapp-install
```This will create a binary `zasper` and add it to your go executables directory. Make sure you have go executables on your path.
Run zasper in any directory to see if the installation was done correctly.
```
prasunanand@Prasuns-Laptop example % zasper --help
Usage of zasper:
-cwd string
base directory of project (default ".")
-debug
sets log level to debug
-port string
port to start the server on (default ":8048")
```Go to any directory you want to serve and run `zasper`. This starts zasper server in the directory.
```
prasunanand@Prasuns-Laptop nbformat_go % zasperββββββββ ββββββ βββββββββββββββ βββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββ
βββββ ββββββββββββββββββββββββββββββ ββββββββ
βββββ βββββββββββββββββββββββ ββββββ ββββββββ
βββββββββββ ββββββββββββββ βββββββββββ βββ
βββββββββββ ββββββββββββββ βββββββββββ βββ2025/02/21 10:19:44 Zasper Server started! Listening on port :8048
2025/02/21 10:19:44 Visit Zasper webapp on http://localhost:8048```
Go to `http://localhost:8048`
### Desktop App
```
make electron-package-mac # on macOS
``````
make electron-package-linux # on Linux
```This creates `zasper-0.1.0-arm64.dmg`(macOS) and `zasper_0.1.0_arm64.deb`(Debian) installer.
```
prasunanand@Prasuns-Laptop zasper % ls -l ui/dist
total 626360
-rw-r--r-- 1 prasunanand staff 1713 Feb 21 10:31 builder-debug.yml
-rw-r--r-- 1 prasunanand staff 353 Feb 21 10:29 builder-effective-config.yaml
drwxr-xr-x 21 prasunanand staff 672 Feb 21 10:30 linux-arm64-unpacked
drwxr-xr-x 3 prasunanand staff 96 Feb 21 10:29 mac-arm64
-rw-r--r--@ 1 prasunanand staff 196642562 Feb 21 10:30 zasper-0.1.0-arm64.dmg
-rw-r--r-- 1 prasunanand staff 204747 Feb 21 10:30 zasper-0.1.0-arm64.dmg.blockmap
-rw-r--r-- 1 prasunanand staff 119088602 Feb 21 10:31 zasper_0.1.0_arm64.deb```
Install `zasper-0.1.0-arm64.dmg` to your machine.
## Jupyter kernels
Please ensure you have jupyter kernels installed.
```
prasunanand@Prasuns-Laptop examples % jupyter kernelspec list
Available kernels:
deno /Users/prasunanand/Library/Jupyter/kernels/deno
firstenv /Users/prasunanand/Library/Jupyter/kernels/firstenv
gonb /Users/prasunanand/Library/Jupyter/kernels/gonb
ir /Users/prasunanand/Library/Jupyter/kernels/ir
julia-1.11 /Users/prasunanand/Library/Jupyter/kernels/julia-1.11
ruby3 /Users/prasunanand/Library/Jupyter/kernels/ruby3
python3 /Users/prasunanand/Library/Python/3.9/share/jupyter/kernels/python3
```
The simplest way to install a Python 3 Jupyter kernel is```
pip install jupyter
```You can install other kernels as well. Just Google it!
# πͺ΅ Logging
By default, the application writes logs to the following locations:
```bash
on Linux: ~/.config/zasper/logs/main.log
on macOS: ~/Library/Logs/zasper/main.log
on Windows: %USERPROFILE%\AppData\Roaming\zasper\logs\main.log
```# π§ Roadmap
Data Scientists and AI Engineers spend most of their time running Notebooks on IDEs and hence need a robust ecosystem.
Zasper aspires to be a full fledged IDE and the future development will be along making it more efficient by:* Allowing custom data apps support rather than just Jupyter Notebooks.
* Easier integration with the existing tools.
* Zasper Hub for Self Hosted deployment in the cloud.# π€ Support Zasper
If you like Zasper and want to support me in my mission, please consider [sponsoring me on GitHub](https://github.com/sponsors/prasunanand).
# π Sponsors
A few months ago I received a grant to help me building Zasper.
Β Β Β Β
# π Community
Join Zasper Community on [Slack](https://join.slack.com/t/zasper/shared_invite/zt-30sx3uo8w-w~sw4Kje1aoUjxY5MZ_Fkg)
# Contributors
# Contributing
You can contribute in multiple ways:
* Documentation
* Bug Filing
* Submitting PRs or reviewing them# βοΈ Star History
[](https://star-history.com/#zasper-io/zasper&Date)
# Code of Conduct
See [Code of conduct](./CODE_OF_CONDUCT.md)
# π Thanks to Jupyter Community
Zasper would not exist without the incredible work of the Jupyter community. Zasper uses the Jupyter wire protocol and draws inspiration from its architecture. Deep thanks to all Jupyter contributors for laying the groundwork. Data Science Notebooks would not have existed without them.
# Copyright
Prasun Anand
## βοΈ License
Zasper is licensed under AGPL-3.0 license.