Documentation | Tutorials | Discussions
It's six months since you submitted your paper, do you know exactly how your figures and results were generated?
You will if they're part of a Calkit project.
Calkit helps you integrate code, data, figures, results, publications, and more into a cohesive, traceable, and portable knowledge creation system, so every output can be traced back to its source and reproduced with a single command.
With industry standard tools combined into a unified and simplified experience tailored for research, you can reap the rewards of reproducibility and automation without the cognitive overhead.
- A simplified version control interface that unifies Git and DVC (Data Version Control), so everything can be kept in the same project repository. This way, code doesn't need to be siloed away from other important artifacts like datasets, models, figures, or article PDFs, allowing you to work on all parts of a project without hopping around to different tools.
- Computational environment management with support for many languages and environment managers: Conda, Docker, uv, Julia, Renv, and more. No need to create and update environments on your own. Calkit will handle them as needed.
- An environment-aware build system or pipeline with
a simple declarative syntax and
output caching so you don't need to think about which steps or stages
need to be rerun after changing any part of the project.
Simply call
calkit run. Compose your pipeline from many different kinds of stages, including simple scripts, commands, Jupyter Notebooks, LaTeX, and more. - A complementary self-hostable and GitHub-integrated cloud platform to facilitate backup, collaboration, and sharing throughout the entire research lifecycle.
- Overleaf integration, so analysis, visualization, and writing can all stay in sync (no more manual uploads!)
- Support for running on high performance computing (HPC) systems that use PBS or SLURM schedulers.
- Support for automated running with GitHub Actions.
- Extensions for doing all of the above graphically in JupyterLab and VS Code.
On Linux, macOS, or Windows Git Bash, install Calkit and uv (if not already installed) with:
curl -LsSf install.calkit.org | shOr with Windows Command Prompt or PowerShell:
powershell -ExecutionPolicy ByPass -c "irm install-ps1.calkit.org | iex"If you already have uv installed, install Calkit with:
uv tool install calkit-pythonYou can also install with your system Python:
pip install calkit-pythonTo effectively use Calkit, you'll want to ensure Git is installed and properly configured. You may also want to install Docker, since that is the default method by which LaTeX environments are created. If you want to use the Calkit Cloud for collaboration and backup as a DVC remote, you can set up cloud integration with:
calkit cloud loginIf you use AI agents like Claude, Copilot, or Codex, see AI tools to learn how to install agent skills for working with Calkit.
If you want to use Calkit without installing it,
you can use uv's uvx command to run it directly:
uvx calk9 --helpCalkit ships a flake at the root of its repo, so Nix users can pull the CLI into their environments alongside their other tools.
Run it ad hoc without installing:
nix run github:calkit/calkit -- --helpDrop into a shell that has calkit, git, and uv on PATH:
nix shell github:calkit/calkitAdd it to your own flake.nix as an input:
{
inputs.calkit.url = "github:calkit/calkit";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
outputs = { self, nixpkgs, calkit }: {
devShells.x86_64-linux.default =
nixpkgs.legacyPackages.x86_64-linux.mkShell {
packages = [ calkit.packages.x86_64-linux.default ];
};
};
}Then nix develop will give you a shell with the Calkit CLI ready to
use. To pin a specific Calkit release inside the shell, set the
CALKIT_VERSION environment variable (e.g. CALKIT_VERSION=0.41.0)
before invoking calkit.
The flake is currently a thin wrapper around uvx --from calkit-python calkit. It depends on uv from nixpkgs and fetches the published
wheel from PyPI on first use. This trades a fully Nix-native build for
zero version-drift maintenance, and avoids the macOS docx2pdf /
appscript and JupyterLab labextension build issues that block a pure
nixpkgs derivation today. If you want a fully nixpkgs-native build,
see the community calkit-nix
flake.
Nix isn't supported natively on Windows; run Calkit inside WSL2 and use the flake there.
If a project requires a Calkit version other than the one you have
installed, use the top-level --use-version flag to re-invoke the CLI
under that release without changing your installation:
calkit --use-version 0.38 runThis re-execs the CLI via uvx --from calkit-python@<version> calkit,
so it requires uv on PATH.
You can also declare a minimum version in calkit.yaml;
see
Pinning the Calkit CLI version.
For Windows users, the Calkit Assistant app is the easiest way to get everything set up and ready to work in VS Code, which can then be used as the primary app for working on all scientific or analytical computing projects.
!!! note
ck is an abbreviated alias for the calkit executable.
All calkit commands can be run as ck instead, e.g., ck save -am "...".
If you want to use Calkit with an existing project,
navigate into its working directory and use the xr command to start
executing and recording your scripts, notebooks, LaTeX files, etc.,
as reproducible pipeline stages.
For example:
calkit xr scripts/analyze.py
calkit xr notebooks/plot.ipynb
calkit xr paper/main.texCalkit will attempt to detect environments, inputs, and outputs and
save them in calkit.yaml.
If successful,
you'll be able to run the full pipeline with:
calkit runNext, make a change to e.g., a script and look at the output of
calkit status.
You'll see that the pipeline has a stage that is out-of-date:
---------------------------- Pipeline ----------------------------
analyze:
changed deps:
modified: scripts/analyze.pyThis can be fixed with another call to calkit run.
You can save (add and commit) all changes with:
calkit save -am "Add to pipeline"Create a new project from the
calkit/example-basic
template with:
calkit new project my-research \
--title "My research" \
--template calkit/example-basic \
--cloudNote the --cloud flag requires cloud integration
to be set up, but can be omitted if the project doesn't need to be backed up to
the cloud or shared with collaborators.
Cloud integration can also be set up later.
Next, move into the project folder and run the pipeline,
which consists of several stages defined in calkit.yaml:
cd my-research
calkit runNext, make some edits to a script or LaTeX file and run calkit status to
see what stages are out-of-date.
For example:
---------------------------- Pipeline ----------------------------
build-paper:
changed deps:
modified: paper/paper.texExecute calkit run again to bring everything up-to-date.
To back up or save the project, call:
calkit save -am "Run pipeline"Simply tell the AI agent:
Turn this folder into a Calkit project
or
Create me a new Calkit project for investigating...
We welcome all kinds of contributions! See CONTRIBUTING.md to learn how to get involved.
Calkit is supported by the Caltech Schmidt Academy of Software Engineering.

