Configuration
Config File
The configuration file is cvx.toml in your repo root (created by cvx init).
[github]
repo = "owner/repo"
project = "owner/number"
[agent]
default = "claude" # Default CLI agent for interactive mode
[cv]
source = "src/cv.toml" # CV data source (toml)
output = "out/cv.pdf" # Generated CV output
schema = "schema/schema.json"
[letter]
source = "src/letter.toml" # Letter data source (toml)
output = "out/letter.pdf" # Generated letter output
schema = "schema/schema.json"
[paths]
reference = "reference/" # Reference materials for AI
[schema]
job_ad = ".github/ISSUE_TEMPLATE/job-ad-schema.yaml"
Settings Reference
GitHub Section
| Key | Description | Default |
|---|---|---|
repo |
GitHub repository (owner/repo) | Auto-detected |
project |
GitHub Project (owner/number) | - |
Agent Section
| Key | Description | Default |
|---|---|---|
default |
Default CLI agent | claude |
CV & Letter Sections
| Key | Description | Default |
|---|---|---|
source |
Data file path (toml) | src/cv.toml |
output |
Generated PDF path | out/cv.pdf |
schema |
JSON schema for validation | schema/schema.json |
Paths Section
| Key | Description | Default |
|---|---|---|
reference |
Reference materials folder | reference/ |
Schema Section
| Key | Description | Default |
|---|---|---|
job_ad |
Job ad extraction schema | .github/ISSUE_TEMPLATE/job-ad-schema.yaml |
CLI Agents
Available agents for interactive mode:
| Agent | Notes |
|---|---|
claude |
Claude CLI |
gemini |
Gemini CLI |
API Models
Available models for agent mode (cvx build -m):
| Short Name | Provider API Name | Required Key |
|---|---|---|
sonnet-4 |
claude-sonnet-4 | ANTHROPIC_API_KEY |
sonnet-4-5 |
claude-sonnet-4-5 | ANTHROPIC_API_KEY |
opus-4 |
claude-opus-4 | ANTHROPIC_API_KEY |
opus-4-5 |
claude-opus-4-5 | ANTHROPIC_API_KEY |
flash-2-5 |
gemini-2.5-flash | GEMINI_API_KEY |
pro-2-5 |
gemini-2.5-pro | GEMINI_API_KEY |
flash-3 |
gemini-3-flash-preview | GEMINI_API_KEY |
pro-3 |
gemini-3-pro-preview | GEMINI_API_KEY |
gpt-oss-120b |
openai/gpt-oss-120b | GROQ_API_KEY |
qwen3-32b |
qwen/qwen3-32b | GROQ_API_KEY |
Environment Variables
API Keys
| Variable | Description |
|---|---|
ANTHROPIC_API_KEY |
For Claude API models |
GEMINI_API_KEY |
For Gemini API models |
GROQ_API_KEY |
For Groq-hosted models |
OPENAI_API_KEY |
For OpenAI models |
Agent
| Variable | Description |
|---|---|
AI_MODEL |
Primary model (set by cvx automatically) |
AI_FALLBACK_MODEL |
Fallback model (default: gemini-2.5-flash) |
Environment File Loading
cvx loads .env files with the following priority:
--env-fileflag (highest)- Current directory
.env - Git worktree main repo
.env - Parent directories
.env ~/.config/cvx/env(lowest)
This enables API key management across git worktrees.
GitHub Project
cvx creates a project with these fields:
Fields:
- Application Status (single-select)
- Company (text)
- Deadline (date)
- AppliedDate (date)
Statuses:
- To be Applied
- Applied
- Interview
- Offered
- Accepted
- Gone
- Let Go
Directory Structure
cvx.toml # User config (editable)
.cvx/
cache.yaml # Internal IDs (auto-managed)
workflows/ # Workflow prompts (customizable)
sessions/ # CLI session files
matches/ # Match analysis outputs
Customizing Workflows
AI prompts in .cvx/workflows/ can be edited:
| File | Command | Purpose |
|---|---|---|
add.md |
cvx add |
Job extraction prompt |
advise.md |
cvx advise |
Match analysis prompt |
build.md |
cvx build |
CV tailoring prompt |
Template variables:
{{.CVYAMLPath}}- Path to CV data file (legacy name, works with TOML){{.ReferencePath}}- Path to reference directory
Reset to defaults: delete cvx.toml and run cvx init