openai/openai-agents-pythonPublic

A lightweight, powerful framework for multi-agent workflows

AI summary: The official Python SDK for building, managing, and orchestrating OpenAI's autonomous agents.

Stars
28.5K
+62 today
Forks
4.5K
Watchers
225
Open issues
15
Open PRs
12
Contributors
~332
Commits
2K
Branches
10

PythonMITCreated Mar 11, 2025Last push todayLatest release v0.19.4+169 stars this week+202 this month

Star history

since Mar 9, 2025
010K20KMar 2025Aug 2025Feb 2026Aug 2026
28.5K stars as of Aug 7, 2026, tracked back to Mar 9, 2025. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

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

Signals and awards

derived from tracked data
  • Widely adopted

    28,470 stars

  • Very active

    1,226 commits in 52 weeks

  • Community-driven

    ~332 contributors

  • Permissive license

    MIT

What openai-agents-python does

This library provides the official, streamlined interface for interacting with OpenAI's Agents API, abstracting away the raw HTTP calls into idiomatic Python. It handles the complex lifecycle of agents, threads, and runs, allowing developers to focus on the logic of their applications. The technical implementation emphasizes type safety, asynchronous support, and robust error handling while managing the stateful interactions required by the Assistants framework. What makes this distinctive is its deep integration with OpenAI's ecosystem, providing first-class support for capabilities like Code Interpreter and File Search out of the box. It represents the most reliable path for integrating production-grade OpenAI agents into Python backends.

This SDK is designed for Python developers and software engineers building applications on top of OpenAI's platform. It requires a solid understanding of Python programming and familiarity with API concepts.

  • Stateful Thread Management: automatically handles the complexity of maintaining conversation history across multiple interactions.
  • First-Class Tool Support: provides native interfaces for invoking OpenAI's built-in tools like Code Interpreter and File Search.
  • Asynchronous Execution: supports async/await patterns out of the box for high-throughput, non-blocking agent workflows.
  • Type-Safe Definitions: leverages Python type hints to ensure correct parameter passing and improve developer tooling.
  • Streaming Responses: enables real-time token streaming to build highly responsive user interfaces.

Where teams use it

Enterprise Chatbots

Engineering teams build customer support bots that can securely access company documents using the File Search capability.

Automated Data Analysis

Data scientists deploy agents that leverage the Code Interpreter to dynamically generate charts and analyze CSVs based on natural language.

Backend Agent Orchestration

Backend developers integrate the SDK into FastAPI or Django applications to manage long-running agent tasks asynchronously.

Custom Tool Execution

Product teams define complex function calling schemas so agents can directly interact with internal databases and APIs.

Getting started: pip install openai-agents && python -c 'import agents'

README

main branch

OpenAI Agents SDK PyPI

The OpenAI Agents SDK is a lightweight yet powerful framework for building multi-agent workflows. It is provider-agnostic, supporting the OpenAI Responses and Chat Completions APIs, as well as 100+ other LLMs.

Image of the Agents Tracing UI

Note

Looking for the JavaScript/TypeScript version? Check out Agents SDK JS/TS.

Core concepts:

  1. Agents: LLMs configured with instructions, tools, guardrails, and handoffs
  2. Sandbox agents: Agents preconfigured to work with a container to perform work over long time horizons.
  3. Realtime agents: Build powerful voice agents with gpt-realtime-2.1 and full agent features
  4. Voice agents: Build voice pipelines that combine speech-to-text, an agent workflow, and text-to-speech
  5. Agents as tools / Handoffs: Delegating to other agents for specific tasks
  6. Tools: Various Tools let agents take actions (functions, MCP, hosted tools)
  7. Guardrails: Configurable safety checks for input and output validation
  8. Human in the loop: Built-in mechanisms for involving humans across agent runs
  9. Sessions: Automatic conversation history management across agent runs
  10. Tracing: Built-in tracking of agent runs, allowing you to view, debug and optimize your workflows

Explore the examples directory to see the SDK in action, and read our documentation for more details.

Get started

To get started, set up your Python environment (Python 3.10 or newer required), and then install OpenAI Agents SDK package.

venv

python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
pip install openai-agents

For voice support, install with the optional voice group: pip install 'openai-agents[voice]'. For Redis session support, install with the optional redis group: pip install 'openai-agents[redis]'.

uv

