Your meetings, committed to your own repository

If your transcripts folder sits inside a git repository, Earkeep commits each day's file into it when the day ends, when a meeting changes, or both, and pushes to the remotes your repository already has. Every part is a setting, and the repository stays yours.

The problem: the record has no history

Earkeep's record is already plain files: one JSONL file per day, in a folder you pick, often inside the repository your notes live in. But a folder is only versioned if someone commits it, and committing by hand stops happening by Wednesday. So Earkeep makes the commits and leaves the rest of the repository to you.

How it works

It switches on only inside a repository. When the transcripts folder, or one above it, is a git repository, Settings → Storage & Git offers the feature. Otherwise there is one button that runs git init, the only way Earkeep ever creates a repository.

You choose when it commits: when a day ends, when a meeting changes, both (the default), or never.

  • When a day ends means five minutes after midnight. A laptop asleep at midnight commits yesterday when it wakes.
  • When a meeting changes means saved, ended, resized, renamed or deleted, a few seconds after the last edit, so dragging an edge is one commit. A meeting starting makes no commit, and nor do new transcript lines alone.

One commit per day file, and nothing else. What you have staged yourself stays out of Earkeep's commits, and a day file your .gitignore excludes is left out.

Only on a branch you allow: main (or master), whichever branch is checked out, or one you name. On any other branch nothing is committed and Settings says why.

Commit messages that say what happened

Each message names the day and the meeting, so git log --oneline reads like the week you had:

shell
$ git log --oneline -- meetings/
4e1c0a7 Earkeep 2026-10-12: transcript of the day
9b2f61d Earkeep 2026-10-12: Roadmap review
51d8e3a Earkeep 2026-10-12: update Weekly sync
c07a9f2 Earkeep 2026-10-12: Weekly sync
8a44b1e Earkeep 2026-10-11: transcript of the day

Every message is a template you can rewrite in Settings, one per event, with {date} and {meeting} as placeholders.

Pushing is a separate choice

Push to every remote (the default), to the remotes you pick, or not at all, and every commit stays on your device.

This is the one way a transcript leaves your device, and only to a remote you configured, under your own account. Earkeep has no server in that path.

It is your own git, so your SSH agent, credential helpers and hooks apply as in a terminal. A push that would ask for a password or passphrase fails at once and says why, rather than waiting on a prompt nobody can see.

A remote that has moved on is pulled, not refused. Earkeep does what git pull --rebase --autostash does, then pushes. Recording carries on; editing a meeting is paused for that moment and says so.

Conflicts are resolved by an agent, not left for you

When the remote's commits conflict with yours, Earkeep hands the stopped rebase to one of the ACP agents on your machine, such as Claude Code or Codex. It then checks the repository, not the agent's answer: the rebase finished, both sides' commits are there, no conflict marker is left. Only then does it push.

Anything short of that is undone: the rebase is aborted, your branch and uncommitted changes go back as they were, and Earkeep tells you what the agent said. The agent is your own tool with your own key, so what it reads goes wherever that agent normally sends it.

When a push fails, you hear about it

A failure shows above the transcript in plain words (the remote turned your key away, the host could not be reached, a conflict needs you), with git's own words underneath. Earkeep retries every five minutes, so once the cause is fixed the push goes through.

Related

Frequently asked questions

Does Earkeep need a git repository to work?

No. Without one, the transcripts are plain files in a folder; with one, Earkeep also commits them, and you can turn that off.

Will it commit my other files?

No. Each commit holds one day's transcript file and nothing else; whatever you staged yourself stays out of it.

Do my transcripts leave my device?

Only to the remotes you set up yourself. Turn pushing off and every commit stays on your device.

Does it sync my meetings between computers?

No. Earkeep commits and pushes, and pulls only so that it can push. What reaches your other machines is up to your repository.

What if I'm on a feature branch when the day ends?

Nothing is committed there. Settings shows the day is waiting, and the commit happens once you are back on an allowed branch.

Does a meeting get committed when it starts?

No. It is committed when it ends or when you change it, not while its transcript is still being written.

What happens if the conflict agent gets it wrong?

Earkeep checks the result before it pushes. If anything is off, the rebase is aborted, your repository goes back to how it was, and you see why.

Can I write my own commit messages?

Yes: a template per event in Settings → Storage & Git, with {date} and {meeting} as placeholders.

A history of every meeting, in a repository you own

14-day full trial, no account required.