Skip to content

Configuration

Yilan reads ~/.config/yilan/config.toml by default. Override with --config PATH or the YILAN_CONFIG environment variable.

All sections are optional — omitted settings use the defaults shown below.

[owners]

[owners]
accounts = ["your-username", "your-org"]
Key Type Default Description
accounts list of strings [] Codeberg usernames and org names to discover repos under

Yilan first tries the /users/{account}/repos endpoint; if that returns an error it retries with /orgs/{account}/repos. Non-fork, non-archived repos are included.

[repos]

[repos]
known_monorepos = ["my-monorepo"]
Key Type Default Description
known_monorepos list of strings [] Repo names to treat as monorepos without probing the packages/ directory

Yilan automatically detects monorepos by checking whether a packages/ directory exists. Use known_monorepos to skip that probe for repos you know are monorepos.

[intent_files]

[intent_files]
files = [
    "roadmap.md", "ROADMAP.md",
    "improvements.md",
    "security-audit.md", "Security-Audit.md", "Security_Audit.md",
    "TODO.md",
    "NOTES.md",
]
plain_bullet_files = ["security-audit.md", "security_audit.md"]
Key Type Default Description
files list of strings (see above) Filenames to scan in each repo for outstanding items
plain_bullet_files list of strings ["security-audit.md", "security_audit.md"] Files whose ## sections use plain bullets instead of checklists

Matching is case-sensitive for files (so both roadmap.md and ROADMAP.md are listed). Matching for plain_bullet_files is case-insensitive at runtime (fname.lower() is compared).

See Intent Files for the full parser rules.

[concepts]

[concepts]
items = ["my-idea", "project-alpha"]
dir = "../concepts"          # relative to the working directory
repo = ""                    # "owner/repo" — overrides dir when non-empty
Key Type Default Description
items list of strings [] Concept folder names to include on the board
dir string "../concepts" Local directory containing concept subdirectories
repo string "" Remote owner/repo to fetch concepts from; overrides dir

Each concept entry is a folder with a README.md or concept.md file. Yilan extracts the phase, status line, and outstanding items from that file.

[api]

[api]
base_url = "https://codeberg.org/api/v1"
max_retries = 5
request_timeout = 15
Key Type Default Description
base_url string "https://codeberg.org/api/v1" Codeberg API base URL
max_retries integer 5 Number of retry attempts on HTTP 429 (rate limit)
request_timeout integer 15 Per-request timeout in seconds

[cache]

[cache]
enabled = true
path = "~/.cache/yilan/cache.json"
Key Type Default Description
enabled boolean true Enable the SHA-based response cache
path string "~/.cache/yilan/cache.json" Path to the cache file (supports ~ expansion)

The cache stores the full RepoData for each repo keyed by the HEAD commit SHA. A repo is only re-fetched when its SHA changes. The snapshot (used by yilan diff) is stored in the same directory as the cache file.

[paths]

[paths]
output = "BOARD.md"
Key Type Default Description
output string "BOARD.md" Path to write the board (relative to the working directory)

Complete example

[owners]
accounts = ["alice", "alice-org"]

[repos]
known_monorepos = ["big-monorepo"]

[intent_files]
files = ["roadmap.md", "TODO.md", "NOTES.md"]

[concepts]
items = ["project-alpha", "idea-x"]
dir = "~/notes/concepts"

[cache]
path = "~/.cache/yilan/cache.json"

[paths]
output = "~/status/BOARD.md"