tester-army/e2ePublic

Next generation e2e testing framework for web and mobile apps.

AI summary: Next-generation open-source AI testing framework for web and mobile apps.

Stars
2.8K
Forks
107
Watchers
7
Open issues
9
Open PRs
30
Contributors
~20
Commits
607
Branches
47

TypeScriptApache-2.0Created Jul 22, 2026Last push todayLatest release @e2e-dev/web@0.12.0

Quick answers

What is e2e?
Next-generation open-source AI testing framework for web and mobile apps.
What does e2e do?
The e2e framework provides an advanced environment for end-to-end testing of both web and mobile applications using AI capabilities. It aims to simplify the creation and maintenance of robust test suites by integrating intelligent automation. Built with TypeScript, it supports modern application architectures and integrates seamlessly with Playwright. It is designed to be the open-source alternative for comprehensive QA automation.
Who is e2e for?
QA engineers, automation specialists, and developers looking for a unified, AI-powered framework for cross-platform testing.
How do I get started with e2e?
npm install e2e
How popular is e2e on GitHub?
tester-army/e2e has 2,843 stars and 107 forks on GitHub.
What license does e2e use?
tester-army/e2e is released under the Apache-2.0 license.

Star history

since Oct 4, 2026

Star history is still being collected for this repository.

Contribution activity

commits per day, last 52 weeks
OctNovDecJanFebMarAprMayJunJulAugSepOctMonWedFri2025-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: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 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: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-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: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-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: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 1 commit2026-07-23: 0 commits2026-07-24: 1 commit2026-07-25: 1 commit2026-07-26: 2 commits2026-07-27: 2 commits2026-07-28: 3 commits2026-07-29: 2 commits2026-07-30: 10 commits2026-07-31: 4 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits2026-08-09: 0 commits2026-08-10: 0 commits2026-08-11: 0 commits2026-08-12: 0 commits2026-08-13: 0 commits2026-08-14: 0 commits2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 0 commits2026-08-30: 0 commits2026-08-31: 2 commits2026-09-01: 5 commits2026-09-02: 5 commits2026-09-03: 6 commits2026-09-04: 9 commits2026-09-05: 15 commits2026-09-06: 2 commits2026-09-07: 16 commits2026-09-08: 42 commits2026-09-09: 29 commits2026-09-10: 19 commits2026-09-11: 13 commits2026-09-12: 17 commits2026-09-13: 0 commits2026-09-14: 25 commits2026-09-15: 7 commits2026-09-16: 2 commits2026-09-17: 10 commits2026-09-18: 13 commits2026-09-19: 0 commits2026-09-20: 3 commits2026-09-21: 19 commits2026-09-22: 28 commits2026-09-23: 51 commits2026-09-24: 6 commits2026-09-25: 27 commits2026-09-26: 19 commits2026-09-27: 0 commits2026-09-28: 41 commits2026-09-29: 41 commits2026-09-30: 26 commits2026-10-01: 19 commits2026-10-02: 20 commits2026-10-03: 29 commits2026-10-04: 12 commits2026-10-05: 0 commits2026-10-06: 0 commits2026-10-07: 0 commits2026-10-08: 0 commits2026-10-09: 0 commits2026-10-10: 0 commits
604 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Very active

    604 commits in 52 weeks

  • Well documented

    High community health score

  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

What e2e does

The e2e framework provides an advanced environment for end-to-end testing of both web and mobile applications using AI capabilities. It aims to simplify the creation and maintenance of robust test suites by integrating intelligent automation. Built with TypeScript, it supports modern application architectures and integrates seamlessly with Playwright. It is designed to be the open-source alternative for comprehensive QA automation.

QA engineers, automation specialists, and developers looking for a unified, AI-powered framework for cross-platform testing.

  • Cross-platform testing: supports comprehensive end-to-end testing for both web and mobile applications.
  • AI integration: utilizes artificial intelligence to generate and maintain resilient test cases.
  • Playwright compatibility: leverages the Playwright engine for fast, reliable web automation.
  • Open-source foundation: provides a fully accessible framework under the Apache-2.0 license.
  • Unified QA platform: centralizes testing infrastructure for multiple application types.

