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.

LAPTOP-JANE
$ tgit add .
$ tgit commit -m "Add login"
DESKTOP-JANE
PS C:\> tgit add .
PS C:\> tgit commit -m "Fix endpoint"
activity sent
tgit.app
LAPTOP-JANE JD Jane Doe main
staged src/api.cs
DESKTOP-JANE JD Jane Doe main
staged src/api.cs
📊

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:

1

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.

2

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.

3

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
or
dotnet tool install --global TGit Installation Guide

macOS

macOS 11+ (Intel & Apple Silicon)

dotnet tool install --global TGit Installation Guide

Linux

Ubuntu, Debian, Fedora, etc.

dotnet tool install --global TGit Installation Guide

Windows Installation

1

Install .NET 9.0 SDK

Download and install from dotnet.microsoft.com

Or use winget:

winget install Microsoft.DotNet.SDK.9
2

Install TGit

winget install MarkJamesHoward.TGit
or
dotnet tool install --global TGit
3

Set Your Team Tenant

Share the same tenant ID across your team to see each other's activity:

tgit --config tenant mycompany

macOS Installation

1

Install .NET 9.0 SDK

Using Homebrew:

brew install dotnet-sdk

Or download from dotnet.microsoft.com

2

Install TGit

dotnet tool install --global TGit
3

Add to PATH

Add the .NET tools directory to your shell profile:

echo 'export PATH="$PATH:$HOME/.dotnet/tools"' >> ~/.zshrc
source ~/.zshrc
4

Set Your Team Tenant

tgit --config tenant mycompany

Linux Installation

1

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

Or see Microsoft's Linux installation guide

2

Install TGit

dotnet tool install --global TGit
3

Add to PATH

echo 'export PATH="$PATH:$HOME/.dotnet/tools"' >> ~/.bashrc
source ~/.bashrc
4

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:

status add commit restore checkout switch reset stash merge rebase cherry-pick revert pull push fetch clone

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.

1

Set a Shared Tenant

Everyone on your team should use the same tenant ID:

tgit --config tenant mycompany
2

View the Dashboard

Go to tgit.app and enter your tenant ID to see your team's activity.

3

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:

1

Clone and Run the API

git clone https://github.com/MarkJamesHoward/TGit.git
cd TGit/api
dotnet run
2

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:

1

Build the Dashboard

cd TGit/dashboard
npm install
PUBLIC_TGIT_DASHBOARD_API_URL=https://your-api-server:5000 npm run build
2

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