If you're familiar with uv, installing the package would be even easier:

uv init
uv add openai-agents

For voice support, install with the optional voice group: uv add 'openai-agents[voice]'. For Redis session support, install with the optional redis group: uv add 'openai-agents[redis]'.

Run your first agents

The SDK supports four primary ways to run agents. Set the OPENAI_API_KEY environment variable before running any of these examples.

Run a text agent

Use a text Agent for workflows that do not need a persistent realtime connection or a sandbox workspace.

from agents import Agent, Runner

agent = Agent(name="Assistant", instructions="You are a helpful assistant")

result = Runner.run_sync(agent, "Write a haiku about recursion in programming.")
print(result.final_output)

# Code within the code,
# Functions calling themselves,
# Infinite loop's dance.

(For Jupyter notebook users, see hello_world_jupyter.ipynb)

Run a sandbox agent

Use a SandboxAgent when the agent needs to inspect files, run commands, apply patches, or preserve workspace state across longer tasks.

This example uses UnixLocalSandboxClient, which is supported on macOS and Linux. On Windows, use DockerSandboxClient with the openai-agents[docker] extra or a hosted sandbox client instead; see Sandbox clients for setup details.

from agents import Runner
from agents.run import RunConfig
from agents.sandbox import Manifest, SandboxAgent, SandboxRunConfig
from agents.sandbox.entries import GitRepo
from agents.sandbox.sandboxes import UnixLocalSandboxClient

agent = SandboxAgent(
    name="Workspace Assistant",
    instructions="Inspect the sandbox workspace before answering.",
    default_manifest=Manifest(entries={"repo": GitRepo(repo="openai/openai-agents-python", ref="main")}),
)

result = Runner.run_sync(
    agent,
    "Inspect the repo README and summarize what this project does.",
    run_config=RunConfig(sandbox=SandboxRunConfig(client=UnixLocalSandboxClient())),
)
print(result.final_output)

Run a realtime agent

Use a RealtimeAgent for low-latency, server-side voice and multimodal experiences over WebSocket.

import asyncio
from agents.realtime import RealtimeAgent, RealtimeRunner

async def main() -> None:
    agent = RealtimeAgent(name="Assistant", instructions="You are a helpful voice assistant. Keep responses short.")
    runner = RealtimeRunner(starting_agent=agent)
    session = await runner.run()

    async with session:
        await session.send_message("Say hello in one short sentence.")
        async for event in session:
            if event.type == "audio":
                # Forward or play event.audio.data.
                pass
            elif event.type == "history_added":
                print(event.item)
            elif event.type == "agent_end":
                break

if __name__ == "__main__":
    asyncio.run(main())

Run a voice agent

Use a VoicePipeline to turn audio into text, run an agent workflow, and stream generated speech.

import asyncio

import numpy as np

from agents import Agent
from agents.voice import AudioInput, SingleAgentVoiceWorkflow, VoicePipeline


async def main() -> None:
    agent = Agent(name="Assistant", instructions="You are a helpful voice assistant.")
    pipeline = VoicePipeline(workflow=SingleAgentVoiceWorkflow(agent))
    audio_input = AudioInput(buffer=np.zeros(24000 * 3, dtype=np.int16))

    result = await pipeline.run(audio_input)
    async for event in result.stream():
        if event.type == "voice_stream_event_audio":
            # Forward or play event.data.
            pass


if __name__ == "__main__":
    asyncio.run(main())

Explore the examples directory to see the SDK in action, and read our documentation for more details.

Acknowledgements

We'd like to acknowledge the excellent work of the open-source community, especially:

This library has these optional dependencies:

We also rely on the following tools to manage the project:

We're committed to continuing to build the Agents SDK as an open source framework so others in the community can expand on our approach.

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Releases and announcements

