hlog

key concepts

lines

your log is a list of lines: short (up to 500 characters), single-line, plain text. each line gets a timestamp from the server — you can't backdate or post-date one — and is shown in your timezone:

  1. 2026-11-07T09:14:02+05:30INFO woke up without alarm. rare.

three things are displayed specially, and nothing else: text in `backticks` shows as code (tags and mentions inside it stay plain), web addresses are clickable, and @handle / #tag become links. the line itself stays exactly as you typed it, so .txt, RSS and the API show the backticks. longer code belongs in a gist or a repo: link it.

every line also gets a number in your log (1, 2, 3…), so any line has an address: @handle#42, with a permalink at hlog.dev/@handle/42.

levels

start a line with a level to tag it. no level means INFO. case doesn't matter, but it needs a space after it.

  1. 2026-11-07T09:14:02+05:30INFO just type. this is INFO.
  2. 2026-11-07T09:14:02+05:30DEBUGtrying the standing desk again
  3. 2026-11-07T09:14:02+05:30WARN third coffee before 11
  4. 2026-11-07T09:14:02+05:30ERRORdeployed to prod on a friday
  5. 2026-11-07T09:14:02+05:30LEARNpostgres advisory locks are session-scoped
  6. 2026-11-07T09:14:02+05:30WIN ran 5k without stopping

SYSTEM and AD are reserved for hlog itself. typing "SYSTEM hi" just logs the text "SYSTEM hi" as INFO.

append-only

there is no edit and no delete button for a line. that's the point: a log is a record, not a draft. if you got something wrong, add a correction as a new line. lines only disappear through your retention settings or by deleting your account.

private by default, public by level

nothing you write is public until you choose to share a level. in settings you can, for example, make LEARN and WIN public and keep everything else private. that choice is a filter, not a stamp on each line: making a level public shows its past lines too, and making it private again hides them all. because past lines are included, hlog shows how many lines a change would publish and asks you to confirm.

single lines can differ from their level: on a line's page you can share just this line (from a private level) or hide just this line (from a public level). the line itself never changes; only who can see it.

public lines appear on your profile /@handle, as plain text and RSS, in your followers' feeds, and to AI tools reading public logs.

retention

per level, keep lines forever (the default) or delete them after N days. a daily job removes expired lines. lines removed from hlog may still exist wherever someone already copied them (an RSS reader, an AI tool).

tailing (following)

following someone is called tailing, like tail -f. it's one-way and needs no approval, and you can tail only some of their public levels (say, just their LEARN). their public lines then show up in your feed. they get one SYSTEM note when you start. untailing is silent. there are no follower counts anywhere.

refs instead of replies

there are no replies, likes or reposts. to respond to a line, reference it in a line of your own:

  1. 2026-11-07T09:14:02+05:30LEARNre @maya#4821 same, took me 3 tries

if both lines are public, maya gets a SYSTEM note in her log linking to yours. mentioning @maya without a number notifies her when your line is public. a line notifies at most 3 people.

every public line's permalink also lists the public lines that reference it, under referenced by: conversations become trails you can follow to new people, without becoming reply threads.

notifications

notifications are SYSTEM lines in your own log, nowhere else: someone started tailing you, referenced your line, or mentioned you.

  1. 2026-11-07T09:14:02+05:30SYSTEM@maya started tailing your LEARN

tokens

you log in once by email (no password). after that, every way in is a token: each browser, the CLI, API keys, and AI connections. all of them are listed in settings → tokens, where you can revoke any one, or log out everywhere.

reports & moderation

every public line and log has a small report link. reports go only to hlog's operator, who can remove a line from public view or suspend an account (its public content goes offline and it can't post). the author keeps the line in their own log; nothing is edited. disagreeing with someone isn't abuse: you can always untail them.

ads

free accounts see occasional plain-text ad lines (level AD) in the feed and on other people's public logs: at most one per 20 lines, never first, never in your own log, and never in .txt or RSS. ads are matched to the words on the page, not to you. no cookies, no tracking.

← all docs