omahoy.org github

The ship's logearlyMIT

omalogbook

It keeps the watch while you sail: a position every hour, the day's run, and a GPX track for every passage. Write a note and it lands with the time and the spot on the chart. The whole log is a folder of markdown you own — no database, no server, and no need for omalogbook to read it again.

omalogbooka note, a mark, and putting one right
An evening on the sample sail. The note lands at the boat's position; /anchor files a mark with the wind and the barometer beside it; then the note is clicked and put right. The positions and the day are invented.

What it writes

  • A day at a time, one markdown note each, with the day's run, fastest speed and time under way in the front matter.
  • A GPX track for every passage — the format every chartplotter and mapping site already reads.
  • Your notes, where you wrote them. An entry carries the time and the boat's position, from the same GPS the chartplotter draws.
  • Your writing, left alone. omalogbook owns one block in each note. Your prose, your headings and any front matter you add are copied through untouched, and a total you correct by hand stands.
  • Committed as it goes, and pushed when there's a connection. Offshore there won't be one for weeks, which is not an error.
The log
~/Logbook/2026/09/2026-09-19.md
A note
23:08 · 37°52.0′N 122°18.9′W — Dolphins off the port bow
Under way
above 1.0 kn; still below 0.5 for 5 min
Keys
Enter files, Tab takes a mark, n Night Watch, Esc backs out

It's just markdown

One file a day, in year and month folders, and that is the whole storage layer. Nothing reads it back but a text editor.

~/Logbook/2026/09/2026-09-19.md
---
date: 2026-09-19
boat: Dash
distance_nm: 11.8
max_sog_kn: 6.2
hours_underway: 3.45
tracks: ["tracks/2026-09-19-194806.gpx"]
crew: ← yours, and left alone
---

# 2026-09-19 · Dash

Wind filled in off the Berkeley pier. Reefed in the slot.

<!-- omalogbook:begin -->

## The watch

- 19:52 (02:52 UTC) · 37°51.8′N 122°18.9′W · 268° · 4.4 kn — under way
- 23:14 (06:14 UTC) · 37°52.0′N 122°18.9′W — Dolphins off the port bow

Day's run 11.8 nm · fastest 6.2 kn · under way 3 h 27 min

Track [tracks/2026-09-19-194806.gpx](tracks/2026-09-19-194806.gpx)

<!-- omalogbook:end -->
  • Obsidian opens it as a vault with nothing to convert. The front matter becomes properties, so a day's run and fastest speed are there to sort and query.
  • Your own front matter stands. Add tags, crew, anything — omalogbook owns six keys and copies the rest through untouched, every save.
  • Neovim opens it as files. omalogbook-open starts your editor with the vault as its working directory, so :Telescope live_grep sees the whole log and not one day.
  • Grep is the search. Every entry is one line that opens with its time, so rg "dolphins" ~/Logbook is the whole query language.
  • Nothing here is Obsidian-flavoured. No wikilinks, no tags, no plugin syntax — CommonMark and YAML, so any editor that reads markdown reads your log.

Today's note, from anywhere:

$ omalogbook path
~/Logbook/2026/09/2026-09-19.md

Every setting is optional, and the vault can live wherever your notes already do.

Which is all a keybinding needs:

-- Neovim: <leader>ol opens today's log
vim.keymap.set("n", "<leader>ol", function()
  vim.cmd.edit(vim.fn.system("omalogbook path"):gsub("%s+$", ""))
end, { desc = "Today's log" })

Marks

Some moments are worth more than prose. A line that opens with a mark is filed as an event, with the course and speed you were making and what it was blowing at the time.

omalogbooktype /
The note field showing a list of marks: depart, sail, motor, reef, shake, anchor, aweigh, moor, berth and watch, each with a short description. Tab takes the first.
Ten marks, filtered as you type. /anchor 25 ft, 5:1 scope keeps the words you add after it.

A mark says what the log can't work out for itself. under way and stopped come from a speed threshold, and a threshold can't tell anchored from moored from tied up alongside. You can.

The weather on a mark is two different things, and the log never blurs them. wind … (HRRR) is omawind's forecast worked out at the boat — a model's opinion, and the only source of a barometer reading. measured … is an anemometer that really measured that wind, at a named NOAA station within 10 nautical miles, with the age of its report. Reading a log back, the difference matters.

Putting an entry right

Click an entry and its words come up in the line for editing. STRIKE rules through it instead, which is what a paper log does: the entry happened and was withdrawn, and that reads back as more honest than a line that was quietly never there. omalogbook strike 3 --erase takes one out altogether, for when that is truly what you mean.

The clock and the fix are never rewritten. A log is a record of where the boat was and when, and omalogbook will not put different numbers there.

How it works

omalogbook writes; omakeel listens. The hub decodes the GPS and keeps the boat's fix; omalogbook follows its socket, works out when a passage starts and ends, and writes the note and the track. The window is a second face on the same thing — it reads the day through omalogbook itself and files by calling it, so a note typed on watch and one typed in a terminal are the same note.

Nothing here needs a database or a server, and nothing needs omalogbook to read the log again.

The tracks are plain GPX in a folder, so anything can read them. omahelm does: it draws the days on the chart, each one joined into the trip it was.

Install

Omarchy on x86_64 or aarch64, with omakeel running on your GPS:

$ cargo install --git https://github.com/shieldsworks/omalogbook --locked
$ omalogbook run

Settings live in ~/.config/omalogbook/config.toml and every one is optional: where the vault is, the boat's name, how often to log a position, and what counts as under way. Make the vault a git repo and omalogbook commits as it writes.

Not yet

A log is a record of where you were

Night by night, at what time, for as long as you keep it. Keep your own vault private, and think before you publish a track.

Theme press T