Skip to main content

How Tracer Uses Git

Tracer stores issues in JSONL (JSON Lines) format at .trace/issues.jsonl. This file is:
  • Human-readable - each line is a JSON object
  • Git-friendly - changes are easy to merge
  • Portable - works across any machine with Git
Tracer automatically syncs between its SQLite database and the JSONL file, giving you the best of both worlds:
  • Fast queries via SQLite
  • Git-friendly storage for syncing

Automatic Export

Every time you make a change, Tracer updates .trace/issues.jsonl:
No manual export needed - it just works.
The .trace/ directory is designed to be committed to Git. Add it to your repository to share issues with your team.

Automatic Import

When you pull changes from Git, Tracer detects updates automatically:
Tracer checks the file hash and only imports when changes are detected.

Multi-Machine Workflow

Use Tracer seamlessly across multiple machines:
1

Machine A: Create issues

2

Machine B: Pull and continue

3

Machine B: Push progress

4

Machine A: Sync latest

Handling Merge Conflicts

If two machines modify the same issue simultaneously, Git may create a merge conflict in .trace/issues.jsonl.

Resolving Conflicts

1

Git shows conflict

2

Resolve the conflict

Open .trace/issues.jsonl and resolve the conflict manually:
Usually keep both changes (they’re on separate lines):
For the same issue ID, keep the most recent version (check timestamps).
3

Import the resolved file

JSONL format makes conflicts rare - each issue is on its own line, so most changes merge automatically.

Manual Export & Import

While Tracer handles sync automatically, you can manually export and import if needed.

Export Issues

Export all issues to JSONL:
Use manual export to create backups or share filtered issue sets.

Import Issues

Import issues from JSONL:
Import behavior:
  • New issues - Created in the database
  • Existing issues - Updated with new data (unless --skip-existing)
  • Dependencies - Imported and created automatically

JSONL Format

Each line in .trace/issues.jsonl is a complete issue object:
This format is:
  • One issue per line
  • Valid JSON on each line
  • Includes dependencies inline
  • Sortable and diffable
Don’t edit .trace/issues.jsonl manually unless you know what you’re doing. Use tracer commands instead.

Multi-Agent Collaboration

Multiple agents can work on the same project by syncing via Git:
Coordinate work to avoid conflicts - use tracer show to check who’s working on what before starting.

Git Best Practices

Commit .trace/ to your repository - this makes issues available to everyone on your team.
Pull before starting work - always git pull to get the latest issues before running tracer ready.
Commit frequently - commit after completing or updating issues so others can see your progress.
Use meaningful commit messages - reference issue IDs in commits:
Don’t force push - this can cause lost issue data. Use normal merge workflows.

Backup and Recovery

Create backups of your issues:
Your Git history is also a backup - you can always check out old versions:

Advanced: Custom Sync Scripts

Automate syncing with Git hooks or scripts:

Troubleshooting

Make sure .trace/issues.jsonl is committed:
Trigger import manually:
Or run any tracer command (import happens automatically):
Check Git history:
Restore from backup or previous commit if needed.