Default Configuration Options for Litho: A Complete Guide to deepwiki-rs Settings

Litho operates with sensible defaults defined in src/config.rs, allowing immediate use without a litho.toml file by automatically configuring project paths, LLM parameters, caching behavior, and file filtering rules.

When working with the sopaco/deepwiki-rs repository, understanding the default configuration options for Litho is essential for effective documentation generation. The tool centers around a Config struct that implements the Default trait, supplying out-of-the-box values for every configurable parameter. These defaults activate automatically when users run Litho without providing a custom litho.toml configuration file.

Core Configuration Defaults

The primary Config struct in src/config.rs defines the following default values:

  • project_name: None (Litho infers the name from the repository via get_project_name)
  • project_path: "." (current working directory)
  • output_path: "./litho.docs" (generated documentation directory)
  • internal_path: "./.litho" (hidden working directory for intermediate files)
  • target_language: English (TargetLanguage::English) as defined in src/i18n.rs
  • analyze_dependencies: true
  • identify_components: true
  • max_depth: 10 (maximum recursion depth for codebase traversal)
  • core_component_percentage: 20.0 (percentage of files considered core components)
  • max_file_size: 64 KB (files larger than this are skipped)
  • include_tests: false
  • include_hidden: false

File Filtering Defaults

Litho excludes specific directories, files, and extensions by default:

Excluded directories (excluded_dirs):

[".litho", "litho.docs", "target", "node_modules", ".git", 
 "build", "dist", "venv", ".svelte-kit", "__pycache__", 
 "__tests__", "__mocks__", "__fixtures__"]

Excluded files (excluded_files):

["litho.toml", "*.litho", "*.log", "*.tmp", "*.cache", 
 "bun.lock", "package-lock.json", "yarn.lock", "pnpm-lock.yaml", 
 "Cargo.lock", ".gitignore", "*.tpl", "*.md", "*.txt", ".env"]

Excluded extensions (excluded_extensions):

["jpg", "jpeg", "png", "gif", "bmp", "ico", "mp3", "mp4", 
 "avi", "pdf", "zip", "tar", "exe", "dll", "so", "archive"]

LLM Configuration Defaults

The LLMConfig struct, also defined in src/config.rs, provides these defaults:

  • provider: LLMProvider::default() (typically Ollama or ModelScope)
  • api_key: Reads from LITHO_LLM_API_KEY environment variable, falls back to empty string
  • api_base_url: "https://api-inference.modelscope.cn/v1"
  • model_efficient: "ZhipuAI/GLM-5" (used for routine inference)
  • model_powerful: "Qwen/Qwen3-Next-80B-A3B-Instruct" (used for complex tasks or fallback)
  • max_tokens: 131072
  • temperature: 0.1
  • retry_attempts: 3
  • retry_delay_ms: 5000
  • timeout_seconds: 300
  • disable_preset_tools: false
  • max_parallels: 3 (parallel LLM calls)

Cache and Chunking Defaults

Cache Configuration

The CacheConfig struct controls intermediate storage:

  • enabled: true
  • cache_dir: ".litho/cache"
  • expire_hours: 8760 (approximately one year)

Chunking Configuration

For processing large documentation files, ChunkingConfig provides:

  • enabled: true
  • max_chunk_size: 8000 characters (approximately 2000 tokens)
  • chunk_overlap: 200 characters
  • strategy: "semantic" (section-based chunking)
  • min_size_for_chunking: 10000 characters

How to Use Default Configuration in Code

You can instantiate the default configuration programmatically using the Default trait implementation:

use deepwiki_rs::config::Config;

// Create a configuration with all defaults
let default_cfg = Config::default();

println!("Output directory: {}", default_cfg.output_path.display());
println!("LLM efficient model: {}", default_cfg.llm.model_efficient);
println!("Cache enabled: {}", default_cfg.cache.enabled);

This approach yields a fully populated configuration ready for immediate use without requiring a litho.toml file on disk.

Summary

  • Litho requires no configuration file to run, using sensible defaults defined in src/config.rs for all parameters.
  • File filtering automatically excludes common build directories, lock files, and binary formats to focus analysis on source code.
  • LLM defaults target Chinese model providers (ModelScope, ZhipuAI, Qwen) with conservative retry and timeout settings.
  • Cache persistence lasts one year by default, storing intermediate data in .litho/cache.
  • Chunking processes files larger than 10,000 characters using semantic section-based splitting with 8,000 character chunks.

Frequently Asked Questions

What happens if I don't provide a litho.toml file?

Litho automatically uses the Default implementation of the Config struct defined in src/config.rs. Every setting—from output paths to LLM parameters—receives a sensible default value, allowing the tool to execute immediately without user configuration.

Which LLM models does Litho use by default?

According to the LLMConfig defaults in src/config.rs, Litho uses "ZhipuAI/GLM-5" for efficient routine inference and "Qwen/Qwen3-Next-80B-A3B-Instruct" for complex tasks or fallback scenarios. Both default to the ModelScope API endpoint at https://api-inference.modelscope.cn/v1.

How long does the cache persist by default?

The CacheConfig struct sets expire_hours to 8760 by default, which equals approximately one year. Cached data stores in the .litho/cache directory relative to the project root, and caching remains enabled (enabled: true) unless explicitly disabled.

Can I override specific defaults without creating a full config file?

While the source code in src/config.rs provides the Default trait for initialization, runtime overrides typically require a litho.toml file or environment variables such as LITHO_LLM_API_KEY. The codebase does not currently expose command-line flags for individual configuration parameters beyond the standard CLI interface defined in src/cli.rs.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →