Skip to content

Configuration

ProGit is configured through a config.toml file in your project’s .project/ directory.

my-project/
├── .git/
├── .project/
│ ├── config.toml # Main configuration
│ ├── issues/
│ ├── sprints/
│ └── kanban/
└── src/
.project/config.toml
[project]
name = "my-project"
description = "A brief description of the project"
version = "0.1.0"
[git]
# Auto-fetch from remote on startup
auto_fetch = true
# Default branch for new work
default_branch = "main"
# Enable virtual branches
virtual_branches = true
[ui]
# Theme: "dark", "light", or "system"
theme = "dark"
# Show relative or absolute dates
date_format = "relative"
# Enable mouse support
mouse = true
# Vim-style keybindings
vim_mode = true
[keybindings]
# Override default keybindings
quit = "q"
refresh = "r"
new_issue = "n"
search = "/"
[issues]
# Default issue template
template = """
## Description
## Acceptance Criteria
- [ ]
## Notes
"""
# Auto-label new issues
default_labels = ["triage"]
[kanban]
# Board columns
columns = ["Backlog", "Todo", "In Progress", "Review", "Done"]
# WIP limits per column
wip_limits = { "In Progress" = 3, "Review" = 2 }
[sprints]
# Sprint duration in weeks
duration_weeks = 2
# Velocity tracking
track_velocity = true
# Auto-close completed issues
auto_close = false
[ai]
# Ollama endpoint
ollama_url = "http://localhost:11434"
# Default model
model = "codellama"
# Enable AI suggestions
suggestions = true

Virtual branches let you work on multiple features simultaneously without constantly switching git branches.

[git.virtual_branches]
# Enable virtual branches
enabled = true
# Maximum concurrent virtual branches
max_concurrent = 5
# Auto-stash on branch switch
auto_stash = true

Configure git hooks through ProGit:

[git.hooks]
# Run tests before commit
pre-commit = ["cargo test", "cargo clippy"]
# Update issues on commit
post-commit = "progit issue link"
# Push to remote after successful merge
post-merge = "git push origin main"

ProGit comes with built-in themes:

[ui]
theme = "progit-dark" # or "progit-light", "high-contrast"

Create custom themes:

[ui.custom_theme]
background = "#0a0a0c"
foreground = "#e8e6e3"
accent = "#0091b8"
success = "#39ff14"
warning = "#ff9f1c"
error = "#ff006e"
border = "#2a2a32"

Customize the TUI layout:

[ui.layout]
# Show/hide panels
show_git_panel = true
show_issues_panel = true
show_kanban_panel = true
# Panel sizes (percentage)
sidebar_width = 25
preview_height = 40
[plugins]
# Auto-discover plugins in .project/plugins/
auto_discover = true
# Enabled plugins
enabled = ["gitlab-sync", "ai-assistant"]
[plugins.gitlab-sync]
# Plugin-specific settings
gitlab_url = "https://gitlab.com"
project_id = "12345"
# Sync settings
sync_issues = true
sync_mrs = true
webhook_secret = "${GITLAB_WEBHOOK_SECRET}"
[plugins.ai-assistant]
model = "codellama:7b-code"
temperature = 0.7
max_tokens = 2048

Use environment variables in config:

[integrations.gitlab]
token = "${GITLAB_TOKEN}"
[integrations.slack]
webhook = "${SLACK_WEBHOOK_URL}"
[ai]
api_key = "${OPENAI_API_KEY}"

ProGit will substitute these at runtime from:

  1. Shell environment
  2. .env file in project root
  3. .project/.env file

User-specific settings go in ~/.config/progit/config.toml:

[user]
name = "Jane Doe"
email = "jane@example.com"
[defaults]
# Default project settings
theme = "dark"
vim_mode = true
ollama_url = "http://localhost:11434"
[aliases]
# Command shortcuts
s = "sprint"
i = "issue"
k = "kanban"

Validate your configuration:

Terminal window
progit config check

This will:

  • Check TOML syntax
  • Verify paths exist
  • Validate plugin configurations
  • Warn about deprecated options

View the default configuration:

Terminal window
progit config defaults

This outputs the built-in defaults, which you can use as a starting point.