What is TGit?
Ever started editing a file on your laptop, switched to your desktop, and modified the same file — only to discover a painful merge conflict later? TGit prevents this by showing you exactly which files are being worked on across all your machines in real time. Before you touch a file, a quick glance at the dashboard tells you if it's already checked out elsewhere, saving you from unnecessary conflicts.
Real-time Dashboard
See who's editing which files right now
Transparent
Works exactly like git - just use tgit instead
Team Isolation
Tenant-based isolation keeps your team's data separate
Who TGit Is For
TGit is useful in several common development setups:
Single user on one machine with many repos
If you jump between multiple repositories during the day, TGit helps you keep each repo tidy. You can quickly see branch and file activity, making it easier to decide what needs a commit, what can be cleaned up, and which test branches should be removed.
Single user across multiple machines
If you switch between a laptop, desktop, or other devices, TGit gives you the same visibility across all machines. You can see where work is in progress before making changes, reducing duplicate edits and helping avoid merge conflicts.
Engineering teams and managers
Teams can share a tenant to view live activity in one place. Developers get awareness of what others are touching, and managers get a lightweight view of current work across repositories without asking for constant status updates.
How TGit Works
TGit is a lightweight CLI wrapper for git that tracks file changes across your machines. It transparently passes all commands to git while sending activity updates to a central dashboard, giving you visibility into what files are being worked on across all your repositories.
To get started, simply install TGit and it will connect to tgit.app out of the box — no setup required. Once you're happy with how it works, you can self-host the API and dashboard to keep your data fully private and under your control.
Download
TGit requires .NET 9.0 runtime. Choose your platform below:
Windows
Windows 10/11 (x64)
winget install MarkJamesHoward.TGit dotnet tool install --global TGit Installation Guide Windows Installation
Install .NET 9.0 SDK
Download and install from dotnet.microsoft.com
Or use winget:
winget install Microsoft.DotNet.SDK.9 Install TGit
winget install MarkJamesHoward.TGit dotnet tool install --global TGit Set Your Team Tenant
Share the same tenant ID across your team to see each other's activity:
tgit --config tenant mycompany macOS Installation
Install TGit
dotnet tool install --global TGit Add to PATH
Add the .NET tools directory to your shell profile:
echo 'export PATH="$PATH:$HOME/.dotnet/tools"' >> ~/.zshrc
source ~/.zshrc Set Your Team Tenant
tgit --config tenant mycompany Linux Installation
Install .NET 9.0 SDK
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install -y dotnet-sdk-9.0 Fedora:
sudo dnf install dotnet-sdk-9.0 Install TGit
dotnet tool install --global TGit Add to PATH
echo 'export PATH="$PATH:$HOME/.dotnet/tools"' >> ~/.bashrc
source ~/.bashrc Set Your Team Tenant
tgit --config tenant mycompany Usage
Use tgit exactly like you would use git. All commands are passed through transparently:
Basic Commands
# Check status (tracked)
tgit status
# Stage files (tracked)
tgit add .
# Commit changes (tracked)
tgit commit -m "Your message"
# Push to remote
tgit push
# Pull latest
tgit pull All Git Commands Work
# Create branches
tgit checkout -b feature/new-feature
# View history
tgit log --oneline
# Stash changes
tgit stash
# Any git command works!
tgit [any git command] TGit Commands
These commands are handled by TGit directly (not passed to git):
# Show current configuration
tgit --config
# Show or set your tenant ID
tgit --config tenant
tgit --config tenant mycompany
# Delete all tracking data for your tenant
tgit --clear
# Show help
tgit --help Tracked Git Commands
The following git commands trigger activity updates to the dashboard:
All other git commands pass through transparently without tracking.
Git Alias
If you want to use git as normal and have it automatically use TGit, you can create a shell alias. This means every git command you run will be transparently handled by TGit.
Windows (PowerShell)
Add to your PowerShell profile (notepad $PROFILE):
Set-Alias -Name git -Value tgit macOS (zsh)
Add to ~/.zshrc:
alias git='tgit' Then reload:
source ~/.zshrc Linux (bash)
Add to ~/.bashrc:
alias git='tgit' Then reload:
source ~/.bashrc To remove the alias, simply delete the line from your profile and restart your terminal.
Tenants
TGit uses tenant-based isolation so different teams can track activity independently. Each TGit installation generates a unique tenant ID on first run.
Set a Shared Tenant
Everyone on your team should use the same tenant ID:
tgit --config tenant mycompany View the Dashboard
Go to tgit.app and enter your tenant ID to see your team's activity.
Clear Data
To delete all tracking data for your tenant:
tgit --clear You can also override the tenant via environment variable:
export TGIT_TENANT=mycompany Configuration
TGit can be configured using environment variables or the built-in config command:
| Variable | Description | Default |
|---|---|---|
TGIT_CLI_API_URL | Base URL of the API (the CLI appends /api/GitActivity) | https://tgit-api.azurewebsites.net |
TGIT_TENANT | Override tenant ID (takes precedence over config file) | Auto-generated |
TGIT_DEBUG | Set to 1 to enable debug output | Not set |
Configuration is stored in ~/.tgit/config.json. Use tgit --config to view or modify settings.
Dashboard
The hosted dashboard is available at tgit.app. Enter your tenant ID to view your team's real-time activity.
The dashboard polls the API every 2 seconds and shows:
- Active users and their current branches
- Modified files per repository
- Time since last activity
Self-hosting the API
The API is where all activity data is stored. To keep your data fully private, self-host the API:
Clone and Run the API
git clone https://github.com/MarkJamesHoward/TGit.git
cd TGit/api
dotnet run Point TGit to your API
Set the TGIT_CLI_API_URL environment variable on each machine:
export TGIT_CLI_API_URL=https://your-api-server:5000 Self-hosting the Dashboard
The dashboard is a static site that connects to the API to display activity:
Build the Dashboard
cd TGit/dashboard
npm install
PUBLIC_TGIT_DASHBOARD_API_URL=https://your-api-server:5000 npm run build Deploy
The built output in dist/ can be hosted on any static file server or CDN.
API Endpoints
The TGit API is an ASP.NET Core Web API. Swagger documentation is available at tgit-api.azurewebsites.net/swagger.
| Method | Endpoint | Description |
|---|---|---|
POST | /api/GitActivity | Record git activity |
DELETE | /api/GitActivity?tenant=xxx | Delete all data for a tenant |
GET | /api/Users?tenant=xxx | Get all users for a tenant |
GET | /api/Users?tenant=xxx&active=true | Get active users only |