Where teams use it

Automate web testing

Write and run comprehensive browser tests using AI-assisted Playwright automation.

Mobile app validation

Execute end-to-end functional tests on mobile application interfaces.

Resilient test generation

Utilize AI to create test cases that adapt to minor UI changes automatically.

Unified CI/CD pipeline

Integrate both web and mobile testing into a single continuous integration workflow.

Getting started: npm install e2e

README

main branch

e2e, the open source AI testing framework by TesterArmy

Made by TesterArmy npm version License: Apache-2.0 Join the community on Discord

e2e

e2e is an end-to-end testing framework for web and mobile apps. Describe a goal in natural language and an agent drives the app to reach it. Check the result with locators and assertions in the same test.

// tests/checkout.e2e.ts
import { test, expect } from 'e2e';

test('a member upgrades to Pro', async ({ app, agent, screen }) => {
  await app.open('/settings/billing');

  await agent.act('upgrade the workspace to the Pro plan');
  await agent.assert('the invoice preview shows a prorated amount');

  await expect(screen.getByRole('status')).toContainText('Pro');
});

An agent step that a later assertion verifies records its actions, and the next run replays them with no model calls until the app changes. Tests without agent steps need no model. Bring your own subscription, API key, or local model.

Quick start

npx e2e init

init asks for an engine, web or mobile, and a model provider, then writes a config and an example test. The quickstart covers the rest.

Packages

Package What it does
e2e The SDK, runner, and CLI.
@e2e-dev/web Browser engine: Chromium, Firefox, and WebKit through Playwright.
@e2e-dev/mobile iOS and Android engine: simulators and emulators through agent-device.
@e2e-dev/github Reporter that posts results as a pull request comment.
@e2e-dev/kernel Kernel hosted browsers for the web engine.
@e2e-dev/eas EAS Simulators hosted iOS simulators and Android emulators for the mobile engine.
@e2e-dev/decision Decision-model executors for bounded semantic actions and assertions.

Documentation

e2e.tester.army/docs. The e2e package ships every page, so coding agents can read them offline in node_modules/e2e/docs.

Contributing

See CONTRIBUTING.md. Questions go to Discord.

Security

Please don't open public issues for security vulnerabilities. Follow SECURITY.md and report them to security@tester.army.

Telemetry

The CLI sends anonymous usage data, such as which commands and engines run and where runs fail, but no test content, app content, or credentials. Opt out with npx e2e telemetry disable or E2E_TELEMETRY_DISABLED=1. Telemetry lists every field.

Status

Note

e2e is in active development on the way to 1.0. APIs and config can still change between minor releases.

Made by TesterArmy

e2e is built by TesterArmy, the agentic testing platform that runs natural language tests on web and mobile apps, on every pull request or on a schedule.

Apache-2.0.

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

