@LangChain: OpenWiki's code init prompt just got a major upgrade! It now generates higher quality wikis that cover more of your cod…
Summary
OpenWiki, a CLI that generates and maintains self-updating wikis for codebases, just received a major upgrade to its code init prompt, producing higher-quality wikis with better codebase coverage and improved eval scores. The tool supports multiple model providers, connectors, and an interactive visualizer.
View Cached Full Text
Cached at: 08/04/26, 10:16 PM
OpenWiki’s code init prompt just got a major upgrade! It now generates higher quality wikis that cover more of your codebase, leading to better eval scores and more efficient runs. Try it out locally today: https://github.com/langchain-ai/openwiki…
langchain-ai/openwiki
Source: https://github.com/langchain-ai/openwiki
OpenWiki is a CLI that writes and maintains a wiki for your codebase or your personal knowledge. An agent reads your sources, synthesizes a linked Markdown wiki you own, and keeps it current on every change. It is built for agents to read as memory, and it ships an interactive visualizer for humans to explore.
OpenWiki gives you:
- Agent-written docs that stay accurate, generated by a Deep Agents documentation agent.
- Two modes: a
codewiki for a repository, or apersonalwiki for your own knowledge. - Twelve model providers out of the box, from OpenAI and Anthropic to Bedrock, Gemini, and any OpenAI-compatible gateway.
- Built-in connectors for Notion, Slack, Gmail, X, Web Search, Hacker News, and local git repositories.
- An interactive visualizer that turns any wiki into a live, explorable node graph.
- Self-updating through GitHub Actions, GitLab CI, or Bitbucket Pipelines.
- Open Knowledge Format (OKF v0.1) output with validated Mermaid diagrams.
🎉 What’s new
- Interactive visualizer: turn any wiki into a live, explorable node graph with a side-by-side Markdown reader.
.openwikiignore: keep generated, private, or irrelevant paths out of doc runs with familiar gitignore-style rules.- Multilingual wikis: generate docs in another language with
--language <locale>, while code and identifiers stay canonical. - LangSmith connector: pull recent LangSmith traces (tool calls, outcomes, latency) into a code wiki.
- GitHub Copilot provider: reuse an existing Copilot subscription for inference, no separate API key required.
Quick start
Install the CLI:
npm install -g openwiki
Generate a wiki for the current repository. The first run walks you through picking a provider, key, and model, then writes docs to openwiki/:
openwiki --init
Keep it current automatically by adding a scheduled CI job that opens a docs PR on every change:
- GitHub Actions: copy
openwiki-update.ymlinto.github/workflows/openwiki-update.yml. - GitLab CI: copy
openwiki-update.gitlab-ci.ymlinto.gitlab-ci.ymlor include it from your pipeline. - Bitbucket Pipelines: copy
openwiki-update.bitbucket-pipelines.ymlintobitbucket-pipelines.yml, then schedule theopenwiki-updatepipeline.
On Windows, install with a Node.js package manager (
npm install -g openwikiorpnpm add -g openwiki). Installing withbuncan fall back to compiling thebetter-sqlite3native dependency, which needs Visual Studio Build Tools with the Desktop development with C++ workload.
Two modes
OpenWiki runs in one of two modes. Bare openwiki, openwiki --init, and openwiki --update default to code mode; add the personal positional (or --mode personal) for the personal brain.
| Mode | Documents | Writes to | Get started |
|---|---|---|---|
| Code (default) | The current repository | openwiki/ in the repo | openwiki --init |
| Personal | Your connected sources | ~/.openwiki/wiki | openwiki personal --init |
By default the CLI stays open after a run so you can send follow-up messages. Add -p / --print for a one-shot, non-interactive run that prints the final output and exits. --init and --update auto-exit on success in an interactive terminal, so the same command works one-shot or interactively.
Explore your wiki
Turn any wiki into an interactive node graph with a live, side-by-side Markdown reader:
openwiki visualize
This serves ./openwiki on a local loopback address (127.0.0.1, never exposed on the network) and opens your browser to the graph. Edits to the wiki files are picked up automatically while the server runs. Pass a path to visualize a different directory, --port <port> to choose the port (it increments on conflict; default 4321), and --no-open to leave the browser alone:
openwiki visualize openwiki --port 4400 --no-open
The page loads its graph, Markdown, and diagram libraries from a public CDN, so an internet connection is required even though the server itself is local. Press Ctrl-C to stop it.
Connect your sources
In personal mode, OpenWiki ingests knowledge from the tools you already use, synthesizing them into your local wiki. First-run onboarding offers 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 wiki under ~/.openwiki/wiki/. You can configure the same connector more than once (for example one Web Search source for AI research and another for NBA news); OpenWiki stores them as separate instances like web-search-1 and web-search-2.
openwiki auth notion # run a local browser OAuth flow for a provider
openwiki ingest all # run every configured source
openwiki ingest web-search # run one connector's sources
Connector details and OAuth
git-reporeads configured local repository paths and writes compact manifests.xuses the X API directly with OAuth user-context credentials for home timeline, user posts, mentions, bookmarks, and list posts.notiontargets the hosted Notion MCP server, so authenticate through Notion OAuth rather than pasting a token.googleuses the Gmail API directly with OAuth user credentials to fetch recent mail.web-searchuses Tavily through LangChain and requiresTAVILY_API_KEY.hackernewsuses the public Hacker News feed and search APIs, with no credentials required.
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. openwiki auth configure <provider> and openwiki auth tools <provider> are advanced retry commands.
Connector secrets are referenced by env var name and stored in ~/.openwiki/.env; connector config files never contain raw secret values.
Slack OAuth tunnel. openwiki ngrok start starts an ngrok tunnel with a random HTTPS forwarding URL, reads ngrok’s local inspection API, appends /callback, and saves OPENWIKI_HTTPS_OAUTH_REDIRECT_URI automatically. Register the printed callback URL in Slack. With a fixed domain, run openwiki ngrok start https://<your-ngrok-domain>.
LangSmith connector (code mode)
The connectors above feed a personal wiki. The LangSmith connector instead enriches a code wiki: it pulls recent LangSmith traces (tool calls, outcomes, and latency) for the projects you choose through the official LangSmith SDK, so a repository’s docs reflect how its code actually behaves at runtime, not just what the source says.
Configure it during openwiki --init in code mode. From the source menu, add LangSmith, pick your workspace region (US or EU), and list the projects to document. OpenWiki writes a committed openwiki/.langsmith.json that names the workspaces and projects (never the key itself), so every teammate and CI run documents the same set. The API key is read from the environment:
OPENWIKI_LANGSMITH_API_KEY="<your-langsmith-key>"
Locally the setup wizard saves this to ~/.openwiki/.env. In CI, set it as a repository secret and export it for the run.
A LangSmith key is workspace- and region-bound. To document projects across more than one workspace, add an entry per workspace, each with its own key named
OPENWIKI_LANGSMITH_API_KEY_2,OPENWIKI_LANGSMITH_API_KEY_3, and so on. The connector only talks to the official US (api.smith.langchain.com) and EU (eu.api.smith.langchain.com) hosts.
How it stays yours
Everything OpenWiki writes is plain Markdown you own and version alongside your code.
- Agents read it as memory. On each
coderun, OpenWiki maintains anAGENTS.mdandCLAUDE.mdat the repo root that point your coding agent at the wiki. It only rewrites its own<!-- OPENWIKI:START -->…<!-- OPENWIKI:END -->block and leaves the rest of each file untouched. - You set the brief. Repository-specific instructions live in
openwiki/INSTRUCTIONS.md, a user-authored file OpenWiki reads for scope and priorities but never rewrites during normal runs. - No-op runs are free. After a run, OpenWiki snapshots the
openwiki/directory and only records new metadata when something actually changed, so scheduled workflows never churn. - Local, private config. Provider choice, keys, and optional LangSmith tracing are saved to
~/.openwiki/.envon your machine.
Open Knowledge Format
OpenWiki emits Google Open Knowledge Format (OKF) v0.1 bundles in both modes, so your wiki is portable to any OKF-aware tool.
- Every concept document carries YAML front matter with a non-empty
type; all other standard fields are optional. - Standard Markdown links between concept documents express their relationships.
index.mdandlog.mdare reserved documents rather than concepts. The root index declaresokf_version: "0.1".- Valid
timestampvalues and producer-defined extension fields are preserved across updates and migrations.
Diagrams
OpenWiki embeds Mermaid diagrams wherever they make a concept clearer than prose: sequence diagrams for runtime 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, and kept in sync on --update. No configuration is required.
After each run, OpenWiki validates every mermaid fence. A diagram that fails validation is converted in place to a plain text fence with a short comment explaining why, so it degrades to readable text instead of a broken block. The next --update finds that comment and repairs the diagram, so quality recovers over successive runs.
By default OpenWiki runs a lightweight, zero-dependency check that catches common breakages. For authoritative validation that matches exactly what GitHub renders, install the Mermaid parser wherever you run OpenWiki (for example in your scheduled workflow), and no broken diagram will ship:
npm install mermaid jsdom
Model providers
The onboarding default is OpenAI with gpt-5.6-terra. Every provider includes preset model options plus support for custom model IDs, and stores its credentials in ~/.openwiki/.env.
| Provider | Credential |
|---|---|
| OpenAI (default) | OPENAI_API_KEY |
| OpenAI (ChatGPT login) | Browser sign-in, uses your ChatGPT plan |
| Anthropic | ANTHROPIC_API_KEY |
| Gemini (AI Studio) | GEMINI_API_KEY |
| Gemini Enterprise (Vertex AI) | Google ADC, keyless |
| AWS Bedrock | IAM credentials |
| GitHub Copilot | GitHub CLI session |
| OpenRouter | OPENROUTER_API_KEY |
| Nebius / Fireworks / Baseten / NVIDIA NIM | Provider API key |
| OpenAI-compatible (LiteLLM, Ollama, LM Studio, gateways) | Base URL + key |
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 key.
- Select
GitHub Copilotduringopenwiki --init. If you have an active GitHub CLI session, OpenWiki detects it and offers to reuse it. Otherwise, press Tab at the credential prompt to rungh auth loginand sign in. - Choose a model (for example
gpt-5.5).
OpenWiki leaves the token in the GitHub CLI’s own credential store. For CI or another headless environment, set COPILOT_API_KEY to a GitHub OAuth token. Personal Access Tokens are rejected by the Copilot API for third-party integrations. The local config can stay token-free:
OPENWIKI_PROVIDER="copilot"
OPENWIKI_MODEL_ID="gpt-5.5"
In CI, set the COPILOT_API_KEY repository secret and export OPENWIKI_PROVIDER=copilot.
AWS Bedrock
The bedrock provider calls foundation models on AWS Bedrock using IAM credentials rather than a single vendor key:
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 explicit Bedrock credentials are not set, OpenWiki uses the AWS SDK default credential provider chain (OIDC/web identity, IAM roles, AWS profiles, ECS/EC2). The region resolves from BEDROCK_AWS_REGION, AWS_REGION, or AWS_DEFAULT_REGION. Available model IDs depend on which foundation models you have enabled in your account and region, so there is no preset list; paste the Bedrock model ID directly.
Some newer models only accept on-demand invocation through a cross-region inference profile. 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, for example us.anthropic.claude-sonnet-5. Your IAM policy then also needs bedrock:InvokeModel / InvokeModelWithResponseStream on both the foundation-model and inference-profile resource types.
Gemini (AI Studio) and Gemini Enterprise (Vertex AI)
Gemini (AI Studio) runs Google’s Gemini models with a single API key:
OPENWIKI_PROVIDER=gemini
GEMINI_API_KEY=your-ai-studio-key
Gemini Enterprise runs models from the Gemini Enterprise Model Garden (formerly Vertex AI): Google’s Gemini/Gemma, Anthropic’s Claude, and partner/open-weight models (Llama, Mistral, DeepSeek, Qwen). It routes each model ID to the right API surface automatically and uses no API key. Authentication happens with Google Application Default Credentials (ADC):
- 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 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 presets; partner models are reached by pasting their ID (for example publishers/meta/models/llama-3.3-70b-instruct-maas). The credentials need Vertex AI access (roles/aiplatform.user), and the models must be enabled in the Model Garden. The global endpoint serves Gemini and Claude with the best availability; set GOOGLE_CLOUD_LOCATION to a regional endpoint for data residency, and always set it explicitly for region-specific partner (MaaS) models.
For CI, authenticate before the update job runs (for example with google-github-actions/auth) and set OPENWIKI_PROVIDER=gemini-enterprise and GOOGLE_CLOUD_PROJECT in the job environment.
OpenAI (ChatGPT login)
The openai-chatgpt provider calls OpenAI’s Codex backend using your ChatGPT subscription instead of a metered API key, drawing on your Plus/Pro/Team plan’s included Codex usage. It serves the same model list as the openai provider.
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 prints the URL for headless/SSH use). After you sign in, OpenWiki captures the OAuth callback, shows the signed-in email and plan, and continues to model selection. It stores the access token, refresh token, expiry, account id, email, and plan in ~/.openwiki/.env. These are managed for you and the access token is refreshed automatically, so you normally never edit them by hand. Treat the refresh token like a password.
OpenAI-compatible endpoints (LiteLLM, Ollama, LM Studio, gateways)
The openai-compatible provider targets any OpenAI-compatible chat-completions endpoint via a required base URL. Set the model ID to whatever the endpoint exposes.
# Hosted gateway (for example Requesty, which fronts many upstream providers)
OPENWIKI_PROVIDER=openai-compatible
OPENAI_COMPATIBLE_API_KEY=your-gateway-key
OPENAI_COMPATIBLE_BASE_URL=https://router.requesty.ai/v1
OPENWIKI_MODEL_ID=openai/gpt-5.5
# 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
# 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
Some local servers ignore the API key value, but OpenWiki still requires OPENAI_COMPATIBLE_API_KEY because the client expects one.
Alternative base URLs, OpenRouter pinning, and retries
Alternative base URLs. Route a provider at a self-hosted or proxied gateway by setting its base URL alongside its key: ANTHROPIC_BASE_URL, OPENAI_BASE_URL, BASETEN_BASE_URL, FIREWORKS_BASE_URL, NVIDIA_BASE_URL, or COPILOT_BASE_URL. The openai provider routes tool calls through the Responses API (/v1/responses), which is useful for gateways that expose it.
OPENWIKI_PROVIDER=anthropic
ANTHROPIC_API_KEY=your-key
ANTHROPIC_BASE_URL=https://your-gateway.example.com/anthropic
OpenRouter provider pinning. When OpenRouter serves a model through multiple upstreams, restrict routing with a provider or comma-separated allowlist:
OPENWIKI_PROVIDER=openrouter
OPENROUTER_API_KEY=your-key
OPENWIKI_OPENROUTER_PROVIDER_ONLY=Novita
Retry attempts. OpenWiki uses LangChain’s retry handling for transient provider errors. Override the retry count (default 3) with OPENWIKI_PROVIDER_RETRY_ATTEMPTS=3 (a positive integer).
If there is an inference provider or model you would like to see added, please open a PR.
Ignoring paths
Create a .openwikiignore file in the repository root to keep generated docs from reading or describing private, generated, or irrelevant paths. The syntax supports comments, blank lines, * and ** globs, directory rules, and ! negation:
secrets/
*.log
!logs/keep.log
When .openwikiignore has active rules, OpenWiki filters filesystem discovery and restricts shell execute so ignored paths stay out of the run. This is a read boundary: ignored paths are never read, scanned, or reproduced in the docs. It does not guarantee a topic is never mentioned, since the agent may still infer an ignored area from other allowed evidence such as tests, the README, or commit messages.
Command reference
openwiki # interactive chat, code mode, current repo
openwiki personal # interactive chat, personal brain
openwiki "generate docs" # start with an initial request
openwiki -p "what can you do?" # one-shot, print, and exit
openwiki --init # initialize code docs (personal: openwiki personal --init)
openwiki --update # update code docs (personal: openwiki personal --update)
openwiki visualize # interactive graph + live reader
openwiki auth <provider> # authenticate a connector (slack, gmail, x, notion)
openwiki ingest <source> # run connector ingestion (all, or a connector/instance)
openwiki --help # full help
In chat, /api-key updates the current provider key and /langsmith-key updates or clears LangSmith tracing credentials, both with masked prompts.
Telemetry
OpenWiki collects anonymous, aggregate usage data to understand how the tool is used and improve it. Telemetry is on by default and easy to turn off.
Collected on a single openwiki_run event, keyed by a random install ID in ~/.openwiki/install-id: the command (init / update), the outcome (success / failure / no-op) with a coarse error category on failure (never the message), and at setup only, the brain mode, model provider, and configured connector names.
Never collected: file contents, repository data or names, credentials, prompts, model output, connector payloads, error messages, file paths, URLs, model IDs, run duration, or your IP address. Interactive chat, auth, and ingest are not recorded. Scheduled/CI runs are tagged as anonymous reliability data under a shared CI identifier and never counted as installs.
Opt out with either environment variable, or add the first line to ~/.openwiki/.env to disable permanently:
export OPENWIKI_TELEMETRY_DISABLED=1
export DO_NOT_TRACK=1 # cross-tool standard
To see exactly what a run would send, add --telemetry-file=<path> to any run.
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.
License
Brace (@BraceSproul): I just rewrote OpenWiki’s entire prompt in v0.3 to generate more detailed & accurate wikis. Eval results:
- 📈 28.57% success increase (35% to 45% @ n=2)
- 🪙 14% fewer tokens
- 🧰 26% fewer tool calls per successful task
And as you can clearly see from the graphs, the wikis
Similar Articles
@LangChain: OpenWiki supports all the most common LLM providers. Try it out today with one of the many we support: https://github.c…
OpenWiki is a CLI tool from LangChain that writes and maintains agent wikis for codebases or personal knowledge, supporting all common LLM providers.
@yibie: LangChain open-sourced OpenWiki—a CLI built for agents that automatically writes and maintains docs for your codebase. Not for you to write docs by hand, but for agents to write, maintain, and reference. OpenWiki: LangChain open…
LangChain has open-sourced OpenWiki, a CLI tool designed for AI agents that automatically generates and continuously maintains documentation for codebases, supporting multiple models and continuous integration.
OpenWiki: CLI that writes and maintains agent documentation for your codebase
OpenWiki is a CLI tool from LangChain that automatically generates and maintains documentation for your codebase, designed for AI agents. It supports multiple inference providers and can be integrated with GitHub Actions for daily updates.
OpenWiki Brains: Proactive Memory for AI Agents (7 minute read)
LangChain launches OpenWiki Brains, a framework for proactive memory for AI agents that automatically builds and updates wikis from connected sources like Gmail, Notion, and git repos.
@BraceSproul: https://x.com/BraceSproul/status/2072375136368660515
OpenWiki is an open source agent and CLI that automatically generates and maintains documentation for codebases, helping coding agents understand repo structure and logic.