Everything you keep git for. None of the merging.

If you sync notes with git, you keep it for plain text, full history, and ownership — and you tolerate the commit-pull-push routine and the occasional prose merge conflict to get them. kutl keeps the first three and drops the rest.

Your notes stay plain files on disk. Each text document carries its own full edit history. But concurrent edits merge character-by-character instead of producing conflict markers, so two devices, a teammate, or an AI agent can edit the same file without anyone resolving a merge by hand. It works alongside git, not instead of it.

No commit-pull-push for a one-line note

The daemon watches your notes folder and syncs changes as they happen. There's no staging, committing, pulling, or pushing to keep two machines in step — you edit, and the edit is on your other devices.

One-shot kutl sync is there for CI or scripts when you don't want a background process, but day to day there is no commit ceremony for a small change.

Prose merges by character, not by line

git diffs and merges line by line, which fits code and fights prose — a long paragraph is one line, so a small edit on each side becomes a conflict. kutl merges concurrent edits at the character level, so simultaneous edits to the same Markdown file combine without conflict markers and without blocking the rest of your notes.

Resolution is order-independent and property-based-tested: every participant reaches the same result regardless of the order edits arrive. A self-hosted relay and the hosted relay resolve conflicts identically.

Full history, and your data stays yours

Each text document carries a full edit history in a diamond-types oplog — this isn't "Dropbox with extra steps." (Binary files sync whole-file, last-write-wins, with no per-file history.)

Every daemon participant carries the full document state, so shutting the relay down loses nothing on those machines. The engine is built on diamond-types, which implements the eg-walker algorithm (EuroSys 2025 Best Artifact Award); in kutl-bench's 50,000-mixed-edit run it merges in 4.2 ms versus 39.3 ms (Loro), 539 ms (Automerge), and 3.19 s (Yrs) — that benchmarks the engine, not end-to-end sync.

Hand a folder to someone who's never run git

Collaborating on Markdown over git locks out anyone who doesn't know git. With kutl, a collaborator joins a space by name or invite and edits files — no commit, no rebase, no merge vocabulary. For people who only have a browser, kutlhub provides a web editor over the same files.

The same door is open to agents: kutl watch runs as a stdio MCP server so an agent can read and edit documents, list participants, and poll for changes — editing the same files you do, without a hand-rolled lock script.

Works alongside git

kutl is designed to coexist with git on coding projects. Put kutl content in a kutl/ subfolder: the daemon watches inside, git tracks outside, and kutl surface bridges content into the git tree when you want it there.

You don't have to choose. Keep versioning code with git and let kutl handle the live, conflict-free side of your notes.

Where your current tool still fits better

  • If you need signed commits, a full branching workflow, and line-precise diffs for review, git is still the right tool for that — and kutl is built to sit alongside it, not replace it.
  • kutl has no native mobile client. The phone and tablet path is the kutlhub web editor in a browser, not a git-on-mobile setup or a background sync app on the device.
  • Binary files in a kutl space sync whole-file with last-write-wins and carry no edit history — if you depend on versioned binaries, git (or git-lfs) keeps doing that job.
  • kutl merges contents for text; it does not eliminate every file-level decision. Two distinct files claiming one name produce a notes.kutl-conflict-<id>.md copy so nothing is lost, and an explicit delete that wins a race is honored.

FAQ

Is there a way to sync Markdown notes across devices without committing and pulling with git?

kutl syncs a notes folder automatically through a background daemon — no commit, pull, or push to keep machines in step. The files stay plain text on disk, and each text document keeps a full edit history.

Does kutl keep version history like git does?

Each text document carries its own full edit history in a diamond-types oplog, so it is not just last-write-wins file copying. Binary files are the exception: they sync whole-file with no per-file history.

How does kutl avoid merge conflicts on prose?

kutl merges concurrent edits at the character level using CRDTs instead of git's line-based merge, so simultaneous edits to the same Markdown file combine without conflict markers. The result is order-independent across all participants.

Can a non-technical person edit my git-backed notes with kutl?

Yes. A collaborator joins a kutl space by name or invite and edits files directly, with no git commands. If they only have a browser, kutlhub offers a web editor over the same files.

Can I use kutl and git together?

Yes. Put kutl content in a kutl/ subfolder so the daemon watches inside while git tracks the rest of the repo, and use kutl surface to bridge content into the git tree when you want it versioned there.

Can an AI agent edit my notes folder without git conflicts?

Yes, for text. kutl watch runs as an MCP server so an agent can read and edit documents in the space; its edits merge with yours character-by-character rather than producing conflict markers. File-level changes follow kutl's documented conflict rules.