{"id":21288590,"url":"https://github.com/manugraj/ganimede","last_synced_at":"2025-07-11T13:31:44.827Z","repository":{"id":49589684,"uuid":"374363825","full_name":"manugraj/ganimede","owner":"manugraj","description":"Store,Version and Run jupyter notebook via ReST api","archived":false,"fork":false,"pushed_at":"2023-02-08T01:44:33.000Z","size":261,"stargazers_count":5,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-15T04:52:12.516Z","etag":null,"topics":["fastapi","jupyter","jupyter-notebook","papermill","poetry","redis"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/manugraj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-06-06T13:11:44.000Z","updated_at":"2024-08-08T04:45:22.000Z","dependencies_parsed_at":"2024-01-03T07:08:53.385Z","dependency_job_id":"10a129c4-64b2-47b0-b972-dc42bd066132","html_url":"https://github.com/manugraj/ganimede","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manugraj%2Fganimede","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manugraj%2Fganimede/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manugraj%2Fganimede/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manugraj%2Fganimede/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/manugraj","download_url":"https://codeload.github.com/manugraj/ganimede/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225726374,"owners_count":17514511,"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":["fastapi","jupyter","jupyter-notebook","papermill","poetry","redis"],"created_at":"2024-11-21T12:23:06.896Z","updated_at":"2024-11-21T12:23:07.404Z","avatar_url":"https://github.com/manugraj.png","language":"Python","funding_links":[],"categories":["Rendering/Publishing/Conversion"],"sub_categories":[],"readme":"# Ganimede [![Mentioned in Awesome \u003cawesome-jupyter\u003e](https://awesome.re/mentioned-badge.svg)](https://github.com/markusschanta/awesome-jupyter)\n\n\u003ca href=\"https://www.producthunt.com/posts/ganimede?utm_source=badge-featured\u0026utm_medium=badge\u0026utm_souce=badge-ganimede\" target=\"_blank\"\u003e\u003cimg src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=299971\u0026theme=dark\" alt=\"Ganimede - Painless jupyter notebook management for data pipelines | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /\u003e\u003c/a\u003e\n\n  Store, version, edit and execute notebooks in sandboxes and integrate them directly via REST interfaces.\n\n\n## Use cases\n- Ability to write machine learning logic and expose them to systems as rest api\n- Write Jupyter nb locally and run them in a centralised powerful machine to reduce cost\n- Create framework to directly connect Jupyter notebook to other systems \n\n## Requirements\n- docker\n- redis\n\n## Stack\n- Redis\n- FastAPI\n- Papermill\n- Jupyter\n- Poetry\n- Docker\n\n## Build\n- Clone the repo\n- Run `poetry install`\n- Run `run.py` or `scripts\\launch.sh` or `cd docker;docker-compose up -d`\n\n## Deployment\n- Clone the repo and in `docker` folder, run `docker-compose build`. The docker image will be build\n- Push to registry or use your custom publishing method to publish the image\n\n## API Docs\n- Start the application\n- Go to `localhost:8000/docs` for swagger and `localhost:8000/redoc` for redoc\n\n### Main APIs\n\n#### Jupyter Notebook\n- `define` for defining projects and its dependencies\n- `store` for storing notebook and associated files\n- `run` for executing a jupyter file\n- `html` to get a rendered page of executed notebook\n- `output` to get the output of Jupyter execution in json format\n- `plain_text` to get the plain text output\n\n#### Jupyter Notebook Editor\n- `edit` for editing notebook in a sandbox\n- `view` for viewing notebook in sandbox and can run it, but not save the changes\n\n#### Jupyter Updater\n- `update` for storing the next version of notebook from `edit` endpoint\n\n## TODO\n- [x] Provide live environment for editing and running jupyter\n- [ ] Custom transformations for jupyter output\n- [ ] Scheduled cleanup of created jupyter docker containers\n- [ ] Change container implementation to podman or other rootless systems\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanugraj%2Fganimede","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanugraj%2Fganimede","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanugraj%2Fganimede/lists"}