{"id":20013760,"url":"https://github.com/gregorybchris/cado","last_synced_at":"2025-07-18T19:07:33.189Z","repository":{"id":147616988,"uuid":"250968193","full_name":"gregorybchris/cado","owner":"gregorybchris","description":"Python notebook IDE with a focus on reactivity","archived":false,"fork":false,"pushed_at":"2023-11-26T00:48:10.000Z","size":11134,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-03T03:47:49.905Z","etag":null,"topics":["book","cells","code","data","editor","ide","jupyter","jupyter-notebook","notebook","python","reactive","science"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gregorybchris.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"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}},"created_at":"2020-03-29T06:23:45.000Z","updated_at":"2023-11-28T15:14:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"61ec79e9-0211-4451-b4f5-eaf84747df6a","html_url":"https://github.com/gregorybchris/cado","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gregorybchris/cado","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregorybchris%2Fcado","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregorybchris%2Fcado/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregorybchris%2Fcado/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregorybchris%2Fcado/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gregorybchris","download_url":"https://codeload.github.com/gregorybchris/cado/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregorybchris%2Fcado/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265816164,"owners_count":23833091,"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":["book","cells","code","data","editor","ide","jupyter","jupyter-notebook","notebook","python","reactive","science"],"created_at":"2024-11-13T07:37:46.814Z","updated_at":"2025-07-18T19:07:33.169Z","avatar_url":"https://github.com/gregorybchris.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/cado-banner.png\"\u003e\n  \u003ch1\u003ecado\u003c/h1\u003e\n\n  \u003cp\u003e\n    \u003cstrong\u003ePython notebook IDE with a focus on reactivity\u003c/strong\u003e\n  \u003c/p\u003e\n\n  \u003cbr\u003e\n  \u003cdiv\u003e\n    \u003ca href=\"https://badge.fury.io/py/cado\"\u003e\u003cimg src=\"https://badge.fury.io/py/cado.svg\" alt=\"PyPI\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://pepy.tech/project/cado\"\u003e\u003cimg src=\"https://pepy.tech/badge/cado\" alt=\"Downloads\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/gregorybchris/cado/actions/workflows/ci.yaml\"\u003e\u003cimg src=\"https://github.com/gregorybchris/cado/actions/workflows/ci.yaml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003c/div\u003e\n  \u003cbr\u003e\n\u003c/div\u003e\n\n## About\n\n`cado` is a notebook IDE for Python, like [Jupyter](https://jupyter.org/), but with a reactive cell model, taking inspiration from [Observable](https://observablehq.com/). Each cell defines its own outputs that other cells can listen to. When a child cell runs, it uses cached outputs from parent cells. And when the output of a parent cell updates, the change propagates to all child cells automatically.\n\n## Installation\n\n```bash\npip install cado\n```\n\n## Usage\n\n```bash\n# Start up a cado server\ncado up\n\n# Open http://localhost:8000 in a browser\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/demo.gif\" height=600\u003e\n\u003c/p\u003e\n\n## Features\n\nIf you have ideas for new features feel free to create an issue or submit a pull request!\n\n- [x] Reactive cells\n- [x] Auto-save to disk\n- [x] Keyboard shortcuts\n- [x] Drag cells to reorder\n- [x] Markdown mode\n- [x] Notebook files viewer\n\n## Keyboard Shortcuts\n\n| Action                                       | Command        |\n| -------------------------------------------- | -------------- |\n| Make the cell above the active cell          | `UpArrow`      |\n| Make the cell below the active cell          | `DownArrow`    |\n| Run the active cell                          | `Shift+Enter`  |\n| Clear the active cell                        | `Shift+Delete` |\n| Turn on edit mode                            | `Enter`        |\n| Turn off edit mode                           | `Escape`       |\n| Create a new cell before the active cell     | `Control+a`    |\n| Create a new cell after the active cell      | `Control+b`    |\n| Create a new cell at the end of the notebook | `Control+n`    |\n| Delete the active cell                       | `Control+d`    |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregorybchris%2Fcado","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgregorybchris%2Fcado","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregorybchris%2Fcado/lists"}