Karsk (pronounced kask) is a Norwegian cocktail from Trøndelag county mixing coffee with moonshine. It is also a tool for deploying software on our NFS-backed Linux cluster.
Karsk solves the following problems for us:
- Continuous upgrades: Users reliably access the latest versions of software without needing to update anything themselves.
- User-controlled versioning: Each deploy persists on disk. Users can select any existing version anytime.
- Simple rollbacks: Because releases are symbolic links, rollbacks are quick and painless.
Karsk is written in Python and requires uv and some container engine. Currently, only Podman is supported, but Docker may work as well.
To get started, clone this repository and run uv sync to get the karsk
executable.
See examples directory for examples. Use karsk --help to view
documentation.
This project uses pytest for tests, mypy for type-checking and ruff for linting and formatting.
# Run tests
uv run pytest tests
# Typecheck (note: we don't typecheck test code)
uv run mypy --strict src
# Lint and format
uv run ruff format
uv run ruff check --fix