19 total
  1. e2e@0.17.0e2e@0.17.0Oct 4, 2026

    ### Minor Changes - [#779](https://github.com/tester-army/e2e/pull/779) [`6639bfa`](https://github.com/tester-army/e2e/commit/6639bfad711d131a3cb2d2bef88ff55289c211a8) Thanks [@fecolinhares](https://github.com/fecolinhares)! - `copilot()` reaches the models Copilot serves only over its Responses API, such as `gpt-6-luna`, `gpt-5.3-codex`, and `grok-4.5`. On the first call it reads the plan's model listing and picks chat completions or the Responses API from the model's `supported_endpoints`; a model served over chat completions, or one the listing does not place, stays on chat completions. A listing that cannot be read sends that call over chat completions without remembering it, and a revoked login fails on the listing with the sign-in command. Responses models run through `@ai-sdk/openai`, which `e2e init` now adds for Copilot; without it the call names the package to install. Responses turns carry the same initiator and vision headers as chat turns. `e2e models github-copilot` marks what `copilot()` cannot call with `no chat or responses` in place of `no chat completions`, and a disabled model as `not enabled` only. - [#794](https://github.com/tester-army/e2e/pull/794) [`c6617

  2. @e2e-dev/web@0.12.0@e2e-dev/web@0.12.0Oct 4, 2026

    ### Minor Changes - [#798](https://github.com/tester-army/e2e/pull/798) [`02ad48a`](https://github.com/tester-army/e2e/commit/02ad48a94ef9f68befc89139694c519868d82853) Thanks [@okwasniewski](https://github.com/okwasniewski)! - Breaking: `@e2e-dev/web` depends on `playwright-core` pinned to an exact version instead of peering on `playwright`. Projects no longer install Playwright themselves, and the engine always runs the Playwright it was tested against. Remove `playwright` from your dependencies unless your app uses it for its own tests: ```bash npm uninstall playwright ``` Install browsers in CI with the package's new command, which runs the engine's Playwright: `npx @e2e-dev/web install chromium --with-deps` (`pnpm exec e2e-web install chromium --with-deps` under pnpm) replaces `npx playwright install chromium --with-deps`. Open traces with `npx playwright-core@1.63.0 show-trace <file>` (`pnpm dlx` in a pnpm project). An app that also depends on `@playwright/test` keeps its own copy; the two share a browser cache only when their versions match. `e2e init` no longer adds `playwright` to a new project. - [#795](https://github.com/tester-army/e2e/pull/795) [`3b026fa

  3. @e2e-dev/mobile@0.9.2@e2e-dev/mobile@0.9.2Oct 4, 2026

    ### Patch Changes - [#711](https://github.com/tester-army/e2e/pull/711) [`a3da00d`](https://github.com/tester-army/e2e/commit/a3da00dcb147118ee64cdfbc2949225416e43b31) Thanks [@okwasniewski](https://github.com/okwasniewski)! - `device.installApp()` no longer pins the build's file path as the app when agent-device reports no bundle id or package for it, which on Android made `app.open()` fail with "Android runtime hints require an installed package name". It fails at the install with `ENGINE_FAILURE` naming `app.bundleId` or installApp's `app` option; the mobile docs' Troubleshooting covers the Android cause (agent-device 0.21.18 reads an aapt2-built APK's package only through the SDK's `aapt`, which it does not find in the macOS default SDK location, or when the install added the package). `app.open()` on a device now keeps the engine's own reason it cannot launch, such as a build not installed yet with `device.installApp()`, instead of a generic "pin one with app.bundleId or app.appPath". - [#791](https://github.com/tester-army/e2e/pull/791) [`b3e1fd1`](https://github.com/tester-army/e2e/commit/b3e1fd1543300aa0c5c32a9ff1dc77b3b37ef1ef) Thanks [@DimaMishchenko](https://github.com

  4. @e2e-dev/github@0.3.3@e2e-dev/github@0.3.3Oct 4, 2026

    ### Patch Changes - [#713](https://github.com/tester-army/e2e/pull/713) [`7ab80bc`](https://github.com/tester-army/e2e/commit/7ab80bc61001dd102006ea020419b74b72ddf0c7) Thanks [@okwasniewski](https://github.com/okwasniewski)! - Breaking: an interrupted test is no longer counted as failed. `report.json` gains `run.summary.interrupted`, and `run.summary.failed` counts only failed and timed-out tests. `run.summary.skipped` now counts only selected tests, so `passed + failed + interrupted + flaky + skipped` equals `selected`; the tests a filter left out are `discovered - selected`. The `list` reporter prints `3 interrupted` in its own column, `summary.md` shows them with ⏹️ and gives them no failure block or page, and `junit.xml` writes each one as a `<skipped>` whose message starts `interrupted:`. A test that failed and whose retry an interrupt cut short stays failed, and its failure is the one reported. A `--repeat-each` run the interrupt stopped is listed as interrupted, not as a flake. The telemetry event gains `tests_interrupted`. In `@e2e-dev/github`, a test that was interrupted and then passed on a `--last-failed` rerun shows as passed, not flaky. - [#724](https://github.com/te

  5. e2e@0.16.0e2e@0.16.0Oct 2, 2026

    ### Minor Changes - [#762](https://github.com/tester-army/e2e/pull/762) [`83c17e2`](https://github.com/tester-army/e2e/commit/83c17e261e1e6de043c6ae96b9251fecf05356d6) Thanks [@okwasniewski](https://github.com/okwasniewski)! - Anonymous telemetry covers `e2e mcp` and `e2e explore`. Each MCP session sends one `e2e_mcp_session` event when it closes or fails to open: the client's self-reported name and version, the platform and engine, how it ended, and its tool calls counted by the runner's own tool names with the error codes they failed with. `e2e_run_completed` adds `command`, counts and option ids of the config features the run used, and for `e2e explore` why it stopped and its steps and findings by kind and severity. Beyond the client's own name, no project names, paths, tool arguments or results, goals, or findings are sent. The notice shows again once; `E2E_TELEMETRY_DEBUG=1` prints every event, and the opt-outs are unchanged. ### Patch Changes - [#760](https://github.com/tester-army/e2e/pull/760) [`b3c9832`](https://github.com/tester-army/e2e/commit/b3c9832aa78ac073ceeb4f11e21c833b8ed1e6f7) Thanks [@devin-ai-integration](https://github.com/apps/devin-ai-integration)! - `e2e

