Config

Dex can be configured via a dex.toml file in your project root or home directory.

Storage

Dex supports two storage modes:

Mode Location Best For
in-repo (default) .dex/ at git root Team projects, version-controlled tasks
centralized ~/.dex/projects/<key>/ Personal tasks, cross-project views

In-Repo

Tasks stored in .dex/tasks.jsonl in your git repository (one task per line). No configuration needed. Old formats are auto-migrated.

When to commit .dex/:

When to gitignore .dex/:

Centralized

Store tasks in a project-specific folder under ~/.dex/projects/:

dex.toml
[storage]
engine = "file"

[storage.file]
mode = "centralized"

Path Overrides

Override the storage path via environment variable or CLI flag:

Terminal
# Environment variable
export DEX_STORAGE_PATH=/custom/path/.dex

# CLI flag
dex list --storage-path /custom/path/.dex

GitHub Sync

Sync tasks to GitHub Issues. Owner/repo are auto-detected from your git remote.

.dex/config.toml
[sync.github]
enabled = true

Authentication: Uses gh CLI auth by default. Alternatively, set GITHUB_TOKEN environment variable.

Behavior:

Use dex sync to push tasks, or dex import <issue-url> to pull a GitHub Issue into dex.

Auto-Sync

By default, tasks sync to GitHub automatically whenever you create, update, or complete a task. You can customize this behavior:

.dex/config.toml
[sync.github]
enabled = true

[sync.github.auto]
# Sync immediately on task mutations (default: true)
on_change = true

# If on_change=false, sync only when last sync exceeds max_age
# Format: "30m", "1h", "1d"
max_age = "1h"
on_change
Sync immediately after task create/update/complete. Default: true
max_age
If on_change=false, sync on mutation only when last sync exceeds this duration. Default: none

Common configurations:

Shortcut Sync

Sync tasks to Shortcut Stories. Workspace is auto-detected from your API token.

.dex/config.toml
[sync.shortcut]
enabled = true
team = "Engineering"

Authentication: Set SHORTCUT_API_TOKEN environment variable.

Behavior:

Configuration Options

team
Required. Team name for story assignment (determines workflow)
workspace
Workspace slug (auto-detected from token)
workflow
Workflow ID (defaults to team's default workflow)
label
Label to apply to all synced stories

Auto-Sync

Auto-sync settings work the same as GitHub sync. See GitHub auto-sync settings for configuration options.

.dex/config.toml
[sync.shortcut]
enabled = true
team = "Engineering"

[sync.shortcut.auto]
on_change = true

Environment Variables

DEX_STORAGE_PATH
Override storage directory
GITHUB_TOKEN
GitHub API token (optional if gh CLI is authenticated)
SHORTCUT_API_TOKEN
Shortcut API token for sync