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.
npm install -g openwikiInitialize OpenWiki, configure your model and API key, then generate documentation
# Personal brain mode
openwiki personal --init
# Code brain mode
openwiki code --initOpenWiki has two modes:
- Personal mode builds a local personal brain wiki in
~/.openwiki/wikifrom 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.
Choose openwiki personal --init for a local personal brain wiki or
openwiki code --init for repository documentation.
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:
- GitHub Actions: copy openwiki-update.yml into
.github/workflows/openwiki-update.yml. - GitLab CI: copy openwiki-update.gitlab-ci.yml into
.gitlab-ci.ymlor include it from your existing GitLab pipeline.
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.
Start the interactive CLI:
openwikiStart OpenWiki with an initial request:
openwiki "Please generate documentation for this repository"Run a single command and exit:
openwiki -p "Summarize what you can do"Initialize OpenWiki:
openwiki personal --initInitialize repository code documentation:
openwiki code --initUpdate existing documentation:
openwiki --updateUpdate repository code documentation:
openwiki code --updateRun an update that can ingest configured local connectors first:
openwiki --update "Refresh the wiki from configured connectors"Show help:
openwiki --helpIn 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 notionStart an ngrok tunnel for Slack OAuth:
openwiki ngrok startThis 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.
openwiki creates initial repository documentation in openwiki/ when no wiki exists. Source ingestion runs and scheduled connector updates maintain 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.
Use openwiki personal --init for the local personal brain wiki or openwiki code --init for repository documentation. Bare openwiki --init is no longer supported because init needs an explicit mode. openwiki --update defaults to personal mode unless you pass code, personal, or --mode.
openwiki will automatically append prompting to your AGENTS.md and/or CLAUDE.md files to instruct your coding agent to reference it when searching for context. If the file does not already exist in your repository, OpenWiki will create it for you.
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.
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-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 users should authenticate through Notion OAuth instead of pasting a Notion token into OpenWiki.googleuses the Gmail API directly with OAuth user credentials to fetch recent mail, with room to add Drive, Calendar, and other Google providers later.web-searchuses Tavily through LangChain and requiresTAVILY_API_KEY.hackernewsuses 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.
OpenWiki supports OpenAI, OpenRouter, Fireworks, Baseten, an OpenAI-compatible provider, and Anthropic out of the box. The onboarding default is OpenAI with gpt-5.5, and each inference provider also includes pre-defined model options plus support for custom model IDs.
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/anthropicThe 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-nameBase URLs (and all credentials) can be set in your environment or stored in ~/.openwiki/.env.
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=3The value must be a positive integer. If the value is unset, OpenWiki defaults to 3 retries.
If there's an inference provider or model you'd like to see added, please open a PR!
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.