114 total
  1. v0.19.4v0.19.4Aug 5, 2026

    ## What's Changed * fix: preserve completed tool guardrail results by @seratch in https://github.com/openai/openai-agents-python/pull/4180 * fix: redact invalid tool argument errors by @seratch in https://github.com/openai/openai-agents-python/pull/4182 * fix: defer non-stream session saves until output guardrails by @seratch in https://github.com/openai/openai-agents-python/pull/4184 * fix: honor resolved status before policy checks by @seratch in https://github.com/openai/openai-agents-python/pull/4183 * fix: cancel sibling work after concurrent failures by @seratch in https://github.com/openai/openai-agents-python/pull/4185 * fix: surface non-streaming content-filter refusals by @seratch in https://github.com/openai/openai-agents-python/pull/4188 * fix(mcp): derive streamable HTTP retry backoff from backoffs taken by @rxits in https://github.com/openai/openai-agents-python/pull/4174 * fix(realtime): clean up failed connection attempts by @seratch in https://github.com/openai/openai-agents-python/pull/4189 * fix(tracing): mark non-streaming agent span failures by @seratch in https://github.com/openai/openai-agents-python/pull/4191 * fix(sandbox): enforce token output

  2. v0.19.3v0.19.3Aug 4, 2026

    ## What's Changed * fix: resolve agent tool name collisions consistently by @seratch in https://github.com/openai/openai-agents-python/pull/4137 * fix: reconcile resumed tool name collisions by @seratch in https://github.com/openai/openai-agents-python/pull/4145 * fix: persist the max-turns handler output to the session by @LeSingh1 in https://github.com/openai/openai-agents-python/pull/4160 * fix: report output guardrail results when a tripwire aborts the run by @Kaif10 in https://github.com/openai/openai-agents-python/pull/4090 * fix: replace closed default loop in run_sync by @hsusul in https://github.com/openai/openai-agents-python/pull/4102 * fix: honor falsey custom output extractors for agents as tools by @n33levo in https://github.com/openai/openai-agents-python/pull/4088 * fix: report tool guardrail results for streamed runs by @hsusul in https://github.com/openai/openai-agents-python/pull/4097 * fix: preserve approved tool output on streamed resume by @seratch in https://github.com/openai/openai-agents-python/pull/4126 * fix: normalize typeless strict object schemas by @seratch in https://github.com/openai/openai-agents-python/pull/4139 * fix: synchronize afte

  3. v0.19.2v0.19.2Aug 1, 2026

    ## What's Changed * feat: expose original callable through wrapped by @seratch in https://github.com/openai/openai-agents-python/pull/4038 * fix: report input guardrail results when a tripwire aborts the run by @hsusul in https://github.com/openai/openai-agents-python/pull/4071 * fix: consolidate same-exception re-raises into bare raise across all modules by @AAliKKhan in https://github.com/openai/openai-agents-python/pull/4023 * fix(sandbox): preserve tagged EnvValue subclasses by @seratch in https://github.com/openai/openai-agents-python/pull/4039 * fix(modal): reject ephemeral paths during tar hydration by @LHMQ878 in https://github.com/openai/openai-agents-python/pull/4045 * fix(mcp): redact MCP prompt and resource transport errors by @seratch in https://github.com/openai/openai-agents-python/pull/4067 * fix(mcp): redact URL credentials from SDK errors by @seratch in https://github.com/openai/openai-agents-python/pull/4015 * fix(mcp): redact URL credentials from tracing and tool metadata by @seratch in https://github.com/openai/openai-agents-python/pull/4020 * fix(mcp): redact direct MCP cleanup transport errors by @seratch in https://github.com/openai/openai-agents-

  4. v0.19.1v0.19.1Jul 29, 2026

    ## What's Changed * feat(sandbox): support native host paths in path grants by @seratch in https://github.com/openai/openai-agents-python/pull/4009 * fix: redact Realtime audio format diagnostics by @seratch in https://github.com/openai/openai-agents-python/pull/3992 * fix: redact Blaxel unmount paths in logging by @seratch in https://github.com/openai/openai-agents-python/pull/3993 * fix: retry pre-response WebSocket server errors by @dk3yyyy in https://github.com/openai/openai-agents-python/pull/3991 * fix(run): cancel the parallel input-guardrail task when the model turn fails by @gunjanjaswal in https://github.com/openai/openai-agents-python/pull/3982 * fix(run): allow empty streamed model input by @hsusul in https://github.com/openai/openai-agents-python/pull/3995 * fix(models): route falsey mapped providers by @hsusul in https://github.com/openai/openai-agents-python/pull/3996 * fix(memory): count valid SQLite session items for positive limits by @hsusul in https://github.com/openai/openai-agents-python/pull/4001 * fix(run): count streamed retries when terminal usage is missing by @hsusul in https://github.com/openai/openai-agents-python/pull/4002 * fix(run): canc

  5. v0.19.0v0.19.0Jul 27, 2026

    ## Key Changes This minor release does **not** introduce a breaking change. The minor version bump reflects a significant new OpenAI Responses feature area: Programmatic Tool Calling. ### Highlights: - Added `agents.tool.ProgrammaticToolCallingTool`, which lets supported OpenAI Responses models generate JavaScript to coordinate eligible tools. It supports per-tool `allowed_callers`, structured function-tool outputs, and integration with Runner streaming, guardrails, approvals, sessions, and `RunState`. See [Programmatic Tool Calling](https://developers.openai.com/api/docs/guides/tools-programmatic-tool-calling) for setup and constraints. - Added the public `agents.decorators` module and the shorter `@tool` alias alongside the existing function and guardrail decorators. Function tools now also support async callable objects. - SDK configuration now consistently accepts either typed settings objects or dictionaries across agents, runs, models, sessions, sandboxes, and voice pipelines, with validation for unknown settings. - Hardened error and diagnostic logging across models, tools, MCP, Realtime, sessions, sandboxes, and tracing to avoid exposing raw sensitive pa

