Read
Switch logs
ttyl has three logs. The tabs at the top of the log show which one is open.
- Following shows your commits and the commits of people you follow. Press 1.
- Latest shows everyone, newest first. Press 2.
- Trending shows what is popular right now. Press 3.
Press tab to go to the next log.
// ttyl @ /dev/null ● 3 @ada ╭─ following ── /latest ── trending ─────────────────────────────────╮ ╭ thread ─────────────────────────────────────╮ │ ┆ Today │ │ ● Grace @grace · 1h 0000201 │ │ │ │ │ │ today's footgun: │ │ ● Ada @ada · 18m · 3 12 e4f5a61 │ │ │ php │ │ │ switched the feed to cursorPaginate(20). offsets fall over once │ │ │ $name = 'devnull'; │ │ │ the table grows. │ │ │ echo "<b>$name</b>"; │ │ │ │ │ │ │ │ ● Ada @ada · 29m in review e4f5a62 │ │ │ escape your output. │ │ │ and the p99 dropped from 480ms to 31ms. same lesson as this: │ │ │ 8:05 AM · Oct 21, 2026 · commit 0000201 │ │ │ Margaret @margaret notes from rewriting our scheduler. 1. th… │ │ │ 5 27 │ │ │ │ │ │ │ ● Grace @grace · 1h · 5 27 0000201 │ │ │ │ ┃ today's footgun: │ │ │ │ ┃ php │ │ │ │ ┃ $name = 'devnull'; │ │ │ │ ┃ echo "<b>$name</b>"; │ │ │ │ ┃ +2 lines · space to expand │ │ │ │ │ │ │ │ │ ● Linus @linus · 2h 0000301 │ │ │ │ │ first commit here. hello /dev/null. │ │ │ │ │ │ │ │ │ ┆ Yesterday │ │ │ │ │ │ │ │ │ ● Margaret @margaret · 11h · 14 88 0000401 │ │ │ │ │ notes from rewriting our scheduler. │ │ │ │ │ │ │ │ │ │ 1. the queue was never the bottleneck. │ │ │ │ │ 2. the lock around the queue was. │ │ │ │ │ +8 lines · space to expand │ │ │ │ │ │ │ │ ╰────────────────────────────────────────────────────────────────────╯ ╰─────────────────────────────────────────────╯ j/k move enter open s star c commit ? help Q quit
// ttyl @ /dev/null ● 3 @ada ─ following ── /latest ── trending ─────────────── ● Ada @ada · 18m · 3 12 e4f5a61 │ switched the feed to cursorPaginate(20). offsets │ fall over once the table grows. │ ● Grace @grace · 10m @ada did you keep an in… │ ● Ada @ada · 29m in review e4f5a62 │ and the p99 dropped from 480ms to 31ms. same │ lesson as this: │ Margaret @margaret notes from rewriting our … │ ● Grace @grace · 1h · 5 27 0000201 ┃ today's footgun: ┃ php ┃ $name = 'devnull'; ┃ echo "<b>$name</b>"; ┃ +2 lines · space to expand ┃ ○ fatal: bad object 0000202 │ ● Linus @linus · 2h 0000301 │ first commit here. hello /dev/null. │ ┆ Yesterday │ ● Margaret @margaret · 11h · 14 88 0000401 │ notes from rewriting our scheduler. │ │ 1. the queue was never the bottleneck. │ 2. the lock around the queue was. │ +9 lines · space to expand │ ● Ada @ada · 3h @margaret the fsync one gets… │ j/k move enter open s star ? help Q quit
Move through a log
- Press j or ↓ to move down, and k or ↑ to move up.
- Press gg to go to the top, and G to go to the bottom.
- Press space to show the rest of a long commit, such as one that
ends in
+8 lines · space to expand. Press it again to fold it.
Older commits load when you reach the bottom. When new commits arrive, a note appears at the top of the log. Press ctrl-r to load them.
Open a thread
Press enter to open the selected commit with its replies. Press esc to go back to the log.
// ttyl @ /dev/null ● 3 @ada ╭─ following ── /latest ── trending ─────────────────────────────────╮ ╭ thread ─────────────────────────────────────╮ │ ┆ Today │ │ ● Margaret @margaret · 11h 0000401 │ │ │ │ │ ┃ notes from rewriting our scheduler. │ │ ● Ada @ada · 18m · 3 12 e4f5a61 │ │ ┃ │ │ │ switched the feed to cursorPaginate(20). offsets fall over once │ │ ┃ 1. the queue was never the bottleneck. │ │ │ the table grows. │ │ ┃ 2. the lock around the queue was. │ │ │ │ │ ┃ 3. we held it across an fsync. │ │ ● Ada @ada · 29m in review e4f5a62 │ │ ┃ 4. nobody noticed for two years because │ │ │ and the p99 dropped from 480ms to 31ms. same lesson as this: │ │ ┃ the disks were fast. │ │ │ Margaret @margaret notes from rewriting our scheduler. 1. th… │ │ ┃ 5. then we moved to network storage. │ │ │ │ │ ┃ 6. p50 went from 2ms to 90ms overnight. │ │ ● Grace @grace · 1h · 5 27 0000201 │ │ ┃ 7. the fix was four lines. │ │ │ today's footgun: │ │ ┃ 8. finding it took three weeks. │ │ │ php │ │ ┃ 9. write down what your locks protect. │ │ │ $name = 'devnull'; │ │ ┃ 10. and measure before you guess. │ │ │ echo "<b>$name</b>"; │ │ ┃ 10:40 PM · Oct 20, 2026 · commit 0000401 │ │ │ +2 lines · space to expand │ │ ┃ 60 88 │ │ │ │ │ │ │ │ ● Linus @linus · 2h 0000301 │ │ ● Ada @ada · 11h 0000012 │ │ │ first commit here. hello /dev/null. │ │ │ reply 1 of 60 on the rendering thread. │ │ │ │ │ │ 0 2 │ │ ┆ Yesterday │ │ │ │ │ │ │ │ ● Grace @grace · 11h 0000013 │ │ ● Margaret @margaret · 11h · 60 88 0000401 │ │ │ reply 2 of 60 on the rendering thread. │ │ ┃ notes from rewriting our scheduler. │ │ │ 0 3 │ │ ┃ │ │ │ │ │ ┃ 1. the queue was never the bottleneck. │ │ ● Linus @linus · 11h 0000014 │ │ ┃ 2. the lock around the queue was. │ │ │ reply 3 of 60 on the rendering thread. │ │ ┃ +8 lines · space to expand │ │ │ 0 0 │ │ │ │ │ │ │ ╰────────────────────────────────────────────────────────────────────╯ ╰─────────────────────────────────────────────╯ esc back j/k move s star c commit ? help Q quit
// ttyl @ /dev/null ● 3 @ada ● Margaret @margaret · 11h 0000401 ┃ notes from rewriting our scheduler. ┃ ┃ 1. the queue was never the bottleneck. ┃ 2. the lock around the queue was. ┃ 3. we held it across an fsync. ┃ 4. nobody noticed for two years because the ┃ disks were fast. ┃ 5. then we moved to network storage. ┃ 6. p50 went from 2ms to 90ms overnight. ┃ 7. the fix was four lines. ┃ 8. finding it took three weeks. ┃ 9. write down what your locks protect. ┃ 10. and measure before you guess. ┃ 10:40 PM · Oct 20, 2026 · commit 0000401 ┃ 60 88 │ ● Ada @ada · 11h 0000012 │ reply 1 of 60 on the rendering thread. │ 0 2 │ ● Grace @grace · 11h 0000013 │ reply 2 of 60 on the rendering thread. │ 0 3 │ ● Linus @linus · 11h 0000014 │ reply 3 of 60 on the rendering thread. │ 0 0 │ ● Ken @ken · 11h 0000015 │ reply 4 of 60 on the rendering thread. esc back j/k move s star ? help Q quit
When the terminal is at least 110 columns wide, the thread of the selected commit also shows beside the log, as in the screen above. On a narrower terminal, the thread takes the whole screen.
If the commit quotes another one, press gq to open the quoted commit.
Share a commit
- Press y to copy the link to the selected commit.
- Press O to open it in your browser.
Inside tmux, copying needs a tmux setting. See Settings.
Read the signs
in reviewnext to a name means dev-null.sh has not approved the commit yet.rejectedmeans dev-null.sh did not approve it.↩ 5counts replies, and★ 27counts stars.fatal: bad objectstands where a deleted reply used to be.
Reload and rest
Press ctrl-r to reload everything on screen. Press z for the screensaver, and any key to come back.