Open Source Documentation Browser

DimanDocs

A lightweight web-based documentation browser for markdown files.

Single binary, zero dependencies. Scan multiple directories, search across all documents, and present them in a clean, organized web interface.

terminal
$ ./dimandocs
Starting server on port 8090
Found 42 documents

$ xdg-open http://localhost:8090
Core Philosophy

Keep docs where the code lives

Stop scattering documentation across wikis, Docusaurus pages, and shared drives. The best documentation lives right next to the code it describes.

  • Feature folder = Feature docs

    Each module has its own README.md explaining what it does and how to use it.

  • Version controlled together

    Docs evolve with code. When you update a feature, the docs are right there to update too.

  • No context switching

    Developers find docs exactly where they expect them - in the codebase.

The old way
project/
src/
auth/
payments/
users/
docs somewhere in Docusaurus or WIKI...
The DimanDocs way
project/
src/
auth/ README.md
payments/ README.md
users/ README.md
DimanDocs aggregates them all!

Features

Everything you need to browse and search your markdown documentation.

📦

Single Binary

All templates embedded. No external files needed. Just copy the binary and config file anywhere.

📁

Multi-Directory Scanning

Monitor multiple directories simultaneously with flexible regex patterns for file matching.

🤖

MCP Server

Chat with your documentation using Claude via Model Context Protocol integration.

🔮

Semantic Search

Vector-based search using OpenAI, Voyage AI, or Ollama embeddings for intelligent results.

🎨

Clean Web Interface

Responsive grid layout with grouped display and full markdown rendering using Blackfriday.

Zero Runtime Dependencies

Pure Go application. No Node.js, no Docker, no external services required.

New Feature

MCP Server Mode

Chat with your documentation using Claude via Model Context Protocol. Enable semantic search with vector embeddings from multiple providers.

How It Works

DimanDocs can run as an MCP (Model Context Protocol) server, allowing Claude CLI or Claude Desktop to search and read your documentation directly. This enables natural language questions about your docs.

# Run as MCP server (for Claude CLI/Desktop)
./dimandocs --mcp dimandocs.json

# Run web server with embeddings (normal mode)
./dimandocs dimandocs.json

Embedding Providers

OpenAI

Best quality embeddings

text-embedding-3-large 3072d
text-embedding-3-small 1536d
Requires: OPENAI_API_KEY
Voyage AI

Optimized for code

voyage-3 1024d
voyage-code-3 1024d
voyage-3-lite 512d
Requires: VOYAGE_API_KEY
Ollama

Free, local, private

nomic-embed-text 768d
mxbai-embed-large 1024d
No API key required

Configuration

dimandocs.json

{
  "directories": [...],
  "embeddings": {
    "enabled": true,
    "provider": "ollama",
    "model": "nomic-embed-text"
  },
  "mcp": {
    "enabled": true,
    "transport": "stdio"
  }
}

No API key required

Claude CLI/Desktop config

{
  "mcpServers": {
    "dimandocs": {
      "command": "/path/to/dimandocs",
      "args": ["--mcp", "dimandocs.json"]
    }
  }
}

Available MCP Tools

search_docs Semantic search across all documentation
get_document Get full content of a specific document
list_documents List all available documents

Quick Start

Get up and running in under a minute.

1

Download the binary

# Download from GitHub Releases
curl -L -o dimandocs \
  https://github.com/adubovskoy/dimandocs/releases/latest/download/dimandocs-linux-amd64
chmod +x dimandocs
2

Create a configuration file

# Create dimandocs.json in your project root
cat << 'EOF' > dimandocs.json
{
  "directories": [
    {
      "path": "./docs",
      "name": "Documentation",
      "file_pattern": "\\.md$"
    }
  ],
  "port": "8090",
  "title": "My Docs"
}
EOF
3

Run DimanDocs

./dimandocs
# Starting server on port 8090
# Found 15 documents

# Open in browser
open http://localhost:8090

Build from Source

git clone https://github.com/adubovskoy/dimandocs.git
cd dimandocs
go build
./dimandocs

Configuration

Flexible JSON-based configuration for your documentation structure.

Example Configuration

{
  "directories": [
    {
      "path": "./docs/ADRs",
      "name": "Architecture Decision Records",
      "file_pattern": "\\.md$"
    },
    {
      "path": "./modules",
      "name": "Module Documentation",
      "file_pattern": "^(?i)(readme\\.md)$"
    }
  ],
  "port": "8090",
  "title": "My Documentation",
  "ignore_patterns": [
    ".*/node_modules/.*",
    ".*/\\.git/.*",
    ".*/vendor/.*"
  ]
}

Basic setup without semantic search

Configuration Options

directories

Array of directory configs with path, name, and file_pattern (regex).

port

Web server port. Default: "8090"

title

Application title shown in the UI.

ignore_patterns

Regex patterns for paths to skip (node_modules, .git, vendor, etc.)

File Pattern Examples

  • \\.md$ - All markdown files
  • ^(?i)(readme\\.md)$ - Only README.md
  • ^(?i)(readme|contributing)\\.md$ - README or CONTRIBUTING

How It Works

Simple, fast, and efficient document discovery.

1

Initialization

Loads configuration, compiles regex patterns, and prepares the embedded templates.

2

Directory Scanning

Recursively walks configured directories, applies ignore patterns, and matches files against your regex patterns.

3

Document Processing

Extracts titles from # Heading, overview paragraphs from ## Overview, and normalizes paths.

4

Web Interface

Serves a responsive web interface with grouped documents, full-text search, and rendered markdown using Blackfriday.

API Routes

Simple REST API for programmatic access.

GET / Index page with all documents grouped by directory
GET /doc/{path} View individual document with rendered markdown
GET /api/search?q={query} Search across all documents (JSON response)

Sponsored by

Dimando
DimanDocs DimanDocs
Lightweight Documentation Browser
GitHub | Written in Go

Released under the MIT License