{"id":24097306,"url":"https://github.com/calkit/calkit","last_synced_at":"2026-05-11T02:31:28.068Z","repository":{"id":257791932,"uuid":"845780567","full_name":"calkit/calkit","owner":"calkit","description":"A framework and toolkit for analytical/research projects, with an emphasis on reproducibility.","archived":false,"fork":false,"pushed_at":"2025-05-07T13:22:17.000Z","size":9090,"stargazers_count":20,"open_issues_count":170,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-07T14:27:06.299Z","etag":null,"topics":["conda","docker","dvc","environments","git","latex","open-science","overleaf","pipelines","reproducibility","reproducible-research","reproducible-science","research","version-control","workflow-management"],"latest_commit_sha":null,"homepage":"https://docs.calkit.org","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/calkit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["petebachant"],"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-21T23:10:26.000Z","updated_at":"2025-05-07T13:21:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"ba05416a-3a84-427e-a2d0-0d0ea81ebc63","html_url":"https://github.com/calkit/calkit","commit_stats":null,"previous_names":["calkit/calkit"],"tags_count":84,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calkit%2Fcalkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calkit%2Fcalkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calkit%2Fcalkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calkit%2Fcalkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/calkit","download_url":"https://codeload.github.com/calkit/calkit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252894670,"owners_count":21821033,"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":["conda","docker","dvc","environments","git","latex","open-science","overleaf","pipelines","reproducibility","reproducible-research","reproducible-science","research","version-control","workflow-management"],"created_at":"2025-01-10T13:26:55.264Z","updated_at":"2026-05-11T02:31:28.040Z","avatar_url":"https://github.com/calkit.png","language":"Python","funding_links":["https://github.com/sponsors/petebachant"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://calkit.org\" target=\"_blank\"\u003e\n    \u003cimg width=\"40%\" src=\"docs/img/calkit-no-bg.png\" alt=\"Calkit\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://docs.calkit.org\" target=\"_blank\"\u003e\n    Documentation\n  \u003c/a\u003e\n  |\n  \u003ca href=\"https://docs.calkit.org/tutorials\" target=\"_blank\"\u003e\n    Tutorials\n  \u003c/a\u003e\n  |\n  \u003ca href=\"https://github.com/orgs/calkit/discussions\" target=\"_blank\"\u003e\n    Discussions\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- INCLUDE: docs/index.md --\u003e\n\nCalkit helps you manage and automate research projects like a software\nengineer.\n\nDefine computational environments,\nsteps that process your data, create figures,\npresentations, and publications, connect to external tools,\nthen iterate quickly and painlessly until your research questions are\nanswered, tracking changes to all files along the way.\nAt the end, deliver your entire project as a self-contained, self-documenting,\nversion-controlled, and\n[single button reproducible](https://doi.org/10.1190/1.1822162)\n\"calculation kit\" so you and others can easily verify\nand build upon the results.\n\n## Guiding principles\n\n- Quality comes from iteration. Automation reduces the time and effort\n  needed to iterate, thereby increasing iteration and quality.\n- Automating a step can and should take roughly\n  the same amount of time as doing it once manually,\n  therefore it's almost always worth it.\n- Working in a \"quick and dirty\" way can easily become _not quick_ when\n  the dirtiness results in mistakes and/or discourages working in small steps.\n\n## Features\n\n- A simplified [version control](https://docs.calkit.org/version-control)\n  interface that unifies Git and DVC (Data Version Control),\n  so all materials can be kept in the same project repository.\n  This way, code doesn't need to be siloed away from other\n  important artifacts like datasets, models, figures, or article PDFs,\n  allowing you to work on all parts of a project without hopping around to\n  different tools.\n- [Computational environment management](https://docs.calkit.org/environments) with support for many\n  languages and environment managers: Conda, Docker, uv, Julia, Renv, and more.\n  No need to create and update environments on your own. Calkit will handle\n  them as needed.\n- An environment-aware build system or [pipeline](https://docs.calkit.org/pipeline) with\n  a simple declarative syntax and\n  output caching so you don't need to think about which steps or stages\n  need to be rerun after changing any part of the project.\n  Simply call `calkit run`.\n  Compose your pipeline from many different kinds of stages,\n  including simple scripts, commands, Jupyter Notebooks, LaTeX, and more.\n- A complementary self-hostable and GitHub-integrated\n  [cloud platform](https://github.com/calkit/calkit-cloud)\n  to facilitate backup, collaboration,\n  and sharing throughout the entire research lifecycle.\n- [Overleaf integration](https://docs.calkit.org/overleaf/), so\n  analysis, visualization, and writing can all stay in sync\n  (no more manual uploads!)\n- Support for running on high performance computing (HPC) systems that use\n  [SLURM schedulers](https://docs.calkit.org/pipeline/slurm).\n- Support for running with [GitHub Actions](https://docs.calkit.org/tutorials/github-actions).\n- Extensions for doing all of the above graphically in\n  [JupyterLab](https://docs.calkit.org/jupyterlab) and\n  [VS Code](https://marketplace.visualstudio.com/items?itemName=Calkit.calkit-vscode).\n\n\u003c!-- END INCLUDE --\u003e\n\n## Installation\n\n\u003c!-- INCLUDE: docs/installation.md +1 --\u003e\n\nOn Linux, macOS, or Windows Git Bash,\ninstall Calkit and [uv](https://docs.astral.sh/uv/)\n(if not already installed) with:\n\n```sh\ncurl -LsSf install.calkit.org | sh\n```\n\nOr with Windows Command Prompt or PowerShell:\n\n```powershell\npowershell -ExecutionPolicy ByPass -c \"irm install-ps1.calkit.org | iex\"\n```\n\nIf you already have uv installed, install Calkit with:\n\n```sh\nuv tool install calkit-python\n```\n\nYou can also install with your system Python:\n\n```sh\npip install calkit-python\n```\n\nTo effectively use Calkit, you'll want to ensure [Git](https://git-scm.com)\nis installed and properly configured.\nYou may also want to install [Docker](https://docker.com),\nsince that is the default method by which LaTeX environments are created.\nIf you want to use the [Calkit Cloud](https://calkit.io)\nfor collaboration and backup as a DVC remote,\nyou can [set up cloud integration](https://docs.calkit.org/cloud-integration) with:\n\n```sh\ncalkit cloud login\n```\n\nIf you use AI agents like Claude, Copilot, or Codex,\nsee [AI tools](https://docs.calkit.org/ai-tools)\nto learn how to install agent skills for working with Calkit.\n\n### Use without installing\n\nIf you want to use Calkit without installing it,\nyou can use uv's `uvx` command to run it directly:\n\n```sh\nuvx calk9 --help\n```\n\n### Calkit Assistant\n\nFor Windows users, the\n[Calkit Assistant](https://github.com/calkit/calkit-assistant)\napp is the easiest way to get everything set up and ready to work in\nVS Code, which can then be used as the primary app for working on\nall scientific or analytical computing projects.\n\n![Calkit Assistant](https://github.com/calkit/calkit-assistant/blob/main/resources/screenshot.png?raw=true)\n\n\u003c!-- END INCLUDE --\u003e\n\n## Quickstart\n\n\u003c!-- INCLUDE: docs/quickstart.md +1 --\u003e\n\n\u003c!-- prettier-ignore --\u003e\n!!! note\n    `ck` is an abbreviated alias for the `calkit` executable.\n    All `calkit` commands can be run as `ck` instead, e.g., `ck save -am \"...\"`.\n\n### From an existing project\n\nIf you want to use Calkit with an existing project,\nnavigate into its working directory and use the `xr` command to start\nexecuting and recording your scripts, notebooks, LaTeX files, etc.,\nas reproducible pipeline stages.\nFor example:\n\n```sh\ncalkit xr scripts/analyze.py\n\ncalkit xr notebooks/plot.ipynb\n\ncalkit xr paper/main.tex\n```\n\nCalkit will attempt to detect environments, inputs, and outputs and\nsave them in `calkit.yaml`.\nIf successful,\nyou'll be able to run the full pipeline with:\n\n```sh\ncalkit run\n```\n\nNext, make a change to e.g., a script and look at the output of\n`calkit status`.\nYou'll see that the pipeline has a stage that is out-of-date:\n\n```sh\n---------------------------- Pipeline ----------------------------\nanalyze:\n        changed deps:\n                modified:           scripts/analyze.py\n```\n\nThis can be fixed with another call to `calkit run`.\n\nYou can save (add and commit) all changes with:\n\n```sh\ncalkit save -am \"Add to pipeline\"\n```\n\n### Fresh from a Calkit project template\n\nCreate a new project from the\n[`calkit/example-basic`](https://github.com/calkit/example-basic)\ntemplate with:\n\n```sh\ncalkit new project my-research \\\n    --title \"My research\" \\\n    --template calkit/example-basic \\\n    --cloud\n```\n\nNote the `--cloud` flag requires [cloud integration](https://docs.calkit.org/cloud-integration)\nto be set up, but can be omitted if the project doesn't need to be backed up to\nthe cloud or shared with collaborators.\nCloud integration can also be set up later.\n\nNext, move into the project folder and run the pipeline,\nwhich consists of several stages defined in `calkit.yaml`:\n\n\u003c!-- TODO: This takes a long time to pull the image --\u003e\n\n```sh\ncd my-research\ncalkit run\n```\n\nNext, make some edits to a script or LaTeX file and run `calkit status` to\nsee what stages are out-of-date.\nFor example:\n\n```sh\n---------------------------- Pipeline ----------------------------\nbuild-paper:\n        changed deps:\n                modified:           paper/paper.tex\n```\n\nExecute `calkit run` again to bring everything up-to-date.\n\nTo back up or save the project, call:\n\n```sh\ncalkit save -am \"Run pipeline\"\n```\n\n\u003c!-- END INCLUDE --\u003e\n\n## Get involved\n\nWe welcome all kinds of contributions!\nSee [CONTRIBUTING.md](CONTRIBUTING.md) to learn how to get involved.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalkit%2Fcalkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcalkit%2Fcalkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalkit%2Fcalkit/lists"}