New in 1.7: agent-ready caching →Build it once.
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 started
npm install --global hammerkitSame 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?
I’m new to hammerkit
I want to optimize my CI
One file for every machine
Tasks declare their image, what they read and what they produce.
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.
steps: - uses: actions/checkout@v4 - uses: no0dles/hammerkit-github-action@v1 - run: hammerkit run ci