modem-dev/hunkPublic

Review-first terminal diff viewer for agentic coders

AI summary: A terminal-based, review-first diff viewer optimized for agent-authored changesets with interactive AI annotations.

Stars
8.1K
+40 today
Forks
237
Watchers
11
Open issues
61
Open PRs
46
Contributors
~55
Commits
564
Branches
320

TypeScriptMITCreated Mar 17, 2026Last push todayLatest release v0.17.7+189 stars this week+247 this month

Star history

since Mar 22, 2026
02.5K5K7.5KMar 2026May 2026Jun 2026Aug 2026
8.1K stars as of Aug 7, 2026, tracked back to Mar 22, 2026. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulMonWedFri2025-08-03: 0 commits2025-08-04: 0 commits2025-08-05: 0 commits2025-08-06: 0 commits2025-08-07: 0 commits2025-08-08: 0 commits2025-08-09: 0 commits2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 36 commits2026-03-18: 65 commits2026-03-19: 7 commits2026-03-20: 5 commits2026-03-21: 8 commits2026-03-22: 64 commits2026-03-23: 24 commits2026-03-24: 10 commits2026-03-25: 4 commits2026-03-26: 3 commits2026-03-27: 1 commit2026-03-28: 2 commits2026-03-29: 10 commits2026-03-30: 8 commits2026-03-31: 7 commits2026-04-01: 4 commits2026-04-02: 1 commit2026-04-03: 2 commits2026-04-04: 2 commits2026-04-05: 1 commit2026-04-06: 12 commits2026-04-07: 5 commits2026-04-08: 6 commits2026-04-09: 1 commit2026-04-10: 6 commits2026-04-11: 1 commit2026-04-12: 1 commit2026-04-13: 3 commits2026-04-14: 2 commits2026-04-15: 0 commits2026-04-16: 1 commit2026-04-17: 1 commit2026-04-18: 4 commits2026-04-19: 2 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 1 commit2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 1 commit2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 8 commits2026-05-09: 12 commits2026-05-10: 13 commits2026-05-11: 6 commits2026-05-12: 4 commits2026-05-13: 1 commit2026-05-14: 7 commits2026-05-15: 0 commits2026-05-16: 5 commits2026-05-17: 1 commit2026-05-18: 3 commits2026-05-19: 8 commits2026-05-20: 1 commit2026-05-21: 3 commits2026-05-22: 1 commit2026-05-23: 15 commits2026-05-24: 9 commits2026-05-25: 6 commits2026-05-26: 1 commit2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 3 commits2026-05-30: 1 commit2026-05-31: 0 commits2026-06-01: 2 commits2026-06-02: 1 commit2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 8 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 2 commits2026-06-09: 7 commits2026-06-10: 1 commit2026-06-11: 1 commit2026-06-12: 0 commits2026-06-13: 17 commits2026-06-14: 0 commits2026-06-15: 3 commits2026-06-16: 5 commits2026-06-17: 0 commits2026-06-18: 3 commits2026-06-19: 4 commits2026-06-20: 1 commit2026-06-21: 1 commit2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 1 commit2026-06-29: 1 commit2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 6 commits2026-07-03: 9 commits2026-07-04: 1 commit2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 3 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 1 commit2026-07-14: 2 commits2026-07-15: 2 commits2026-07-16: 1 commit2026-07-17: 1 commit2026-07-18: 6 commits2026-07-19: 2 commits2026-07-20: 0 commits2026-07-21: 1 commit2026-07-22: 0 commits2026-07-23: 2 commits2026-07-24: 3 commits2026-07-25: 2 commits2026-07-26: 13 commits2026-07-27: 4 commits2026-07-28: 18 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits
554 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Very active

    554 commits in 52 weeks

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

What hunk does

Hunk provides an interactive terminal UI for reviewing codebase changes, natively integrating with Git, Jujutsu, and Sapling. It enables multi-file review streams with sidebar navigation and responsive auto layouts like split or stacked views. Uniquely, it supports inline AI and agent annotations directly alongside the code, allowing developers to review agent-generated patches in context. It operates in real-time with watch mode for automatic reloading as the working tree changes.

