langchain-ai/openwikiPublic

OpenWiki is a CLI that writes and maintains agent documentation for your codebase.

AI summary: A CLI tool that synthesizes local knowledge sources and codebases into an agent-readable wiki.

Stars
14.4K
+209 today
Forks
1K
Watchers
41
Open issues
62
Open PRs
71
Contributors
~53
Commits
206
Branches
24

TypeScriptMITCreated Jun 22, 2026Last push todayLatest release 0.2.3+732 stars this week+880 this month

Star history

since Jun 28, 2026
05K10KJun 2026Jul 2026Jul 2026Aug 2026
14.4K stars as of Aug 7, 2026, tracked back to Jun 28, 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: 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: 3 commits2026-06-23: 7 commits2026-06-24: 5 commits2026-06-25: 0 commits2026-06-26: 1 commit2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 11 commits2026-06-30: 8 commits2026-07-01: 3 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 2 commits2026-07-06: 6 commits2026-07-07: 6 commits2026-07-08: 7 commits2026-07-09: 6 commits2026-07-10: 12 commits2026-07-11: 5 commits2026-07-12: 5 commits2026-07-13: 9 commits2026-07-14: 10 commits2026-07-15: 7 commits2026-07-16: 2 commits2026-07-17: 5 commits2026-07-18: 3 commits2026-07-19: 3 commits2026-07-20: 16 commits2026-07-21: 3 commits2026-07-22: 5 commits2026-07-23: 11 commits2026-07-24: 7 commits2026-07-25: 0 commits2026-07-26: 1 commit2026-07-27: 8 commits2026-07-28: 7 commits2026-07-29: 1 commit2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits
185 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    14,412 stars

  • Breakout launch

    14,412 stars in 46 days

  • Rising fast

    +732 stars this week

  • Actively maintained

    Pushed within 48 hours

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

  • Repeat trending

    8 trending appearances

What openwiki does

OpenWiki is a command-line interface designed to automatically write and maintain documentation specifically for AI agents. It ingests data from local repositories, built-in connectors, Gmail, Notion, Web Search, and social feeds to synthesize a coherent local wiki. Operating in two distinct modes, it can generate a personal brain wiki for individual context or repository documentation stored in an `openwiki/` folder for codebase context. It integrates directly into CI/CD pipelines, ensuring that the agent-readable documentation is continuously updated as the underlying code evolves.

OpenWiki is tailored for software engineering teams and power users orchestrating autonomous AI agents across their workflows. It requires Node.js and an API key for the underlying language models.

  • Dual Operating Modes: Offers Personal mode for individual knowledge bases and Code mode for repository documentation.
  • Multi-Source Ingestion: Connects to local Git repositories, Notion, Gmail, Web Search, and Hacker News to gather context.
  • Agent-Optimized Output: Synthesizes gathered data into a structured wiki format designed explicitly for LLM consumption.
  • CI/CD Integration: Automatically updates repository documentation via GitHub Actions, GitLab CI, or Bitbucket Pipelines.
  • SQLite Checkpointing: Utilizes better-sqlite3 to efficiently manage and track state across documentation updates.
  • Automated PR Generation: Capable of opening pull requests automatically when documentation changes are synthesized.

Where teams use it

Codebase context provision

Engineering teams can automatically generate an agent-readable wiki to help their AI coding assistants understand repository architecture.

Personal knowledge synthesis

Power users can aggregate their emails, notes, and web searches into a local brain wiki for a personalized AI assistant.

Continuous documentation updating

Maintainers can integrate OpenWiki into GitHub Actions to ensure agent documentation stays synchronized with every code merge.

Onboarding AI agents

Developers can point an autonomous agent at the `openwiki/` folder to instantly ground it in the project's specific conventions.

Getting started: npm install -g openwiki && openwiki --init

README

main branch

OpenWiki

OpenWiki is a CLI that writes and maintains agent wikis for codebases or purpose memory. It's built specifically for agents, can ingest local knowledge sources through built-in connectors or git repositories and synthesize them into a local wiki.

langchain-ai%2Fopenwiki | Trendshift

OpenWiki

Install

npm install -g openwiki

On Windows, prefer installing OpenWiki with Node.js package managers such as npm or pnpm:

npm install -g openwiki
# or
pnpm add -g openwiki

bun install -g openwiki can fall back to compiling OpenWiki's better-sqlite3 checkpointing dependency. Before using that path, install Visual Studio Build Tools with the Desktop development with C++ workload. Bun does not run lifecycle scripts from installed packages by default, so it cannot display a package-level warning before that native dependency build starts.

Quick Start

Initialize OpenWiki in code mode, configure your model and API key, then generate documentation:

openwiki --init

OpenWiki has two modes:

  • Personal mode builds a local personal brain wiki in ~/.openwiki/wiki from configured sources like local repositories, Gmail, Notion, Web Search, Hacker News, and X/Twitter.
  • Code mode builds repository documentation in openwiki/ for the current codebase.

Bare openwiki --init and openwiki --update run in code mode. Use openwiki personal --init or openwiki personal --update for the local personal brain wiki.

Then to ensure your documentation stays up-to-date, add the CI workflow for your Git provider to automatically open a PR or merge request with documentation updates:

For repository documentation in GitHub Actions, use openwiki code --update --print. You do not need to run --init in CI: --update will create the initial openwiki/ docs if they do not exist yet, as long as the workflow provides the required provider and model environment variables.

Scheduled/CI runs send anonymous reliability telemetry. See Telemetry for what is collected and how to turn it off (uncomment OPENWIKI_TELEMETRY_DISABLED in the example workflow).

Open Knowledge Format compatibility

OpenWiki emits Google Open Knowledge Format (OKF) v0.1 bundles in both code and personal modes.

  • Every non-reserved Markdown concept has YAML front matter with a non-empty type; all other standard fields are optional.
  • Valid timestamp values and producer-defined extension fields are accepted and preserved during updates and migrations.
  • index.md and log.md are reserved documents rather than concepts. Nested indexes contain no front matter, while the root index declares okf_version: "0.1".
  • Standard Markdown links between concept documents express relationships.

Usage

Start the interactive CLI in code mode for the current repository:

openwiki

Start OpenWiki with an initial request:

openwiki "Please generate documentation for this repository"

Start the interactive local personal brain instead:

openwiki personal

Run a single command and exit:

openwiki -p "Summarize what you can do"

Initialize OpenWiki:

openwiki --init

Initialize the local personal brain wiki:

openwiki personal --init

Update repository code documentation:

openwiki --update

Update the local personal brain wiki:

openwiki personal --update

Run an update that can ingest configured local connectors first:

openwiki personal --update "Refresh the wiki from configured connectors"

Show help:

openwiki --help

In chat, use /api-key to update the current provider API key and /langsmith-key to update or clear LangSmith tracing credentials. Both commands use masked prompts.

Authenticate a connector provider:

openwiki auth slack
openwiki auth gmail
openwiki auth x
openwiki auth notion

Start an ngrok tunnel for Slack OAuth:

openwiki ngrok start

This starts ngrok with a random HTTPS forwarding URL. OpenWiki reads ngrok's local inspection API, appends /callback, and saves OPENWIKI_HTTPS_OAUTH_REDIRECT_URI automatically. Register the printed callback URL in Slack. If you have a fixed ngrok domain, run openwiki ngrok start https://<your-ngrok-domain>. X/Twitter and Gmail auth ignore that HTTPS override and keep using the local loopback callback, http://127.0.0.1:53682/callback.

Bare openwiki runs in code mode for the current repository. It creates initial repository documentation in openwiki/ when no wiki exists. Use openwiki personal for the local general-purpose wiki in ~/.openwiki/wiki/. By default, the CLI stays open after each run so you can send follow-up messages. Use -p or --print for a one-shot non-interactive run that prints the final assistant output.

Bare openwiki --init and openwiki --update default to code mode and operate on repository documentation. Use the personal positional mode or --mode personal to initialize or update the local personal brain wiki.

On each code run, openwiki maintains both an AGENTS.md and a CLAUDE.md at the repository root, adding prompting that instructs your coding agent to reference the wiki when searching for context. Each file is created if it does not already exist. If a file is present, OpenWiki only rewrites its own <!-- OPENWIKI:START -->…<!-- OPENWIKI:END --> block and leaves the rest of your content untouched (appending the block the first time). The scheduled GitHub Actions workflow includes these files, along with the workflow itself, in the documentation pull request.

Repository-specific wiki instructions are stored separately in openwiki/INSTRUCTIONS.md. This file is a shared, user-authored brief for the repository wiki: OpenWiki reads it for scope and priorities, but it is not generated documentation and is not rewritten during normal init, update, or chat runs unless you explicitly ask to change the brief.

On the first interactive run, OpenWiki will have you configure your inference provider, API key, and LLM. You will also be able to set a LangSmith API key to trace your OpenWiki runs to a LangSmith tracing project named "openwiki" (optional).

These configuration options and secrets will be saved to ~/.openwiki/.env on your local machine.

Local Connectors

OpenWiki's first-run onboarding offers connector setup for local Git repositories, Notion, Gmail, X/Twitter, Web Search, and Hacker News. During an ingestion run, deterministic connector tools write raw data and manifests under ~/.openwiki/connectors/<connector>/raw/, then source-specific agent runs synthesize the local wiki under ~/.openwiki/wiki/ from those local files.

You can configure the same connector more than once. For example, add one Web Search source for AI research and another for NBA news; OpenWiki stores them as separate source instances such as web-search-1 and web-search-2. Run all instances with openwiki ingest all, all instances for one connector with openwiki ingest web-search, or one instance with openwiki ingest web-search-2.

  • git-repo reads configured local repository paths and writes compact manifests.
  • x uses the X API directly with OAuth user-context credentials for home timeline, user posts, mentions, bookmarks, and list posts.
  • notion targets the hosted Notion MCP server, so users should authenticate through Notion OAuth instead of pasting a Notion token into OpenWiki.
  • google uses the Gmail API directly with OAuth user credentials to fetch recent mail, with room to add Drive, Calendar, and other Google providers later.
  • web-search uses Tavily through LangChain and requires TAVILY_API_KEY.
  • hackernews uses public Hacker News feed and search APIs, with no credentials required.

Connector secrets are referenced by env var name and stored in ~/.openwiki/.env; connector config files should never contain raw secret values.

openwiki auth <provider> runs a local browser OAuth flow, saves returned tokens into ~/.openwiki/.env, creates connector config when possible, and discovers MCP tools for MCP-backed providers. Slack and Gmail require app client credentials to already be set in that file; Notion uses dynamic client registration for hosted MCP; X uses OAuth 2.0 with PKCE. After openwiki auth gmail, the Google connector can ingest Gmail directly with no MCP transport setup.

openwiki auth configure <provider> and openwiki auth tools <provider> are advanced/retry commands for regenerating connector config or inspecting live MCP tools.

First-run onboarding also lets users choose a wiki template, customize its scope, and save per-source ingestion notes and source schedules in ~/.openwiki/onboarding.json. The global personal wiki instructions are saved in ~/.openwiki/INSTRUCTIONS.md. On macOS, source schedules are installed as user LaunchAgents under ~/Library/LaunchAgents/ and write logs under ~/.openwiki/logs/.

See the OpenWiki operations docs for credential storage and provider setup notes.

Customizing

OpenWiki supports OpenAI (with an API key or a ChatGPT login), OpenRouter, Gemini (AI Studio), Gemini Enterprise (Vertex AI), Nebius Token Factory, Fireworks, Baseten, NVIDIA NIM, an OpenAI-compatible provider, AWS Bedrock, Anthropic, and GitHub Copilot out of the box. The onboarding default is OpenAI with gpt-5.6-terra, and each inference provider also includes pre-defined model options plus support for custom model IDs.

GitHub Copilot

The GitHub Copilot provider routes inference through the OpenAI-compatible Copilot API (https://api.githubcopilot.com), so teams can reuse an existing Copilot subscription instead of provisioning a separate inference API key.

  1. Select GitHub Copilot as the provider during openwiki --init. If you already have an active GitHub CLI session, OpenWiki detects it automatically and offers to reuse it — no manual token entry needed. Otherwise, press Tab at the credential prompt to run gh auth login right there and sign in.
  2. Choose a model (for example gpt-5.5).

OpenWiki leaves the GitHub CLI token in the GitHub CLI's own credential store; it does not copy that token into ~/.openwiki/.env. For CI or another headless environment without a GitHub CLI session, set COPILOT_API_KEY explicitly to a GitHub OAuth token. Personal Access Tokens (classic or fine-grained) are rejected by the Copilot API for third-party integrations and will not work, even though the GitHub Copilot CLI itself accepts them.

The resulting local provider configuration can stay token-free:

OPENWIKI_PROVIDER="copilot"
OPENWIKI_MODEL_ID="gpt-5.5"

In CI (such as the scheduled GitHub Actions workflow), set the COPILOT_API_KEY repository secret and export OPENWIKI_PROVIDER=copilot in the workflow environment.

Alternative base URLs

To route the Anthropic provider at an alternative, Anthropic-compatible endpoint (for example a self-hosted or proxied gateway) instead of the default API, set ANTHROPIC_BASE_URL alongside ANTHROPIC_API_KEY:

OPENWIKI_PROVIDER=anthropic
ANTHROPIC_API_KEY=your-key
ANTHROPIC_BASE_URL=https://your-gateway.example.com/anthropic

The openai provider likewise supports an alternative, OpenAI-compatible endpoint (for example a self-hosted or proxied gateway) via OPENAI_BASE_URL, set alongside OPENAI_API_KEY. Baseten, Fireworks, and NVIDIA NIM can be routed through alternate OpenAI-compatible gateways with BASETEN_BASE_URL, FIREWORKS_BASE_URL, and NVIDIA_BASE_URL, respectively. This is useful for OpenAI-compatible gateways that expose the Responses API, since the openai provider routes tool calls through the Responses API (/v1/responses) rather than chat completions:

OPENWIKI_PROVIDER=openai
OPENAI_API_KEY=your-key
OPENAI_BASE_URL=https://your-gateway.example.com/v1
OPENWIKI_MODEL_ID=your-model-name

Similarly, to route the GitHub Copilot provider at an alternative endpoint (for example a GitHub Enterprise Cloud data-residency host or a proxied gateway) instead of the default https://api.githubcopilot.com, set COPILOT_BASE_URL alongside COPILOT_API_KEY:

OPENWIKI_PROVIDER=copilot
COPILOT_API_KEY=your-copilot-token
COPILOT_BASE_URL=https://your-tenant.ghe.com/api/copilot

OpenAI-compatible endpoints

The openai-compatible provider targets any OpenAI-compatible chat-completions endpoint via a required base URL. This can be used for OpenAI-compatible LLM endpoints like those exposed by a LiteLLM gateway when it is used as a gateway — letting you reach whatever upstream providers the gateway fronts through a single OpenAI-shaped API. Set the model ID to whatever name the gateway exposes:

OPENWIKI_PROVIDER=openai-compatible
OPENAI_COMPATIBLE_API_KEY=your-gateway-key
OPENAI_COMPATIBLE_BASE_URL=https://your-gateway.example.com/v1
OPENWIKI_MODEL_ID=your-gateway-model-name

Hosted OpenAI-compatible gateways work the same way. For example, Requesty is a hosted gateway that fronts many upstream providers behind one OpenAI-compatible API at https://router.requesty.ai/v1, using provider/model model IDs (see the full list at https://router.requesty.ai/v1/models):

OPENWIKI_PROVIDER=openai-compatible
OPENAI_COMPATIBLE_API_KEY=your-requesty-key
OPENAI_COMPATIBLE_BASE_URL=https://router.requesty.ai/v1
OPENWIKI_MODEL_ID=openai/gpt-5.5
openwiki --init

Local LLM servers that expose OpenAI-compatible chat completions use the same provider. The model ID must match a model available from that local server:

# Ollama, after `ollama serve` and `ollama pull llama3.2`
OPENWIKI_PROVIDER=openai-compatible
OPENAI_COMPATIBLE_API_KEY=ollama
OPENAI_COMPATIBLE_BASE_URL=http://localhost:11434/v1
OPENWIKI_MODEL_ID=llama3.2
openwiki --init
# LM Studio, after starting the local server from the Developer tab
OPENWIKI_PROVIDER=openai-compatible
OPENAI_COMPATIBLE_API_KEY=lm-studio
OPENAI_COMPATIBLE_BASE_URL=http://localhost:1234/v1
OPENWIKI_MODEL_ID=your-loaded-model-id
openwiki --init

For local gateways such as 9Router, use the OpenAI-compatible endpoint URL, API key, and model ID shown by the gateway:

OPENWIKI_PROVIDER=openai-compatible
OPENAI_COMPATIBLE_API_KEY=your-local-gateway-key
OPENAI_COMPATIBLE_BASE_URL=http://localhost:20128/v1
OPENWIKI_MODEL_ID=your-routed-model-id
openwiki --init

Some local servers ignore the API key value, but OpenWiki still requires OPENAI_COMPATIBLE_API_KEY because the OpenAI-compatible client expects one.

AWS Bedrock

The bedrock provider calls foundation models hosted on AWS Bedrock using IAM credentials rather than a single vendor API key. Existing installations can continue to provide an AWS access key ID, secret access key, and region:

OPENWIKI_PROVIDER=bedrock
BEDROCK_AWS_ACCESS_KEY_ID=your-access-key-id
BEDROCK_AWS_SECRET_ACCESS_KEY=your-secret-access-key
BEDROCK_AWS_REGION=us-east-1
OPENWIKI_MODEL_ID=anthropic.claude-sonnet-5

When the explicit Bedrock credentials are not set, OpenWiki uses the AWS SDK default credential provider chain, including OIDC/web identity, IAM roles, AWS profiles, and ECS/EC2 credentials. The region is resolved from BEDROCK_AWS_REGION, AWS_REGION, or AWS_DEFAULT_REGION.

Which model IDs are available depends on your AWS account and region (which foundation models you've enabled in the Bedrock console), so there is no preset model list — paste the Bedrock model ID directly, as shown above.

Some newer models only accept on-demand invocation through a cross-region inference profile rather than their bare model ID — if you see ValidationException: Invocation of model ID ... with on-demand throughput isn't supported, prefix the model ID with the profile's region code instead, for example us.anthropic.claude-sonnet-5. Your IAM policy also needs to allow bedrock:InvokeModel/InvokeModelWithResponseStream on both the foundation-model and inference-profile resource types in that case.

OpenAI (ChatGPT login)

The openai-chatgpt provider calls OpenAI's Codex backend using your ChatGPT subscription instead of a metered API key. Model usage draws on your ChatGPT Plus/Pro/Team plan's included Codex usage rather than per-token API billing. It serves the same model list as the openai provider.

Instead of pasting an API key, run the setup wizard and complete a browser login:

OPENWIKI_PROVIDER=openai-chatgpt openwiki code --init
# or
OPENWIKI_PROVIDER=openai-chatgpt openwiki personal --init

The wizard opens https://auth.openai.com in your browser (and also prints the URL for headless/SSH use, where you can open it on another machine — or paste the redirect URL back into the terminal to finish without a callback). After you sign in with your ChatGPT account, OpenWiki captures the OAuth callback, shows the signed-in email and plan, and then continues to model and LangSmith selection just like the other providers. It stores the resulting access token, refresh token, expiry, account id, email, and plan in ~/.openwiki/.env (OPENAI_CHATGPT_ACCESS_TOKEN, OPENAI_CHATGPT_REFRESH_TOKEN, OPENAI_CHATGPT_EXPIRES_AT, OPENAI_CHATGPT_ACCOUNT_ID, OPENAI_CHATGPT_EMAIL, OPENAI_CHATGPT_PLAN). These are managed for you — the access token is refreshed automatically when it expires, so you normally never edit them by hand. Treat the refresh token like a password.

Gemini (AI Studio)

The gemini provider runs Google's Gemini models through the AI Studio API with a single API key:

OPENWIKI_PROVIDER=gemini
GEMINI_API_KEY=your-ai-studio-key

Gemini Enterprise (Vertex AI)

The gemini-enterprise provider runs models from the Gemini Enterprise Model Garden (formerly Vertex AI) — Google's own Gemini/Gemma models, Anthropic's Claude, and partner/open-weight models (Llama, Mistral, DeepSeek, Qwen, …). It routes each model ID to the right API surface automatically, so one credential reaches all of them. It uses no API key — authentication happens with Google Application Default Credentials (ADC), so any of the standard mechanisms work:

  • a service account key file via GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json,
  • user credentials from gcloud auth application-default login, or
  • workload identity when running on Google Cloud (GKE, Cloud Run, GCE) or in CI.
OPENWIKI_PROVIDER=gemini-enterprise
GOOGLE_CLOUD_PROJECT=your-gcp-project
GOOGLE_CLOUD_LOCATION=global   # optional, defaults to global

Set OPENWIKI_MODEL_ID to any Model Garden model. Gemini and Claude ship as preset options; partner/open-weight models are reached by pasting their model ID (for example publishers/meta/models/llama-3.3-70b-instruct-maas).

The credentials used need Vertex AI access (roles/aiplatform.user) in the project, and the models you want must be enabled in the Model Garden. The global endpoint serves Gemini and Claude and offers the best availability; regional endpoints (for example europe-west1 or us-east5) can be set via GOOGLE_CLOUD_LOCATION for data-residency requirements. Partner/open-weight (MaaS) models are region-specific, so set GOOGLE_CLOUD_LOCATION explicitly when using them.

Note that GOOGLE_CLOUD_PROJECT (and GOOGLE_APPLICATION_CREDENTIALS, if you choose to store it there) is persisted to ~/.openwiki/.env and loaded into the OpenWiki process environment at startup when not already set — values already present in your shell always win.

For CI, authenticate before the update job runs — for example with google-github-actions/auth (workload identity federation) in GitHub Actions — and set OPENWIKI_PROVIDER=gemini-enterprise and GOOGLE_CLOUD_PROJECT in the job environment.

Base URLs (and all credentials) can be set in your environment or stored in ~/.openwiki/.env.

OpenRouter provider pinning

When OpenRouter serves a model through multiple upstream providers, set OPENWIKI_OPENROUTER_PROVIDER_ONLY to restrict routing to one provider or a comma-separated provider allowlist:

OPENWIKI_PROVIDER=openrouter
OPENROUTER_API_KEY=your-key
OPENWIKI_OPENROUTER_PROVIDER_ONLY=Novita

Provider retry attempts

OpenWiki uses LangChain's built-in retry handling for transient provider errors. To override the number of retries after the first provider request, set OPENWIKI_PROVIDER_RETRY_ATTEMPTS:

OPENWIKI_PROVIDER_RETRY_ATTEMPTS=3

The value must be a positive integer. If the value is unset, OpenWiki defaults to 3 retries.

Diagrams

OpenWiki embeds Mermaid diagrams in the generated wiki wherever they make a concept clearer than prose: sequence diagrams for runtime and request flows, ER diagrams for data models, state diagrams for lifecycles, and flowcharts for control flow. Diagrams are grounded in the inspected source, added where they add signal rather than on every page, and kept in sync on --update runs. This is default behavior; no configuration is required.

Validation and repair. After each run, OpenWiki validates every mermaid fence. A diagram that fails validation is converted in place to a plain text fence, preceded by a short comment explaining why, so it degrades to readable text instead of a broken block. The next --update run finds that comment, repairs the diagram from the recorded error, and restores the mermaid fence, so quality recovers over successive runs.

Validation fidelity is optional. By default OpenWiki runs a lightweight, zero-dependency check that catches the common syntax breakages. It is best-effort: a break it does not recognize can still render as an error on GitHub until a later run catches it. For authoritative validation that matches exactly what GitHub renders, catching every unrenderable diagram, install the Mermaid parser wherever you run OpenWiki (for example, in the scheduled GitHub Actions workflow that regenerates your wiki):

npm install mermaid jsdom

When the parser is present, OpenWiki uses it and no broken diagram ships; when it is absent, it falls back to the best-effort check. Diagram generation and the degrade-and-repair loop work the same either way, so the parser changes only how thoroughly diagrams are checked, never whether they are generated.

If there's an inference provider or model you'd like to see added, please open a PR!

Telemetry

OpenWiki collects anonymous, aggregate usage data so we can understand how the tool is used and improve it. Telemetry is on by default and easy to turn off.

What is collected, on a single openwiki_run event, keyed by a random install ID stored locally in ~/.openwiki/install-id:

  • Every run: the command (init / update) and the outcome (success / failure / no-op), plus a coarse error category on failure (never the error message). Interactive chat, auth, and ingest are not recorded.
  • At setup (on init only): which brain mode (code / personal), the model provider, and which connectors you configured (connector names only, never their contents).

What is never collected: file contents, repository data or names, credentials, prompts, model output, connector payloads, error messages, file paths, URLs, model IDs, run duration, your IP address, or any personal information. Geoip enrichment is disabled and your IP is never stored. Events are grouped by your random install ID so we can measure repeat usage, but that ID contains no personal data.

Scheduled/CI runs are collected as anonymous reliability data (tagged so they can be told apart from human runs), under a shared CI identifier rather than a per-machine install ID, and never counted as distinct installs. To disable in CI, set OPENWIKI_TELEMETRY_DISABLED=1 in your workflow environment.

To see exactly what a run would send, add --telemetry-file=<path> to any run.

Opting out

Set either environment variable:

export OPENWIKI_TELEMETRY_DISABLED=1
# or the cross-tool standard:
export DO_NOT_TRACK=1

To disable permanently, add OPENWIKI_TELEMETRY_DISABLED=1 to ~/.openwiki/.env. In CI, set it in the workflow environment (config files do not persist on ephemeral runners).

Seeing exactly what is sent

Add --telemetry-file=<path> to any run to also write the exact payload to a local JSON file.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md before opening a PR. We intentionally keep PRs tightly scoped to one change each, and PRs that bundle unrelated changes may be closed with a request to split them.

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Releases and announcements

10 total
  1. 0.2.30.2.3Jul 23, 2026

    ## What's Changed * docs: update OpenWiki by @github-actions[bot] in https://github.com/langchain-ai/openwiki/pull/422 * feat: generate mermaid diagrams in the generated wiki by @yogeshchavan2008 in https://github.com/langchain-ai/openwiki/pull/199 * docs: update OpenWiki by @github-actions[bot] in https://github.com/langchain-ai/openwiki/pull/434 * fix: reject ".." traversal in docs-only write guard by @thejesh23 in https://github.com/langchain-ai/openwiki/pull/406 * fix: document scheduled ingest flag by @HwangJohn in https://github.com/langchain-ai/openwiki/pull/403 * fix: honor provider base url env overrides by @colifran in https://github.com/langchain-ai/openwiki/pull/430 * fix: write ~/.openwiki/.env atomically so a failed write keeps existing tokens by @thejesh23 in https://github.com/langchain-ai/openwiki/pull/408 * fix: harden oauth discovery endpoints by @jkennedyvz in https://github.com/langchain-ai/openwiki/pull/398 * fix: reject cron day+weekday combinations launchd cannot represent by @bikeusaland in https://github.com/langchain-ai/openwiki/pull/415 * fix: restore scheduled OpenWiki Update fork guard and protect it from regeneration by @jyje in https://gith

  2. 0.2.20.2.2Jul 21, 2026

    ## What's Changed * feat: Add gemini 3.6 flash and 3.5 flash lite by @bracesproul in https://github.com/langchain-ai/openwiki/pull/428 * release: 0.2.2 by @bracesproul in https://github.com/langchain-ai/openwiki/pull/429 **Full Changelog**: https://github.com/langchain-ai/openwiki/compare/0.2.1...0.2.2

  3. 0.2.10.2.1Jul 20, 2026

    ## What's Changed * fix: add Gemini API key to credential redaction and add missing unicode regex flags by @fix2015 in https://github.com/langchain-ai/openwiki/pull/378 * docs: update OpenWiki by @github-actions[bot] in https://github.com/langchain-ai/openwiki/pull/377 * fix: tolerate optional OKF index metadata by @Eijnewgnaw in https://github.com/langchain-ai/openwiki/pull/376 * fix: align okf output with google v0.1 by @ruanbarroso in https://github.com/langchain-ai/openwiki/pull/373 * fix: stop code-mode runs from targeting ~/.openwiki/wiki and bump deepagents to prevent crashes by @colifran in https://github.com/langchain-ai/openwiki/pull/383 * feat: overhaul the `openwiki --init` setup wizard by @colifran in https://github.com/langchain-ai/openwiki/pull/374 * fix: Always propose default wiki brief when running new repos by @bracesproul in https://github.com/langchain-ai/openwiki/pull/391 * docs: update OpenWiki by @github-actions[bot] in https://github.com/langchain-ai/openwiki/pull/387 * docs: document local openai-compatible llms by @HwangJohn in https://github.com/langchain-ai/openwiki/pull/395 * fix: clean up temporary openwiki plan files by @HwangJohn in https:

  4. 0.2.00.2.0Jul 16, 2026

    ## What's Changed * chore: unify secret-redaction key matching in one shared helper by @bikeusaland in https://github.com/langchain-ai/openwiki/pull/290 * chore: update chatgpt login model wording by @HwangJohn in https://github.com/langchain-ai/openwiki/pull/305 * fix: preserve `OPENAI_BASE_URL` when loading and saving environment by @arpitparulkar in https://github.com/langchain-ai/openwiki/pull/90 * fix: honor per-instance connectorConfig in gmail, slack, x connectors by @bikeusaland in https://github.com/langchain-ai/openwiki/pull/288 * fix: stop env-behavior tests from overwriting the real ~/.openwiki/.env by @omkamal in https://github.com/langchain-ai/openwiki/pull/334 * chore: document repository instructions brief by @HwangJohn in https://github.com/langchain-ai/openwiki/pull/333 * feat: add nebius token factory provider support by @amrrs in https://github.com/langchain-ai/openwiki/pull/147 * fix: recognize positional mode after flags instead of treating it as the message by @Rahul-Ganesan in https://github.com/langchain-ai/openwiki/pull/279 * chore: replace retired pnpm audit endpoint with Trivy lockfile scan in ci by @colifran in https://github.com/langchain-ai/o

  5. 0.1.20.1.2Jul 13, 2026

    ## What's Changed * docs: update OpenWiki by @github-actions[bot] in https://github.com/langchain-ai/openwiki/pull/272 * chore: verify node.js 24 compatibility in ci by @godlovesmei in https://github.com/langchain-ai/openwiki/pull/184 * feat: add nvidia nim as a model provider for inference by @jyje in https://github.com/langchain-ai/openwiki/pull/42 * test: add coverage for src/env.ts runtime behavior by @varaprasadreddy9676 in https://github.com/langchain-ai/openwiki/pull/173 * chore: add bitbucket pipelines example for `openwiki --update` by @victor-mico in https://github.com/langchain-ai/openwiki/pull/261 * docs: pin openrouter provider in ci examples by @CooperSheroy in https://github.com/langchain-ai/openwiki/pull/253 * fix: escape carriage returns in env value formatting/parsing by @himanshu231204 in https://github.com/langchain-ai/openwiki/pull/248 * docs: update OpenWiki by @github-actions[bot] in https://github.com/langchain-ai/openwiki/pull/283 * feat: track deferred documentation areas by @varaprasadreddy9676 in https://github.com/langchain-ai/openwiki/pull/286 * docs: update OpenWiki by @github-actions[bot] in https://github.com/langchain-ai/openwiki/pull/304

Code frequency

additions and deletions
+19.6K-19.6KWeek of 2026-06-21: +10,241 linesWeek of 2026-06-21: -1,556 linesWeek of 2026-06-28: +1,607 linesWeek of 2026-06-28: -536 linesWeek of 2026-07-05: +19,600 linesWeek of 2026-07-05: -1,555 linesWeek of 2026-07-12: +8,583 linesWeek of 2026-07-12: -1,155 linesWeek of 2026-07-19: +10,983 linesWeek of 2026-07-19: -1,139 linesWeek of 2026-07-26: +4,264 linesWeek of 2026-07-26: -293 linesJun 21, 2026Jul 26, 2026
+55.3K lines added, -6.2K removed over the last year.

Commits per week

last 52 weeks
450Week 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: 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: 16 commitsWeek of 2026-06-28: 22 commitsWeek of 2026-07-05: 44 commitsWeek of 2026-07-12: 41 commitsWeek of 2026-07-19: 45 commitsWeek of 2026-07-26: 17 commitsAug 3, 2025Jul 26, 2026
185 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 1 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 3 commitsSun 11:00 — 2 commitsSun 12:00 — 0 commitsSun 13:00 — 0 commitsSun 14:00 — 0 commitsSun 15:00 — 1 commitsSun 16:00 — 1 commitsSun 17:00 — 1 commitsSun 18:00 — 0 commitsSun 19:00 — 0 commitsSun 20:00 — 0 commitsSun 21:00 — 0 commitsSun 22:00 — 0 commitsSun 23:00 — 2 commitsMon 0:00 — 2 commitsMon 1:00 — 1 commitsMon 2:00 — 2 commitsMon 3:00 — 0 commitsMon 4:00 — 2 commitsMon 5:00 — 0 commitsMon 6:00 — 1 commitsMon 7:00 — 2 commitsMon 8:00 — 2 commitsMon 9:00 — 5 commitsMon 10:00 — 4 commitsMon 11:00 — 3 commitsMon 12:00 — 0 commitsMon 13:00 — 5 commitsMon 14:00 — 3 commitsMon 15:00 — 6 commitsMon 16:00 — 7 commitsMon 17:00 — 2 commitsMon 18:00 — 1 commitsMon 19:00 — 0 commitsMon 20:00 — 1 commitsMon 21:00 — 4 commitsMon 22:00 — 0 commitsMon 23:00 — 0 commitsTue 0:00 — 2 commitsTue 1:00 — 4 commitsTue 2:00 — 3 commitsTue 3:00 — 1 commitsTue 4:00 — 1 commitsTue 5:00 — 0 commitsTue 6:00 — 1 commitsTue 7:00 — 0 commitsTue 8:00 — 1 commitsTue 9:00 — 3 commitsTue 10:00 — 1 commitsTue 11:00 — 1 commitsTue 12:00 — 1 commitsTue 13:00 — 1 commitsTue 14:00 — 4 commitsTue 15:00 — 3 commitsTue 16:00 — 2 commitsTue 17:00 — 1 commitsTue 18:00 — 3 commitsTue 19:00 — 1 commitsTue 20:00 — 0 commitsTue 21:00 — 2 commitsTue 22:00 — 3 commitsTue 23:00 — 2 commitsWed 0:00 — 0 commitsWed 1:00 — 2 commitsWed 2:00 — 1 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 0 commitsWed 9:00 — 0 commitsWed 10:00 — 6 commitsWed 11:00 — 1 commitsWed 12:00 — 4 commitsWed 13:00 — 1 commitsWed 14:00 — 3 commitsWed 15:00 — 0 commitsWed 16:00 — 2 commitsWed 17:00 — 2 commitsWed 18:00 — 0 commitsWed 19:00 — 0 commitsWed 20:00 — 1 commitsWed 21:00 — 0 commitsWed 22:00 — 3 commitsWed 23:00 — 2 commitsThu 0:00 — 0 commitsThu 1:00 — 0 commitsThu 2:00 — 2 commitsThu 3:00 — 1 commitsThu 4:00 — 1 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 1 commitsThu 8:00 — 2 commitsThu 9:00 — 1 commitsThu 10:00 — 4 commitsThu 11:00 — 1 commitsThu 12:00 — 1 commitsThu 13:00 — 0 commitsThu 14:00 — 2 commitsThu 15:00 — 1 commitsThu 16:00 — 0 commitsThu 17:00 — 0 commitsThu 18:00 — 1 commitsThu 19:00 — 0 commitsThu 20:00 — 0 commitsThu 21:00 — 1 commitsThu 22:00 — 0 commitsThu 23:00 — 0 commitsFri 0:00 — 1 commitsFri 1:00 — 1 commitsFri 2:00 — 1 commitsFri 3:00 — 0 commitsFri 4:00 — 1 commitsFri 5:00 — 0 commitsFri 6:00 — 1 commitsFri 7:00 — 1 commitsFri 8:00 — 1 commitsFri 9:00 — 1 commitsFri 10:00 — 3 commitsFri 11:00 — 0 commitsFri 12:00 — 1 commitsFri 13:00 — 1 commitsFri 14:00 — 3 commitsFri 15:00 — 1 commitsFri 16:00 — 1 commitsFri 17:00 — 4 commitsFri 18:00 — 0 commitsFri 19:00 — 1 commitsFri 20:00 — 0 commitsFri 21:00 — 0 commitsFri 22:00 — 1 commitsFri 23:00 — 1 commitsSat 0:00 — 1 commitsSat 1:00 — 0 commitsSat 2:00 — 1 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 2 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 0 commitsSat 10:00 — 0 commitsSat 11:00 — 0 commitsSat 12:00 — 0 commitsSat 13:00 — 0 commitsSat 14:00 — 0 commitsSat 15:00 — 1 commitsSat 16:00 — 0 commitsSat 17:00 — 1 commitsSat 18:00 — 0 commitsSat 19:00 — 1 commitsSat 20:00 — 0 commitsSat 21:00 — 0 commitsSat 22:00 — 1 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jul 17, 2026daily#24+4
Jul 11, 2026daily#11+3
Jul 10, 2026daily#14+3
Jul 7, 2026daily#5+11
Jul 6, 2026daily#4+10
Jul 5, 2026daily#1+60
Jul 4, 2026daily#2+39
Jul 2, 2026daily#9+31
  • 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