{"id":23937186,"url":"https://github.com/zasper-io/zasper","last_synced_at":"2025-05-14T14:07:54.730Z","repository":{"id":254350154,"uuid":"846263966","full_name":"zasper-io/zasper","owner":"zasper-io","description":"4X Better IDE than Jupyterlab","archived":false,"fork":false,"pushed_at":"2025-04-27T17:10:47.000Z","size":10875,"stargazers_count":2033,"open_issues_count":3,"forks_count":58,"subscribers_count":18,"default_branch":"main","last_synced_at":"2025-04-27T18:23:49.778Z","etag":null,"topics":["data-science","golang","ide","jupyter"],"latest_commit_sha":null,"homepage":"https://zasper.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zasper-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["prasunanand"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2024-08-22T21:07:26.000Z","updated_at":"2025-04-27T17:13:08.000Z","dependencies_parsed_at":"2024-09-07T08:43:16.507Z","dependency_job_id":"964083c1-0187-45a0-bfd7-d9eee11cad7a","html_url":"https://github.com/zasper-io/zasper","commit_stats":null,"previous_names":["zasper-io/zasper"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zasper-io%2Fzasper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zasper-io%2Fzasper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zasper-io%2Fzasper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zasper-io%2Fzasper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zasper-io","download_url":"https://codeload.github.com/zasper-io/zasper/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254159194,"owners_count":22024558,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-science","golang","ide","jupyter"],"created_at":"2025-01-06T02:01:09.467Z","updated_at":"2025-05-14T14:07:54.695Z","avatar_url":"https://github.com/zasper-io.png","language":"TypeScript","funding_links":["https://github.com/sponsors/prasunanand"],"categories":["TypeScript","The Data Science Toolbox","🌐 Additional Resources and Tools","13. Developer Tools \u0026 Integrations"],"sub_categories":["Miscellaneous Tools","Miscellaneous"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/logo.svg\" alt=\"Zasper\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    ⚡ High Performance IDE 🚀 Massive concurrency 🐥  Inspired by Jupyter\n\u003c/p\u003e\n\n\u003cp align=center\u003e\n  \u003ca href=\"https://github.com/zasper-io/zasper\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/last-commit/zasper-io/zasper\" alt=\"Last Commit\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/zasper-io/zasper/stargazers\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/stars/zasper-io/zasper\" alt=\"GitHub Stars\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/zasper-io/zasper/issues\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/issues/zasper-io/zasper\" alt=\"GitHub Issues\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/zasper-io/zasper/actions/workflows/gobuild.yml\" target=\"_blank\"\u003e\u003cimg alt=\"Github CD status\" src=\"https://github.com/zasper-io/zasper/actions/workflows/gobuild.yml/badge.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://www.youtube.com/watch?v=LvVOkYL_LzQ\" target=\"_blank\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/zasper-io/assets/refs/heads/main/play-demo.png\" alt=\"Zasper Demo\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\nZasper 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.\n\nIt implements [Jupyter's wire protocol](https://jupyter-client.readthedocs.io/en/latest/messaging.html) and can efficiently run Jupyter Notebooks.\n\n**Currently Zasper is fully supported on MacOS and Linux.** Windows has limited support.\n\n[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?repo=zasper-io/zasper)\n\n# Benchmarks\n\nHow is Zasper better than JupyterLab ?\n\n![](https://raw.githubusercontent.com/zasper-io/zasper-benchmark/main/assets/summary_resources.png)\n\n* Up to 5X Less CPU usage\n* Upto 40X Less RAM usage\n* Higher throughput\n* Lower latency\n* Highly resilient under very high loads\n\nBenchmark comparision report can be accessed [here](https://github.com/zasper-io/zasper-benchmark?tab=readme-ov-file#benchmarking-zasper-vs-jupyterlab).\n\n# 🔍  Why I built Zasper ?\n\nThere 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.\n\nOriginally 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.\n\nGo'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.\n\nPython'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.\n\nHence the Go version of Zasper was born!\n\n\n# Jupyter Kernels Supported\n\n* Python Kernels\n* Conda environments\n* R kernels [(iR)](https://github.com/IRkernel/IRkernel)\n* Julia Kernels [(iJulia)](https://julialang.github.io/IJulia.jl/stable/)\n* Ruby kernels [(iRuby)](https://github.com/SciRuby/iruby)\n* Javascript kernels [(Deno)](https://docs.deno.com/runtime/reference/cli/jupyter/)\n* Go Kernels ([GoNb](https://github.com/janpfeifer/gonb))\n* Compatible with all Jupyter kernels\n\n\n# Releases\n\nCurrent release version: `v0.1.0-alpha`\n\n| OS              | Web App | Desktop App |\n|-----------------|:-------:|:-----------:|\n| Mac 🍏 Silicon  |    ✅   |     ✅      |\n| Mac AMD 64      |    ✅   |     ✅      |\n| Debian AMD 64   |    ✅   |     ❌      |\n| Debian ARM 64   |    ✅   |     ❌      |\n| Debian i386     |    ✅   |     ❌      |\n| Redhat AMD 64   |    ✅   |     ❌      |\n| Redhat ARM 64   |    ✅   |     ❌      |\n| Redhat i386     |    ✅   |     ❌      |\n| Windows AMD 64  |    ✅   |     ❌      |\n| Windows ARM 64  |    ✅   |     ❌      |\n| Windows i386    |    ✅   |     ❌      |\n\nThe missing distributions will be out soon.\n\n## 📷 Screenshots\n\n### Editor\n![Editor](https://raw.githubusercontent.com/zasper-io/assets/refs/heads/main//editor.png)\n\n### Terminal\n![Editor](https://raw.githubusercontent.com/zasper-io/assets/refs/heads/main/terminal.png)\n\n### Launcher\n![Launcher](https://raw.githubusercontent.com/zasper-io/assets/refs/heads/main/launcher.png)\n\n### Jupyter Notebook\n![Notebook](https://raw.githubusercontent.com/zasper-io/assets/refs/heads/main/notebook.png)\n\n### Version Control\n![Version Control](https://raw.githubusercontent.com/zasper-io/assets/refs/heads/main/git.png)\n\n### Command Palette\n![Command Palette](https://raw.githubusercontent.com/zasper-io/assets/refs/heads/main/commandPalette.png)\n\n### Dark Mode\n![Dark mode](https://raw.githubusercontent.com/zasper-io/assets/refs/heads/main/dark.png)\n\n![Dark Notebook mode](https://raw.githubusercontent.com/zasper-io/assets/refs/heads/main/darkNotebook.png)\n\n## Architecture\n![architecture](./assets/architecture.svg)\n\n\n## ⚡️ Quick start\n\nZasper comes in two flavours:\n\n1. Web App\n2. Desktop App\n\n\n#### Initializing\n\nDownload `zasper` from Github and initialize the dependencies.\n\n```\ngit clone https://github.com/zasper-io/zasper\ncd zasper\nmake init\n```\n\n#### Web App\n\n```\nmake webapp-install\n```\n\nThis will create a binary `zasper` and add it to your go executables directory. Make sure you have go executables on your path.\n\nRun zasper in any directory to see if the installation was done correctly.\n\n```\nprasunanand@Prasuns-Laptop example % zasper --help\nUsage of zasper:\n  -cwd string\n    \tbase directory of project (default \".\")\n  -debug\n    \tsets log level to debug\n  -port string\n    \tport to start the server on (default \":8048\")\n```\n\n\nGo to any directory you want to serve and run `zasper`. This starts zasper server in the directory.\n\n```\nprasunanand@Prasuns-Laptop nbformat_go % zasper\n\n███████╗ █████╗ ███████╗██████╗ ███████╗██████╗\n╚══███╔╝██╔══██╗██╔════╝██╔══██╗██╔════╝██╔══██╗\n  ███╔╝ ███████║███████╗██████╔╝█████╗  ██████╔╝\n ███╔╝  ██╔══██║╚════██║██╔═══╝ ██╔══╝  ██╔══██╗\n███████╗██║  ██║███████║██║     ███████╗██║  ██║\n╚══════╝╚═╝  ╚═╝╚══════╝╚═╝     ╚══════╝╚═╝  ╚═╝\n\n2025/02/21 10:19:44 Zasper Server started! Listening on port :8048\n2025/02/21 10:19:44 Visit Zasper webapp on http://localhost:8048\n\n```\n\nGo to `http://localhost:8048`\n\n\n\n### Desktop App\n\n```\nmake electron-package-mac # on macOS\n```\n\n```\nmake electron-package-linux # on Linux\n```\n\nThis creates  `zasper-0.1.0-arm64.dmg`(macOS) and `zasper_0.1.0_arm64.deb`(Debian) installer.\n\n```\nprasunanand@Prasuns-Laptop zasper % ls -l ui/dist\ntotal 626360\n-rw-r--r--   1 prasunanand  staff       1713 Feb 21 10:31 builder-debug.yml\n-rw-r--r--   1 prasunanand  staff        353 Feb 21 10:29 builder-effective-config.yaml\ndrwxr-xr-x  21 prasunanand  staff        672 Feb 21 10:30 linux-arm64-unpacked\ndrwxr-xr-x   3 prasunanand  staff         96 Feb 21 10:29 mac-arm64\n-rw-r--r--@  1 prasunanand  staff  196642562 Feb 21 10:30 zasper-0.1.0-arm64.dmg\n-rw-r--r--   1 prasunanand  staff     204747 Feb 21 10:30 zasper-0.1.0-arm64.dmg.blockmap\n-rw-r--r--   1 prasunanand  staff  119088602 Feb 21 10:31 zasper_0.1.0_arm64.deb\n\n```\n\nInstall `zasper-0.1.0-arm64.dmg` to your machine.\n\n## Jupyter kernels\n\nPlease ensure you have jupyter kernels installed.\n\n```\nprasunanand@Prasuns-Laptop examples % jupyter kernelspec list\nAvailable kernels:\n  deno          /Users/prasunanand/Library/Jupyter/kernels/deno\n  firstenv      /Users/prasunanand/Library/Jupyter/kernels/firstenv\n  gonb          /Users/prasunanand/Library/Jupyter/kernels/gonb\n  ir            /Users/prasunanand/Library/Jupyter/kernels/ir\n  julia-1.11    /Users/prasunanand/Library/Jupyter/kernels/julia-1.11\n  ruby3         /Users/prasunanand/Library/Jupyter/kernels/ruby3\n  python3       /Users/prasunanand/Library/Python/3.9/share/jupyter/kernels/python3\n```\nThe simplest way to install a Python 3 Jupyter kernel is\n\n```\npip install jupyter\n```\n\nYou can install other kernels as well. Just Google it!\n\n# 🪵 Logging\n\nBy default, the application writes logs to the following locations:\n\n```bash\non Linux: ~/.config/zasper/logs/main.log\non macOS: ~/Library/Logs/zasper/main.log\non Windows: %USERPROFILE%\\AppData\\Roaming\\zasper\\logs\\main.log\n```\n\n# 🧭 Roadmap\n\nData Scientists and AI Engineers spend most of their time running Notebooks on IDEs and hence need a robust ecosystem.\nZasper aspires to be a full fledged IDE and the future development will be along making it more efficient by:\n\n* Allowing custom data apps support rather than just Jupyter Notebooks.\n* Easier integration with the existing tools.\n* Zasper Hub for Self Hosted deployment in the cloud.\n\n\n# 🤞 Support Zasper\n\nIf you like Zasper and want to support me in my mission, please consider [sponsoring me on GitHub](https://github.com/sponsors/prasunanand).\n\n\n#  🚀 Sponsors\n\nA few months ago I received a grant to help me building Zasper.\n\n\u003cimg height=100px src=\"./assets/foss-united.png\"\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \u003cimg height=80px src=\"./assets/zerodha.png\"\u003e\n\n\n# 🌐 Community\n\nJoin Zasper Community on [Slack](https://join.slack.com/t/zasper/shared_invite/zt-30sx3uo8w-w~sw4Kje1aoUjxY5MZ_Fkg)\n\n\u003cp align=center\u003e\n  \u003ca href=\"https://join.slack.com/t/zasper/shared_invite/zt-30sx3uo8w-w~sw4Kje1aoUjxY5MZ_Fkg\" target=\"_blank\"\u003e\n      \u003cimg height=120px src=\"./assets/slack.svg\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n# Contributors\n\n\u003ca href = \"https://github.com/zasper-io/zasper/graphs/contributors\"\u003e\n  \u003cimg src = \"https://contrib.rocks/image?repo=zasper-io/zasper\"/\u003e\n\u003c/a\u003e\n\n# Contributing\n\nYou can contribute in multiple ways:\n* Documentation\n* Bug Filing\n* Submitting PRs or reviewing them\n\n# ⭐️ Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=zasper-io/zasper\u0026type=Date)](https://star-history.com/#zasper-io/zasper\u0026Date)\n\n# Code of Conduct\n\nSee [Code of conduct](./CODE_OF_CONDUCT.md)\n\n# 🙏 Thanks to Jupyter Community\n\nZasper 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.\n\n# Copyright\n\nPrasun Anand\n\n## ⚖️ License\n\nZasper is licensed under AGPL-3.0 license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzasper-io%2Fzasper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzasper-io%2Fzasper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzasper-io%2Fzasper/lists"}