Configuration
ProGit is configured through a KDL file at .project/config.kdl in your project root. KDL is a document language — think TOML but more readable for nested data.
File location
Section titled “File location”my-project/├── .project/│ ├── config.kdl ← main config (commit this)│ └── issues/└── .progit/ ← local cache (gitignore this)Minimal config
Section titled “Minimal config”ProGit works without any config file — everything has sensible defaults. The only reason you need config.kdl is for forge sync.
sync { provider "gitlab" url "https://gitlab.com" owner "my-org" repo "my-project"}theme "dark" // "dark" | "light"Change from inside the TUI: press : → type theme light → Enter.
Sync configuration
Section titled “Sync configuration”GitLab
Section titled “GitLab”sync { provider "gitlab" url "https://gitlab.com" owner "my-org" repo "my-project"}Forgejo / Gitea
Section titled “Forgejo / Gitea”sync { provider "forgejo" url "https://git.example.com" owner "my-org" repo "my-project"}Self-hosted GitLab
Section titled “Self-hosted GitLab”sync { provider "gitlab" url "https://gitlab.mycompany.com" owner "team" repo "backend"}Tokens are not stored in config — use environment variables:
export GITLAB_TOKEN="glpat-xxxx"export FORGEJO_TOKEN="your-token"export PROGIT_TOKEN="fallback-token" # tried first, works for any providerMulti-repo setup
Section titled “Multi-repo setup”Manage issues across multiple repos from one ProGit instance:
repo "frontend" { path "../frontend" sync { provider "gitlab" url "https://gitlab.com" owner "my-org" repo "frontend" }}
repo "backend" { path "../backend" sync { provider "gitlab" url "https://gitlab.com" owner "my-org" repo "backend" }}Plugin configuration
Section titled “Plugin configuration”plugins { registry-url "https://git.sovereign-society.org/ProGit/progit-plugins"}Styles
Section titled “Styles”Override built-in component colours:
style "issue-title" { fg "cyan" modifiers "bold"}
style "status-done" { fg "green" modifiers "dim"}
style "kanban-header" { fg "yellow" modifiers "bold" "underlined"}Supported modifiers: bold, italic, dim, underlined, crossed-out.
What ProGit ignores
Section titled “What ProGit ignores”ProGit intentionally does not store in config:
- Auth tokens (use env vars)
- User identity (read from
git config) - Editor preferences (reads
$EDITOR)
Full example
Section titled “Full example”theme "dark"
sync { provider "forgejo" url "https://git.sovereign-society.org" owner "ProGit" repo "progit"}
plugins { registry-url "https://git.sovereign-society.org/ProGit/progit-plugins"}
style "kanban-header" { fg "cyan" modifiers "bold"}