New in 1.7: agent-ready caching →

Build it once.
Never again.

hammerkit runs your build in containers, on your laptop and in CI alike, and skips every task whose inputs didn’t change — wherever it ran first.

Get startednpm install --global hammerkit

Same tools everywhere

Every task runs in the image it names. No “works on my machine”.

Skips what didn’t change

A task reruns only when a file it reads changes — locally and in CI.

Shared across machines

Laptops, CI runners and agent sandboxes reuse each other’s results.

Agent-ready

Hand your coding agent the migration guide and it rewrites your CI.

Where do you want to start?

One file for every machine

Tasks declare their image, what they read and what they produce.

.hammerkit.yaml
tasks:  install:    image: node:24-alpine    src: [package.json, package-lock.json]    generates: [node_modules]    cmds: [npm ci]  test:    image: node:24-alpine    deps: [install]    needs: [db]    src: [src, test]    cmds: [npm test]  build:    image: node:24-alpine    deps: [install]    src: [src, tsconfig.json]    generates: [dist]    cmds: [npm run build]

…and CI shrinks to this

The same command your laptop runs. Cache hits execute nothing.

.github/workflows/ci.yml
steps:  - uses: actions/checkout@v4  - uses: no0dles/hammerkit-github-action@v1  - run: hammerkit run ci
Let an agent migrate your CI →