Code frequency

additions and deletions
+108.5K-108.5KWeek of 2025-08-03: +2,704 linesWeek of 2025-08-03: -2,477 linesWeek of 2025-08-10: +6,069 linesWeek of 2025-08-10: -4,165 linesWeek of 2025-08-17: +8,507 linesWeek of 2025-08-17: -6,673 linesWeek of 2025-08-24: +2,409 linesWeek of 2025-08-24: -1,754 linesWeek of 2025-08-31: +4,362 linesWeek of 2025-08-31: -3,471 linesWeek of 2025-09-07: +5,669 linesWeek of 2025-09-07: -2,668 linesWeek of 2025-09-14: +2,787 linesWeek of 2025-09-14: -816 linesWeek of 2025-09-21: +13,664 linesWeek of 2025-09-21: -3,191 linesWeek of 2025-09-28: +4,700 linesWeek of 2025-09-28: -3,605 linesWeek of 2025-10-05: +3,142 linesWeek of 2025-10-05: -2,593 linesWeek of 2025-10-12: +18,745 linesWeek of 2025-10-12: -8,589 linesWeek of 2025-10-19: +2,969 linesWeek of 2025-10-19: -2,314 linesWeek of 2025-10-26: +1,227 linesWeek of 2025-10-26: -169 linesWeek of 2025-11-02: +6,978 linesWeek of 2025-11-02: -3,951 linesWeek of 2025-11-09: +4,336 linesWeek of 2025-11-09: -2,159 linesWeek of 2025-11-16: +7,128 linesWeek of 2025-11-16: -4,467 linesWeek of 2025-11-23: +2 linesWeek of 2025-11-23: -2 linesWeek of 2025-11-30: +4,693 linesWeek of 2025-11-30: -4,227 linesWeek of 2025-12-07: +328 linesWeek of 2025-12-07: -24 linesWeek of 2025-12-14: +7,764 linesWeek of 2025-12-14: -6,338 linesWeek of 2025-12-21: +2,360 linesWeek of 2025-12-21: -2,112 linesWeek of 2025-12-28: +0 linesWeek of 2025-12-28: -0 linesWeek of 2026-01-04: +7,492 linesWeek of 2026-01-04: -2,703 linesWeek of 2026-01-11: +15,521 linesWeek of 2026-01-11: -7,250 linesWeek of 2026-01-18: +5,801 linesWeek of 2026-01-18: -1,457 linesWeek of 2026-01-25: +29,280 linesWeek of 2026-01-25: -5,265 linesWeek of 2026-02-01: +7,848 linesWeek of 2026-02-01: -2,290 linesWeek of 2026-02-08: +7,411 linesWeek of 2026-02-08: -3,167 linesWeek of 2026-02-15: +3,254 linesWeek of 2026-02-15: -763 linesWeek of 2026-02-22: +10,954 linesWeek of 2026-02-22: -3,440 linesWeek of 2026-03-01: +25,682 linesWeek of 2026-03-01: -11,325 linesWeek of 2026-03-08: +12,415 linesWeek of 2026-03-08: -3,227 linesWeek of 2026-03-15: +6,557 linesWeek of 2026-03-15: -1,664 linesWeek of 2026-03-22: +6,341 linesWeek of 2026-03-22: -1,404 linesWeek of 2026-03-29: +1,524 linesWeek of 2026-03-29: -684 linesWeek of 2026-04-05: +922 linesWeek of 2026-04-05: -486 linesWeek of 2026-04-12: +108,457 linesWeek of 2026-04-12: -7,490 linesWeek of 2026-04-19: +8,593 linesWeek of 2026-04-19: -5,069 linesWeek of 2026-04-26: +34,428 linesWeek of 2026-04-26: -32,518 linesWeek of 2026-05-03: +12,719 linesWeek of 2026-05-03: -4,154 linesWeek of 2026-05-10: +10,439 linesWeek of 2026-05-10: -7,513 linesWeek of 2026-05-17: +1,351 linesWeek of 2026-05-17: -208 linesWeek of 2026-05-24: +381 linesWeek of 2026-05-24: -73 linesWeek of 2026-05-31: +2,093 linesWeek of 2026-05-31: -335 linesWeek of 2026-06-07: +1,527 linesWeek of 2026-06-07: -1,515 linesWeek of 2026-06-14: +2,317 linesWeek of 2026-06-14: -937 linesWeek of 2026-06-21: +5,380 linesWeek of 2026-06-21: -393 linesWeek of 2026-06-28: +4,646 linesWeek of 2026-06-28: -3,576 linesWeek of 2026-07-05: +11,820 linesWeek of 2026-07-05: -4,653 linesWeek of 2026-07-12: +13,047 linesWeek of 2026-07-12: -1,694 linesWeek of 2026-07-19: +17,771 linesWeek of 2026-07-19: -1,026 linesWeek of 2026-07-26: +8,564 linesWeek of 2026-07-26: -4,054 linesAug 3, 2025Jul 26, 2026
+495.1K lines added, -186.1K removed over the last year.

