Free · Local · No account

Point at it. Walk away.

Leave tagged comments on any web page. jotkit keeps them in an append-only ledger on your machine and hands them to your coding agents, which claim the work, do it, and record what they changed.

$ npm i -g @jotkit/jotkitGet started

Requires Node.js 24. macOS and Linux.

app.example.com/checkout
Pay now1
1bugcheckout

Button stays enabled while the payment request is in flight. Double click charges twice.

shop · main · a3f9c21

2completed

Agent disabled the button on submit and added a regression test.

verified commit 7b41e08

How it works

Three moves, then it is out of your hands.

Install and pair

npm i -g @jotkit/jotkit then jotkit init. That creates your ledger, starts the local daemon, installs the agent skills and prints a pairing code for the browser extension.

Annotate

Open the toolbar on any page. Pick an element or comment on the page, tag it, and choose whether it belongs to a repository or stays global. Attach a screenshot or a recording if it helps.

Hand it to an agent

Your agent reads the comments over MCP, claims one, does the work and logs the outcome. Or run jotkit acp serve and let it work the backlog across every registered repository while you do something else.

What makes it different

Built like a ledger, not a notepad.

Comments are never edited in place. Agents append to their own logs, the daemon derives the truth, and nothing is silently dropped.

Annotate any page

Not just localhost. Pick an element on any site, or comment on the page as a whole. jotkit captures the selector, surrounding DOM, computed CSS and framework context along with your words.

An append-only ledger

Every comment, claim and outcome is an event in a log on your machine. The durable view is derived by a deterministic reducer, so jotkit rebuild regenerates it byte for byte.

Scoped to your repos

Run jotkit link in a repository and comments can be attached to it, carrying the branch and commit you were looking at. An agent working there reads only what was meant for it.

Agents claim their work

The daemon grants leases, so two agents never fight over the same comment. It verifies reported commits against git and derives status from the log rather than trusting a report.

MCP and ACP built in

jotkit mcp exposes ten tools to any Model Context Protocol client. jotkit acp drives an Agent Client Protocol agent through your comments in stream or task mode.

Local by construction

The extension talks to 127.0.0.1 and nothing else. No account, no telemetry, no sync. Your annotations and your code never leave the machine.

FAQ

Questions worth asking.

Is jotkit really free?

Yes. No account, no subscription, no paid tier. It is free to use but it is not open source: the source stays private and the license does not permit redistribution.

Does anything leave my machine?

No. The browser extension only ever connects to the jotkit daemon on 127.0.0.1. There is no backend, no analytics and no sync service. Your comments, page captures and source code stay local.

Which coding agents work with it?

Anything that speaks MCP or ACP. Add jotkit mcp as an MCP server in Claude Code, or point jotkit acp at an ACP agent. Without either, agents can drive the CLI directly.

Do I need the CLI, or is the extension enough?

You need both. The extension is a client for the local daemon that ships with the CLI, so install jotkit first, run jotkit init, then pair the extension with the code it prints.

What if port 4817 is already taken?

jotkit picks the next free port automatically, remembers it, and prints the address it settled on. You can also set an explicit port in ~/.jotkit/config.json.

Can an agent change files without me watching?

Only if you allow it. Unattended runs default to deny-writes. You raise autonomy per comment or per repository, and only a comment you wrote can raise its own.

Stop describing the bug. Point at it.

One command to install, one to start. Everything stays on your machine.

$ npm i -g @jotkit/jotkit && jotkit initRead the docs