Gollum is a Git-powered wiki replacing SaaS tools like Slab with local plain text files, version control, and multi-format markup support.
Gollum is a lightweight Git-powered wiki engine that reads and writes markup files directly from repository history. Originally designed for GitHub's wiki system, the application requires no external database and treats directory trees of text as pages. Teams can edit documents via a local browser interface or push commits from standard desktop editors.
Slab operates as a managed cloud knowledge base with real-time collaboration, unified search, and zero server maintenance. That convenience introduces typical SaaS trade-offs: document custody lives on third-party infrastructure, export depends on proprietary APIs, and access requires recurring subscription fees. Gollum takes the opposite operational approach by embedding documentation inside a Git repository. Running as a lightweight Ruby Rack process or Java servlet, Gollum eliminates database servers, cache clusters, and background workers. The repository filesystem acts as both document store and audit trail.
This architecture reduces disaster recovery and high availability to routine git push commands or filesystem snapshots, bypassing database migration risks during upgrades. When connectivity drops, developers continue reading and editing docs locally through terminal or offline editors. However, this minimalist model lacks Slab's live co-authoring and automatic conflict handling. Concurrent browser edits can create Git merge conflicts that require manual intervention, and multi-user access control requires an external reverse proxy or CAS authentication rather than an admin dashboard.
Gollum vs Slab — which should our team choose? Choose Slab for managed cloud hosting, live co-authoring, and workspace search across integrations; choose Gollum for an on-premises, Git-backed technical wiki with zero seat fees and offline editing.
Is Gollum free for commercial use? Yes. Gollum is free open-source software under an MIT license, allowing commercial deployment and internal hosting without licensing fees.
Can Gollum run in an air-gapped environment? Yes. Gollum runs from an official container image or standalone Java WAR file inside isolated networks without external internet access.
Gollum is an effective documentation solution for engineering teams that treat documentation as code and prioritize Git-native audit trails over real-time collaborative canvases. With active maintenance extending through late 2025 releases and a permissive MIT license that carries no user seat fees, it provides a dependable self-hosted wiki for organizations prepared to manage authentication at the proxy layer.
We started this exact setup from scratch in a clean Linux machine on Nov 1, 2026 and checked it through Gollum's own API: every check passed. Recipes are re-checked regularly and removed if they stop working.
mkdir -p gollum && cd gollum
curl -fsSL https://open-source.store/tools/gollum/compose.yml -o compose.ymlcat > .env <<EOF
GOLLUM_AUTHOR_USERNAME=Gollum Admin
[email protected]
EOFGOLLUM_AUTHOR_USERNAME — Git commit author name for wiki edits.GOLLUM_AUTHOR_EMAIL — Git commit author email for wiki edits.docker compose up -dservices:
gollum:
image: gollumwiki/gollum:6.1.0
restart: always
user: root
ports:
- "127.0.0.1:4567:4567"
environment:
GOLLUM_AUTHOR_USERNAME: ${GOLLUM_AUTHOR_USERNAME}
GOLLUM_AUTHOR_EMAIL: ${GOLLUM_AUTHOR_EMAIL}
volumes:
- gollum-data:/wiki
healthcheck:
test: ["CMD-SHELL", "wget -q -O /dev/null http://127.0.0.1:4567/ || exit 1"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
volumes:
gollum-data:
Go, gRPC and Protobuf done right, LLM agents in production, and the hard parts of shipping a first product.
Show that Gollum is listed as an open-source alternative. Paste into your README:
Ubuntu 24.04 · Apple container, Docker 29.1.3, Compose 2.40.3+ds1-0ubuntu1~24.04.1. Images pulled in 43 s: gollumwiki/gollum:6.1.0.
Based on the upstream setup. Official Docker compose wiki. Image pinned to 6.1.0; git author moved to .env; healthcheck added; user set to root so gollum can initialize and write to the data volume; port bound to 127.0.0.1 because Gollum has no native authentication.
gollum-1 | 2026-11-01T00:43:09.888406511Z The /wiki directory exists and is writable. gollum-1 | 2026-11-01T00:43:09.890327052Z hint: Using 'master' as the name for the initial branch. This default branch name gollum-1 | 2026-11-01T00:43:09.890342261Z hint: is subject to change. To configure the initial branch name to use in all gollum-1 | 2026-11-01T00:43:09.890352927Z hint: of your new repositories, which will suppress this warning, call: gollum-1 | 2026-11-01T00:43:09.890373219Z hint: gollum-1 | 2026-11-01T00:43:09.890384677Z hint: git config --global init.defaultBranch <name> gollum-1 | 2026-11-01T00:43:09.890391844Z hint: gollum-1 | 2026-11-01T00:43:09.890406094Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and gollum-1 | 2026-11-01T00:43:09.890420886Z hint: 'development'. The just-created branch can be renamed via this command: gollum-1 | 2026-11-01T00:43:09.890437177Z hint: gollum-1 | 2026-11-01T00:43:09.890465761Z hint: git branch -m <name> gollum-1 | 2026-11-01T00:43:09.890766844Z Initialized empty Git repository in /wiki/.git/ gollum-1 | 2026-11-01T00:43:10.379275761Z [2026-11-01 00:43:10] INFO WEBrick 1.9.1 gollum-1 | 2026-11-01T00:43:10.379290636Z [2026-11-01 00:43:10] INFO ruby 3.3.6 (2024-11-05) [aarch64-linux-musl] gollum-1 | 2026-11-01T00:43:10.379468261Z == Sinatra (v4.1.1) has taken the stage on 4567 for production with backup from WEBrick gollum-1 | 2026-11-01T00:43:10.379549927Z [2026-11-01 00:43:10] INFO WEBrick::HTTPServer#start: pid=1 port=4567 gollum-1 | 2026-11-01T00:43:13.067861137Z 172.18.0.1 - - [01/Nov/2026:00:43:13 UTC] "GET /gollum/create/Home HTTP/1.1" 200 28973 gollum-1 | 2026-11-01T00:43:13.067966887Z - -> /gollum/create/Home gollum-1 | 2026-11-01T00:43:13.069020429Z 172.18.0.1 - - [01/Nov/2026:00:43:13 UTC] "GET / HTTP/1.1" 302 0 gollum-1 | 2026-11-01T00:43:13.069024012Z - -> / gollum-1 | 2026-11-01T00:43:13.083742637Z 172.18.0.1 - - [01/Nov/2026:00:43:13 UTC] "GET /gollum/create/Home HTTP/1.1" 200 28973 gollum-1 | 2026-11-01T00:43:13.084008679Z - -> /gollum/create/Home gollum-1 | 2026-11-01T00:43:13.087243429Z 172.18.0.1 - - [01/Nov/2026:00:43:13 UTC] "POST /gollum/create HTTP/1.1" 303 0 gollum-1 | 2026-11-01T00:43:13.087249970Z - -> /gollum/create gollum-1 | 2026-11-01T00:43:13.109172845Z 172.18.0.1 - - [01/Nov/2026:00:43:13 UTC] "GET /Home HTTP/1.1" 200 6417 gollum-1 | 2026-11-01T00:43:13.109186095Z - -> /Home gollum-1 | 2026-11-01T00:43:14.937269513Z 127.0.0.1 - - [01/Nov/2026:00:43:14 UTC] "GET / HTTP/1.1" 302 0 gollum-1 | 2026-11-01T00:43:14.937286263Z - -> / gollum-1 | 2026-11-01T00:43:14.950286096Z 127.0.0.1 - - [01/Nov/2026:00:43:14 UTC] "GET /Home HTTP/1.1" 200 6417 gollum-1 | 2026-11-01T00:43:14.950324180Z - -> /Home