Code frequency

additions and deletions
+101.1K-101.1KWeek of 2026-07-19: +21,510 linesWeek of 2026-07-19: -436 linesWeek of 2026-07-26: +35,000 linesWeek of 2026-07-26: -5,218 linesWeek of 2026-08-02: +0 linesWeek of 2026-08-02: -0 linesWeek of 2026-08-09: +0 linesWeek of 2026-08-09: -0 linesWeek of 2026-08-16: +0 linesWeek of 2026-08-16: -0 linesWeek of 2026-08-23: +0 linesWeek of 2026-08-23: -0 linesWeek of 2026-08-30: +46,633 linesWeek of 2026-08-30: -25,196 linesWeek of 2026-09-06: +95,886 linesWeek of 2026-09-06: -46,259 linesWeek of 2026-09-13: +36,565 linesWeek of 2026-09-13: -13,661 linesWeek of 2026-09-20: +101,134 linesWeek of 2026-09-20: -59,229 linesWeek of 2026-09-27: +96,556 linesWeek of 2026-09-27: -26,339 linesWeek of 2026-10-04: +9,713 linesWeek of 2026-10-04: -4,965 linesJul 19, 2026Oct 4, 2026
+443K lines added, -181.3K removed over the last year.

Commits per week

last 52 weeks
1760Week 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: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 0 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 3 commitsWeek of 2026-07-26: 23 commitsWeek of 2026-08-02: 0 commitsWeek of 2026-08-09: 0 commitsWeek of 2026-08-16: 0 commitsWeek of 2026-08-23: 0 commitsWeek of 2026-08-30: 42 commitsWeek of 2026-09-06: 138 commitsWeek of 2026-09-13: 57 commitsWeek of 2026-09-20: 153 commitsWeek of 2026-09-27: 176 commitsWeek of 2026-10-04: 12 commitsOct 12, 2025Oct 4, 2026
604 commits in the last 52 weeks.

When work happens

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

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

    456.7K stars · TypeScript

  • openclaw/openclaw

    The AI that really does things. Any OS. Any Platform. The lobster way. 🦞

    391.3K stars · TypeScript

  • donnemartin/system-design-primer

    Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

    373.2K stars · Python

  • anomalyco/opencode

    The open source coding agent.

    211.7K stars · TypeScript

  • n8n-io/n8n

    Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

    206.7K stars · TypeScript

  • microsoft/vscode

    Visual Studio Code

    193.5K stars · TypeScript