Software engineers and AI tool builders who work extensively in the terminal and need a richer way to review complex changesets, especially those generated by AI agents.

  • Review-first interactive UI: Navigate through changesets with a sidebar and multi-file review stream.
  • Inline agent annotations: View AI-generated context and notes directly inline with code diffs.
  • Responsive auto layouts: Dynamically switches between split and stacked views based on terminal size.
  • Watch mode: Auto-reloads file and Git-backed reviews when the working tree changes.
  • Cross-VCS support: Natively integrates with Git, Jujutsu (jj), and Sapling.
  • Mouse and pager support: Fully interactable via mouse while supporting pager-compatible mode.

Where teams use it

Reviewing Agent-Generated Code

Developers use Hunk to review patches authored by autonomous coding agents, leveraging inline annotations to understand the agent's context and decisions.

Interactive Local Code Review

Engineers reviewing their own unstaged or staged changes across multiple files using a rich terminal interface rather than standard Git diff output.

Live Refactoring Validation

Using watch mode to continuously observe structural or wide-ranging file changes in real-time as a script or refactoring tool runs.

Getting started: npm i -g hunkdiff

README

main branch

hunk

Hunk is a review-first terminal diff viewer for agent-authored changesets, built on OpenTUI and Pierre diffs.

CI status Latest release MIT License

  • multi-file review stream with sidebar navigation
  • inline AI and agent annotations beside the code
  • split, stack, and responsive auto layouts
  • watch mode for auto-reloading file and Git-backed reviews
  • keyboard, mouse, pager, and Git difftool support
image
Split view with sidebar and inline AI notes
image
Stacked view and mouse-selectable menus

Install

npm i -g hunkdiff

Or with Homebrew:

brew install hunk

Note

If you previously installed hunk via modem-dev/tap, be sure to uninstall it first with brew uninstall modem-dev/tap/hunk.

Requirements:

  • Node.js 18+
  • macOS, Linux, or Windows
  • Git recommended for most workflows

Nix users can use the default package exported in flake.nix instead. See nix/README.md for details.

Quick start

hunk           # show help
hunk --version # print the installed version

Working with Git

Hunk mirrors Git's diff-style commands, but opens the changeset in a review UI instead of plain text.

hunk diff                      # review current repo changes, including untracked files
hunk diff --watch              # auto-reload as the working tree changes
hunk show                      # review the latest commit
hunk show HEAD~1               # review an earlier commit

Working with Jujutsu and Sapling

Hunk auto-detects Jujutsu and Sapling checkouts, so hunk diff [revset] and hunk show [revset] use native revsets inside jj or Sapling workspaces. To override VCS detection, set vcs = "git" or vcs = "jj" or vcs = "sl" in config.

Working with raw files and patches

hunk diff before.ts after.ts                # compare two files directly
hunk diff before.ts after.ts --watch        # auto-reload when either file changes
git diff --no-color | hunk patch -          # review a patch from stdin

Watch mode remains continuous. Direct-file and Git-backed reviews normally use filesystem observation to refresh promptly, with periodic polling retained as a fallback for missed events or unavailable watchers. Jujutsu and Sapling reviews currently use polling rather than filesystem observation.

Working with agents

  1. Open Hunk in another terminal with hunk diff or hunk show.
  2. Tell your agent to add the skill file returned by hunk skill path.
  3. Ask your agent to use the skill against the live Hunk session.

A good generic prompt is:

Load the Hunk skill and use it for this review. Run `hunk skill path` to get the skill path.

For the full live-session and --agent-context workflow guide, see docs/agent-workflows.md. Experimental rich STML note bodies require starting the review with --experimental; plain agent notes remain the default.

Feature comparison

Capability hunk lumen difftastic delta diff-so-fancy diff
Review-first interactive UI
Multi-file review stream + sidebar
Inline agent / AI annotations
Responsive auto split/stack layout
Mouse support inside the viewer
Runtime view toggles
Syntax highlighting
Structural diffing
Pager-compatible mode

Hunk is optimized for reviewing a full changeset interactively.

Advanced

Config

You can persist preferences to a config file:

  • ~/.config/hunk/config.toml
  • .hunk/config.toml

Example:

theme = "github-dark-default" # any built-in theme id, auto, or custom
mode = "auto"        # auto, split, stack
vcs = "git"          # git, jj, sl
watch = false
exclude_untracked = false
line_numbers = true
tab_width = 4       # tab stops, 1-16
wrap_lines = false
menu_bar = true
agent_notes = false
prompt_save_view_preferences = true
transparent_background = false

Choose a built-in theme, auto, or a custom theme with theme. See docs/themes.md for automatic selection, custom theme tables, syntax scopes, and legacy syntax-table migration.

exclude_untracked affects Git/Sapling working-tree hunk diff sessions only. tab_width controls source-code tab stops and can be overridden with -x4 or --tab-width 4. prompt_save_view_preferences = false disables the quit prompt for saving changed view preferences. transparent_background can also be written as transparentBackground.

Keybindings

Every keyboard shortcut is a named command, and a [keybindings] table in your user config remaps command ids to the keys you want them on — several keys per command, exclusive claims over defaults, and false to unbind. See docs/keybindings.md for the rules, the chord grammar, and the full table of built-in commands and their default keys.

Git integration

Set Hunk as your Git pager so git diff and git show open in Hunk automatically:

Note

Untracked files are auto-included only for Hunk's own hunk diff working-tree loader. If you open git diff through hunk pager, Git still decides the patch contents, so untracked files will not appear there.

git config --global core.pager "hunk pager"

Or in your Git config:

[core]
    pager = hunk pager

If you want to keep Git's default pager and add opt-in aliases instead:

git config --global alias.hdiff "-c core.pager=\"hunk pager\" diff"
git config --global alias.hshow "-c core.pager=\"hunk pager\" show"

Jujutsu pager integration

To use Hunk as jj's pager, run jj config edit --user and update:

[ui]
pager = ["hunk", "pager"]
diff-formatter = ":git"

Sapling pager integration

To use Hunk as Sapling's pager, run sl config -u and update:

[pager]
pager = hunk pager

Extensions (experimental)

The extension API is experimental and may change in breaking ways between minor releases while it stabilizes; breaking changes are called out in release notes.

Hunk loads plain TypeScript extensions from ~/.config/hunk/extensions/, from a repository's .hunk/extensions/ (after you explicitly trust that repository), and from --extension <path> for development. --no-extensions turns those off for one run; Hunk's own bundled backends (Git, Jujutsu, and Sapling) stay loaded.

A Phase 1 extension can contribute themes and file-extension → language mappings, add a VCS backend, rewrite the changeset before review (collapse lockfiles, reorder files by review priority), replace the file-navigation sidebar with its own React component, react to lifecycle events, and show transient messages:

// ~/.config/hunk/extensions/collapse-lockfiles.ts
import type { HunkExtensionAPI } from "hunkdiff/extension";

export default function (hunk: HunkExtensionAPI) {
  hunk.transformChangeset((changeset, ctx) => {
    const files = changeset.files.filter((file) => !file.path.endsWith(".lock"));
    ctx.notify(`Collapsed ${changeset.files.length - files.length} lockfiles`);
    return { ...changeset, files };
  });
}

See docs/extensions.md for the full API, the trust model, and the [extensions] / [extension.<id>] config reference.

OpenTUI component

Hunk also publishes HunkDiffView and lower-level primitives from hunkdiff/opentui for embedding the same diff renderer in your own OpenTUI app.

See docs/opentui-component.md for install, API, and runnable examples.

Examples

Ready-to-run demo diffs live in examples/.

Each example includes the exact command to run from the repository root.

Contributing

💬 Chat with users/contributors on the Modem Discord server

For source setup, tests, packaging checks, and repo architecture, see CONTRIBUTING.md.

Sponsor

Sponsored by Modem.

Modem

License

MIT

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Releases and announcements

55 total
  1. v0.17.7v0.17.7Jul 29, 2026139 downloads

    ## What's Changed - fix(nix): keep flake evaluable on nixpkgs without x86_64-darwin by @elucid in https://github.com/modem-dev/hunk/pull/621 - fix(session): support IPv6 loopback broker URLs by @benvinegar in https://github.com/modem-dev/hunk/pull/613 - perf(ui): optimize wrapped Unicode rendering by @benvinegar in https://github.com/modem-dev/hunk/pull/601 **Full Changelog**: https://github.com/modem-dev/hunk/compare/v0.17.6...v0.17.7

  2. v0.17.6v0.17.6Jul 25, 2026888 downloads

    ## What's Changed - Avoid loading OpenTUI’s embedded native library for headless commands, preventing temporary native-library artifacts from leaking during help, version, session, daemon, markup, and non-interactive pager operations by @benvinegar in https://github.com/modem-dev/hunk/pull/590 - Optimize terminal cell-width measurement for faster rendering of diffs containing CJK, emoji, and other wide characters by @kazu728 in https://github.com/modem-dev/hunk/pull/586 - Republish the 0.17.5 application changes as 0.17.6 with downloadable binaries for every supported platform by @benvinegar in https://github.com/modem-dev/hunk/pull/593 **Full Changelog**: https://github.com/modem-dev/hunk/compare/v0.17.4...v0.17.6

  3. v0.17.4v0.17.4Jul 23, 2026466 downloads

    ## What's Changed - fix(ui): restore threaded rendering on macOS by @benvinegar in https://github.com/modem-dev/hunk/pull/539 - fix(review): save draft notes exactly once under rapid Ctrl+S by @endotakuya in https://github.com/modem-dev/hunk/pull/581 **Full Changelog**: https://github.com/modem-dev/hunk/compare/v0.17.3...v0.17.4

  4. v0.17.3v0.17.3Jul 19, 20261.5K downloads

    ## What's Changed - Fix agent note wrapping for CJK and emoji text by @kataokatsuki in https://github.com/modem-dev/hunk/pull/567 - Extend pager row backgrounds to host panel edges by @benvinegar in https://github.com/modem-dev/hunk/pull/571 **Full Changelog**: https://github.com/modem-dev/hunk/compare/v0.17.2...v0.17.3

  5. v0.17.2v0.17.2Jul 18, 2026461 downloads

    ## What's Changed - Fix mouse-selection copy alignment for wide CJK and emoji characters by @endotakuya in https://github.com/modem-dev/hunk/pull/548 - Reject malformed line and hunk navigation values by @fallintoplace in https://github.com/modem-dev/hunk/pull/535 **Full Changelog**: https://github.com/modem-dev/hunk/compare/v0.17.1...v0.17.2

Commits per week

