Configuration Reference

Complete reference of all bengal.toml options

5 min read 1096 words

All options forbengal.toml. Every option has a sensible default — most sites only need [site] and [build].

[site]

Site metadata used in templates, feeds, and SEO.

[site]
title = "My Site"              # Required
baseurl = "https://example.com"
description = "Site description"
author = "Author Name"
language = "en"

[build]

Controls the build pipeline, caching, and parallelism.

[build]
output_dir = "public"          # Where built files go
content_dir = "content"        # Where content lives
assets_dir = "assets"          # Static assets directory
templates_dir = "templates"    # Custom template overrides
parallel = true                # Enable parallel processing
incremental = true             # Enable incremental builds
max_workers = 8                # Limit parallel workers (default: auto-detect)
pretty_urls = true             # /page/ instead of /page.html
fast_mode = false              # Skip HTML formatting for speed
strict_mode = false            # Fail on warnings
debug = false                  # Extra logging
minify_html = false            # Minify HTML output
validate_build = true          # Run post-build validation
validate_templates = false     # Validate template context
validate_links = false         # Check internal links
transform_links = true         # Transform internal links to pretty URLs
cache_templates = true         # Cache compiled templates
fast_writes = false            # Skip write for unchanged files
stable_section_references = false  # Deterministic section IDs
min_page_size = 0              # Minimum page count for parallel
track_dependency_ordering = false  # Track build dependency order
parallel_graph = false         # Parallel graph analysis
parallel_autodoc = false       # Parallel autodoc extraction

[dev]

Development server settings.

[dev]
port = 8000                    # Server port
live_reload = true             # Enable live reload via SSE
cache_templates = false        # Cache templates in dev (default: off for hot reload)
watch_backend = true           # Watch backend files for changes

[theme]

Theme selection and appearance.

[theme]
name = "default"
default_appearance = "system"  # "light", "dark", or "system"
default_palette = ""
show_reading_time = true
show_author = true
show_prev_next = true
show_children_default = false
show_excerpts_default = false
max_tags_display = 10
popular_tags_count = 20
features = []                  # Feature flags: "content.math", etc.

[theme.syntax_highlighting]
theme = "auto"                 # Syntax theme name
css_class_style = "semantic"   # "semantic" or "pygments"

[content]

Content processing defaults.

[content]
default_type = "docs"
excerpt_length = 200
excerpt_words = 50
summary_length = 300
reading_speed = 200            # Words per minute
related_count = 5
related_threshold = 0.1
toc_depth = 3
toc_min_headings = 2
toc_style = "nested"           # "nested" or "flat"
sort_pages_by = "weight"       # "weight", "date", "title", "modified"
sort_order = "asc"
strict_contracts = false

[pagination]

[pagination]
per_page = 10

Client-side search with Lunr. Can betrue/falseor a table.

[search]
enabled = true

[search.lunr]
prebuilt = false
min_query_length = 2
max_results = 10
preload = "smart"              # "immediate", "smart", "lazy"

[search.ui]
modal = true
recent_searches = 5
placeholder = "Search..."

[search.analytics]
enabled = false
event_endpoint = ""

[assets]

Asset processing pipeline.

[assets]
minify = false
optimize = false
fingerprint = false
pipeline = true

[html_output]

HTML formatting for built pages.

[html_output]
mode = "pretty"                # "minify", "pretty", "raw"
remove_comments = false
collapse_blank_lines = true

[static]

Static file handling.

[static]
enabled = true
dir = "static"

[features]

Toggle site-wide features.

[features]
rss = true
sitemap = true
search = true
json = false
llm_txt = false
syntax_highlighting = true

[health_check]

Build and content validation. Can betrue/falseor a table.

[health_check]
enabled = true
verbose = false
strict_mode = false
orphan_threshold = 5
super_hub_threshold = 50
isolated_threshold = 0
lightly_linked_threshold = 3
build_validators = []          # Validators run during build
full_validators = []           # Validators for full check
ci_validators = []             # Validators for CI

[health_check.connectivity_thresholds]
well_connected = 0.7
adequately_linked = 0.4
lightly_linked = 0.1

[health_check.link_weights]
explicit = 1.0
menu = 0.8
taxonomy = 0.6
related = 0.4
topical = 0.3
sequential = 0.2

[i18n]

Internationalization settings.

[i18n]
strategy = ""                  # null or strategy name
default_language = "en"
default_in_subdir = false
content_structure = ""
fallback_to_default = true
gettext_domain = "messages"

[[i18n.languages]]
code = "en"
name = "English"
weight = 1

[[i18n.languages]]
code = "es"
name = "Español"
weight = 2

[output_formats]

Control which output formats are generated. Can betrue/falseor a table.

[output_formats]
enabled = true
per_page = ["html"]            # Per-page formats
site_wide = ["rss", "sitemap"] # Site-wide formats

[output_formats.options]
excerpt_length = 200
json_indent = 2
llm_separator_width = 80
include_full_content_in_index = false
include_chunks = false
exclude_sections = []
exclude_patterns = []

[content_signals]

AI and crawler content policies.

[content_signals]
enabled = false
search = true
ai_input = true                # Allow AI RAG/grounding
ai_train = false               # Allow AI training
include_sitemap = true

[content_signals.user_agents]
"*" = ""                       # Per-agent policies

[structured_data]

Schema.org JSON-LD generation.

[structured_data]
article = true

[markdown]

Markdown parser configuration.

[markdown]
parser = "patitas"             # "patitas" or "mistune"
toc_depth = "2-4"

[markdown.ast_cache]
persist_tokens = false

[graph]

Knowledge graph analysis. Can betrue/falseor a table.

[graph]
enabled = false
path = ".bengal/graph"

[external_refs]

Cross-project documentation links. Can betrue/falseor a table.

[external_refs]
enabled = false
export_index = false
cache_dir = ".bengal/refs"
default_cache_days = 7
templates = {}

[[external_refs.indexes]]
name = "other-project"
url = "https://example.com/refs.json"
cache_days = 7

Hover card configuration. Can betrue/falseor a table.

[link_previews]
enabled = false
hover_delay = 300
hide_delay = 200
show_section = true
show_reading_time = true
show_word_count = false
show_date = false
show_tags = false
max_tags = 3
include_selectors = []
exclude_selectors = []
allowed_hosts = []
allowed_schemes = ["https"]
host_failure_threshold = 3
show_dead_links = false

[document_application]

Modern browser features: view transitions, speculation rules, interactive elements.

[document_application]
enabled = false

[document_application.navigation]
view_transitions = false
transition_style = "crossfade" # "crossfade", "fade-slide", "slide", "none"
scroll_restoration = true

[document_application.speculation]
enabled = false
auto_generate = false
exclude_patterns = []

[document_application.speculation.prerender]
eagerness = "moderate"         # "conservative", "moderate", "eager"
patterns = []

[document_application.speculation.prefetch]
eagerness = "moderate"
patterns = []

[document_application.interactivity]
tabs = "css_state_machine"
accordions = "native_details"
modals = "native_dialog"
tooltips = "popover"
dropdowns = "popover"
code_copy = "enhanced"

[connect_to_ide]

Cursor IDE integration.

[connect_to_ide]
enabled = false
mcp_url = ""
server_name = ""

[taxonomies]

Define taxonomy term→field mappings.

[taxonomies]
tags = "tags"
categories = "categories"

[data]

Data file directory.

[data]
dir = "data"

[autodoc.python]

Python API documentation extraction.

[autodoc.python]
enabled = false
source_dirs = []
output_prefix = "api"

See Also