Commits per week

last 52 weeks
1050Week of 2025-08-03: 10 commitsWeek of 2025-08-10: 41 commitsWeek of 2025-08-17: 24 commitsWeek of 2025-08-24: 15 commitsWeek of 2025-08-31: 20 commitsWeek of 2025-09-07: 27 commitsWeek of 2025-09-14: 17 commitsWeek of 2025-09-21: 23 commitsWeek of 2025-09-28: 10 commitsWeek of 2025-10-05: 7 commitsWeek of 2025-10-12: 20 commitsWeek of 2025-10-19: 25 commitsWeek of 2025-10-26: 7 commitsWeek of 2025-11-02: 10 commitsWeek of 2025-11-09: 4 commitsWeek of 2025-11-16: 16 commitsWeek of 2025-11-23: 1 commitsWeek of 2025-11-30: 12 commitsWeek of 2025-12-07: 6 commitsWeek of 2025-12-14: 17 commitsWeek of 2025-12-21: 6 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 21 commitsWeek of 2026-01-11: 36 commitsWeek of 2026-01-18: 41 commitsWeek of 2026-01-25: 13 commitsWeek of 2026-02-01: 38 commitsWeek of 2026-02-08: 42 commitsWeek of 2026-02-15: 15 commitsWeek of 2026-02-22: 22 commitsWeek of 2026-03-01: 55 commitsWeek of 2026-03-08: 28 commitsWeek of 2026-03-15: 40 commitsWeek of 2026-03-22: 32 commitsWeek of 2026-03-29: 12 commitsWeek of 2026-04-05: 11 commitsWeek of 2026-04-12: 29 commitsWeek of 2026-04-19: 34 commitsWeek of 2026-04-26: 32 commitsWeek of 2026-05-03: 105 commitsWeek of 2026-05-10: 50 commitsWeek of 2026-05-17: 14 commitsWeek of 2026-05-24: 7 commitsWeek of 2026-05-31: 8 commitsWeek of 2026-06-07: 8 commitsWeek of 2026-06-14: 9 commitsWeek of 2026-06-21: 27 commitsWeek of 2026-06-28: 19 commitsWeek of 2026-07-05: 55 commitsWeek of 2026-07-12: 28 commitsWeek of 2026-07-19: 43 commitsWeek of 2026-07-26: 34 commitsAug 3, 2025Jul 26, 2026
1.2K commits in the last 52 weeks.

When work happens

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

    A collective list of free APIs

    454.9K stars · Python

  • 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

  • donnemartin/system-design-primer

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

    362.2K stars · Python