last 52 weeks
1210Week of 2025-08-03: 0 commitsWeek of 2025-08-10: 0 commitsWeek of 2025-08-17: 0 commitsWeek of 2025-08-24: 0 commitsWeek of 2025-08-31: 0 commitsWeek of 2025-09-07: 0 commitsWeek of 2025-09-14: 0 commitsWeek of 2025-09-21: 0 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 121 commitsWeek of 2026-03-22: 108 commitsWeek of 2026-03-29: 34 commitsWeek of 2026-04-05: 32 commitsWeek of 2026-04-12: 12 commitsWeek of 2026-04-19: 2 commitsWeek of 2026-04-26: 2 commitsWeek of 2026-05-03: 20 commitsWeek of 2026-05-10: 36 commitsWeek of 2026-05-17: 32 commitsWeek of 2026-05-24: 20 commitsWeek of 2026-05-31: 11 commitsWeek of 2026-06-07: 28 commitsWeek of 2026-06-14: 16 commitsWeek of 2026-06-21: 1 commitsWeek of 2026-06-28: 18 commitsWeek of 2026-07-05: 3 commitsWeek of 2026-07-12: 13 commitsWeek of 2026-07-19: 10 commitsWeek of 2026-07-26: 35 commitsAug 3, 2025Jul 26, 2026
554 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 1 commitsSun 1:00 — 1 commitsSun 2:00 — 1 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 2 commitsSun 6:00 — 0 commitsSun 7:00 — 1 commitsSun 8:00 — 7 commitsSun 9:00 — 14 commitsSun 10:00 — 11 commitsSun 11:00 — 11 commitsSun 12:00 — 8 commitsSun 13:00 — 5 commitsSun 14:00 — 8 commitsSun 15:00 — 7 commitsSun 16:00 — 9 commitsSun 17:00 — 3 commitsSun 18:00 — 0 commitsSun 19:00 — 1 commitsSun 20:00 — 4 commitsSun 21:00 — 8 commitsSun 22:00 — 8 commitsSun 23:00 — 9 commitsMon 0:00 — 4 commitsMon 1:00 — 0 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 2 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 3 commitsMon 9:00 — 7 commitsMon 10:00 — 4 commitsMon 11:00 — 4 commitsMon 12:00 — 2 commitsMon 13:00 — 9 commitsMon 14:00 — 7 commitsMon 15:00 — 11 commitsMon 16:00 — 3 commitsMon 17:00 — 1 commitsMon 18:00 — 0 commitsMon 19:00 — 1 commitsMon 20:00 — 1 commitsMon 21:00 — 3 commitsMon 22:00 — 8 commitsMon 23:00 — 6 commitsTue 0:00 — 6 commitsTue 1:00 — 0 commitsTue 2:00 — 0 commitsTue 3:00 — 0 commitsTue 4:00 — 1 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 5 commitsTue 9:00 — 7 commitsTue 10:00 — 13 commitsTue 11:00 — 9 commitsTue 12:00 — 3 commitsTue 13:00 — 2 commitsTue 14:00 — 11 commitsTue 15:00 — 10 commitsTue 16:00 — 3 commitsTue 17:00 — 4 commitsTue 18:00 — 1 commitsTue 19:00 — 4 commitsTue 20:00 — 1 commitsTue 21:00 — 10 commitsTue 22:00 — 15 commitsTue 23:00 — 5 commitsWed 0:00 — 4 commitsWed 1:00 — 0 commitsWed 2:00 — 0 commitsWed 3:00 — 2 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 2 commitsWed 9:00 — 24 commitsWed 10:00 — 15 commitsWed 11:00 — 11 commitsWed 12:00 — 4 commitsWed 13:00 — 7 commitsWed 14:00 — 2 commitsWed 15:00 — 1 commitsWed 16:00 — 6 commitsWed 17:00 — 0 commitsWed 18:00 — 0 commitsWed 19:00 — 0 commitsWed 20:00 — 0 commitsWed 21:00 — 6 commitsWed 22:00 — 2 commitsWed 23:00 — 0 commitsThu 0:00 — 0 commitsThu 1:00 — 0 commitsThu 2:00 — 1 commitsThu 3:00 — 1 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 0 commitsThu 8:00 — 2 commitsThu 9:00 — 2 commitsThu 10:00 — 2 commitsThu 11:00 — 1 commitsThu 12:00 — 1 commitsThu 13:00 — 5 commitsThu 14:00 — 5 commitsThu 15:00 — 7 commitsThu 16:00 — 2 commitsThu 17:00 — 0 commitsThu 18:00 — 1 commitsThu 19:00 — 0 commitsThu 20:00 — 3 commitsThu 21:00 — 1 commitsThu 22:00 — 1 commitsThu 23:00 — 1 commitsFri 0:00 — 0 commitsFri 1:00 — 0 commitsFri 2:00 — 1 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 0 commitsFri 9:00 — 2 commitsFri 10:00 — 4 commitsFri 11:00 — 8 commitsFri 12:00 — 4 commitsFri 13:00 — 6 commitsFri 14:00 — 4 commitsFri 15:00 — 2 commitsFri 16:00 — 3 commitsFri 17:00 — 1 commitsFri 18:00 — 5 commitsFri 19:00 — 1 commitsFri 20:00 — 3 commitsFri 21:00 — 3 commitsFri 22:00 — 3 commitsFri 23:00 — 3 commitsSat 0:00 — 0 commitsSat 1:00 — 0 commitsSat 2:00 — 0 commitsSat 3:00 — 2 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 1 commitsSat 7:00 — 1 commitsSat 8:00 — 2 commitsSat 9:00 — 3 commitsSat 10:00 — 2 commitsSat 11:00 — 14 commitsSat 12:00 — 6 commitsSat 13:00 — 7 commitsSat 14:00 — 6 commitsSat 15:00 — 5 commitsSat 16:00 — 5 commitsSat 17:00 — 4 commitsSat 18:00 — 3 commitsSat 19:00 — 10 commitsSat 20:00 — 3 commitsSat 21:00 — 1 commitsSat 22:00 — 1 commitsSat 23:00 — 2 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
May 7, 2026daily#7+122
May 6, 2026daily#22+62
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    453.6K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    385.5K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • anomalyco/opencode

    The open source coding agent.

    194.7K stars · TypeScript